84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
我很好奇的是哪些根据ip获取地理位置的工具都是什么原理?ip中每位数字都代表了什么?我可以在本地不使用第三方接口的情况下完成这一任务吗?
走同样的路,发现不同的人生
什么是ISP呢?简单点理解就像是类似中国电信、联通、移动等网络供应商。有了供应商了就可以上网了,上网你将能通过MODEM获取一个临时IP(周期性变化)。但是这个IP是真的就随机给的吗?怎么随机的呢?APNIC(亚太互联网络信息中心),就是这个组织了。是现在在世界中操作的五个地区的因特网登记处之一,分配B类IP地址的国际组织。它提供全球性的支持互联网操作的分派和注册服务。这些成员包括网络服务提供商、全国互联网登记, 和相似的组织的一个非营利, 基于会员资格的组织。APNIC 负责亚洲太平洋区域,包含 56 经济区。
假设,APNIC给中国分配了100万个IP地址。然后到国内,经由国内的顶级管理组织(不知道是谁)再分配给电信、移动、联通、移动等顶级ISP。然后这些ISP呢,再按照自己的规则给全国不同省份再分配,再到市、县、乡镇等。
IP地址每个数字并不代表什么,国内顶级ISP的IP分配是公开的,因此只有拿到这个库,才能根据用户的IP来知道用户是什么位置的由于这个库的更新并不及时,所以并不100%准确
国内比较流行的IP库就是纯真了。官网:http://www.cz88.net/ 右上角可以下载。安装后在目录下有个.dat的文件就是IP分配数据库了。结合PHP的使用和其他语言的使用百度一搜就有。
.dat
PHP安装GeoIP扩展和数据库根据IP获取访客所在国家/城市/经纬度等信息http://php.net/manual/zh/ref....sudo apt-get install libgeoip-devpecl install geoip-1.1.0注意:Beta版要指定版本号.如果是apt安装的PHP,直接安装php5-geoip这个包即可.php.ini中加入:
sudo apt-get install libgeoip-dev
pecl install geoip-1.1.0
extension=geoip.so geoip.custom_directory="/usr/share/GeoIP"
免费下载GeoLiteCity数据库(解压后18MB):http://dev.maxmind.com/geoip/...wget http://geolite.maxmind.com/do...gunzip GeoLiteCity.dat.gzsudo mkdir -v /usr/share/GeoIPsudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
测试:php -a
<?php print_r(geoip_record_by_name('106.37.165.80')); 回车后按Ctrl+D运行 Array ( [continent_code] => AS [country_code] => CN [country_code3] => CHN [country_name] => China //国家 [region] => 22 [city] => Beijing //城市 [postal_code] => [latitude] => 39.928901672363 //纬度 [longitude] => 116.38829803467 //经度 [dma_code] => 0 [area_code] => 0 )
PHP轻松实现"附近的人"功能,根据IP确定经纬度,根据经纬度计算距离
不使用第三方接口,也需要使用第三方提供的IP库进行匹配查询。但是都不嫩达到100%的准确。
推荐一个既提供接口也提供IP库的服务商:http://www.ipip.net/
他们都有自己IP库的。除非你本地也有IP库
第三方接口能通过ip获取地理位置信息, 其实是其本地保存了ip => address -info 的数据库映射, 因为他们的数据库里保存了大量的ip和地理位置的关系, 所以才能为我们提供第三方服务
ip
ip => address -info
当然, 你完全可以自己去实现, 但是你可能没有那么庞大的数据库支持
你若还是不想请求第三方接口, 可以下载一个
免费的GeoIP数据库
这就是一个数据库的问题,这里有一个开源代码,自己去研究一下吧。http://git.oschina.net/lionsoul/ip2region
nginx+geo+fastcgi_params
欢迎phper加入hnphper群 233415606
pecl install qqwry-betaqqwry 你值得拥有。IP其实并非是胡乱划分的。有心的话,你会发现。IP段和所在的地区是紧密结合的。你的隔壁城市和你的城市的IP可能为连续的。
pecl install qqwry-beta
什么是ISP呢?简单点理解就像是类似中国电信、联通、移动等网络供应商。
有了供应商了就可以上网了,上网你将能通过MODEM获取一个临时IP(周期性变化)。
但是这个IP是真的就随机给的吗?怎么随机的呢?
APNIC(亚太互联网络信息中心),就是这个组织了。是现在在世界中操作的五个地区的因特网登记处之一,分配B类IP地址的国际组织。它提供全球性的支持互联网操作的分派和注册服务。这些成员包括网络服务提供商、全国互联网登记, 和相似的组织的一个非营利, 基于会员资格的组织。APNIC 负责亚洲太平洋区域,包含 56 经济区。
假设,APNIC给中国分配了100万个IP地址。然后到国内,经由国内的顶级管理组织(不知道是谁)再分配给电信、移动、联通、移动等顶级ISP。然后这些ISP呢,再按照自己的规则给全国不同省份再分配,再到市、县、乡镇等。
IP地址每个数字并不代表什么,国内顶级ISP的IP分配是公开的,因此只有拿到这个库,才能根据用户的IP来知道用户是什么位置的由于这个库的更新并不及时,所以并不100%准确
update
国内比较流行的IP库就是纯真了。官网:http://www.cz88.net/ 右上角可以下载。安装后在目录下有个
.dat
的文件就是IP分配数据库了。结合PHP的使用和其他语言的使用百度一搜就有。PHP安装GeoIP扩展和数据库根据IP获取访客所在国家/城市/经纬度等信息
http://php.net/manual/zh/ref....
sudo apt-get install libgeoip-dev
pecl install geoip-1.1.0
注意:Beta版要指定版本号.如果是apt安装的PHP,直接安装php5-geoip这个包即可.
php.ini中加入:
免费下载GeoLiteCity数据库(解压后18MB):
http://dev.maxmind.com/geoip/...
wget http://geolite.maxmind.com/do...
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
测试:
php -a
PHP轻松实现"附近的人"功能,根据IP确定经纬度,根据经纬度计算距离
不使用第三方接口,也需要使用第三方提供的IP库进行匹配查询。
但是都不嫩达到100%的准确。
推荐一个既提供接口也提供IP库的服务商:http://www.ipip.net/
他们都有自己IP库的。除非你本地也有IP库
第三方接口能通过
ip
获取地理位置信息, 其实是其本地保存了ip => address -info
的数据库映射, 因为他们的数据库里保存了大量的ip
和地理位置的关系, 所以才能为我们提供第三方服务当然, 你完全可以自己去实现, 但是你可能没有那么庞大的数据库支持
你若还是不想请求第三方接口, 可以下载一个
这就是一个数据库的问题,这里有一个开源代码,自己去研究一下吧。http://git.oschina.net/lionsoul/ip2region
nginx+geo+fastcgi_params
欢迎phper加入hnphper群 233415606
pecl install qqwry-beta
qqwry 你值得拥有。
IP其实并非是胡乱划分的。有心的话,你会发现。IP段和所在的地区是紧密结合的。你的隔壁城市和你的城市的IP可能为连续的。