使用GEOIP进行用户IP的分析

MaxMind公司的GeoIP数据库可以根据用户IP精确的获得用户地理位置信息,火狐就是使用它来统计下载用户所在区域的。

主要包括两个以键值方式存储的数据文件,Geo Country和Geo IP,如果只关注国家信息,可以使用小得多的Geo Country库。

这两个库都分为商业的和免费的两个版本,精确率都在99.5%以上,对于大多数的应用,免费的版本已经足够了。

GEOIP的客户端包括各种语言:

C Library Perl Module PHP Module Apache Module (mod_geoip) Java Class Python Class C# Class Ruby Module MS COM Object VB.NET Pascal Javascript

下面以Perl为例,介绍一下使用方法。

首先下载GeoLiteCountry或GeoLiteCity的数据文件(http://www.maxmind.com/app/geolitecountryhttp://www.maxmind.com/app/geolitecity)。GeoLiteCountry的文件大小约为1M,而GeoLiteCountry的大小约为43M。

Perl的GeoIP模块主要是两个Geo::IP和Geo::IP::PurePerl,前面一个调用C语言实现,效率比后面一个纯Perl实现的模块高一些。

下面是分析一个IP国家信息的代码:

use Geo::IP; my $gi = Geo::IP->new(GEOIP_STANDARD); my $country = $gi->country_code_by_addr("24.24.24.24") || 'no record'; print "country: $country\n";

输出为:

country: US

下面是分析一个IP详细信息的代码:

use Geo::IP; my $gi = Geo::IP->open( "/usr/local/share/GeoIP/GeoLiteCity.dat", GEOIP_STANDARD ); my $r = $gi->record_by_name("134.153.33.202") || 'no record'; print join( "--", $r->country_code, $r->country_code3, $r->region, $r->region_name, $r->city, $r->postal_code, $r->latitude, $r->longitude );

输出为:

CA--CAN--NL--Newfoundland-Saint John's----47.5500---52.6667

可以看到此用户来自加拿大的纽芬兰岛的圣约翰区。

针对批量的用户数据统计,我们可以分析出重点用户区域和市场推广效果,下图为一个实例,从中我们可以看出国外用户数量的变化趋势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值