怎样使用GeoIP数据库确定地理位置

2018年9月27日 | 分类: 【技术】

【介绍】

GeoIP,就是通过来访者的IP,定位经纬度,国家/地区,省市,甚至街道等位置信息。由 MaxMind.com 所维护,有商业版和免费版。

GeoLite 数据库是 MaxMind.com 提供的的免费数据库。数据库在每个月的第一个星期二更新。免费数据库的格式与收费数据库相同。任何可以读取GeoIP付费数据库的代码都可以读取免费数据库。

MaxMind.com 定期测试GeoIP2和GeoIP旧版数据库的准确性。在我们最近的测试中,这些数据库在国家层面上的准确率为99.8%,在美国州级层面上的准确率为90%,而美国城市半径50公里范围内的准确率为81%。

【下载】

下载:https://dev.maxmind.com/zh-hans/geoip/legacy/geolite/
下载:https://www.maxmind.com/zh/geoip2-services-and-databases

介绍:https://support.maxmind.com/zh-hans/
申请:https://www.maxmind.com/zh/process-service-trial-request
报价:https://wenku.baidu.com/view/5b2546ea370cba1aa8114431b90d6c85ec3a88c5.html

【应用】

应用:https://codecanyon.net/item/geo-locator-v01/138715
演示:https://geo.gksl.net/
对标:https://ipinfodb.com/

参考:http://wangjian84075041.blog.163.com/blog/static/186703380201251445730138/
参考:https://blog.csdn.net/hellochenlian/article/details/44257321
参考:https://sjolzy.cn/GeoIP-PHP-version-use.html

【自动更新脚本(1)】

参考:https://chaihongjun.me/os/linux/182.html

1. 创建文件 update_geoip.sh

#!/bin/bash
#判断是否存在存放GeoIP数据库的目录,没有则创建(实际目录路径请酌情处理)
if [ ! -d /usr/local/share/GeoIP ];then
    mkdir /usr/local/share/GeoIP
fi
#从官网下载免费的国际和城市数据库文件
wget -t 5 -O /tmp/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget -t 5 -O /tmp/GeoLiteCity.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
#解压压缩的数据库文件
gzip -df /tmp/GeoIP.dat.gz
gzip -df /tmp/GeoLiteCity.dat.gz
#移动数据库文件到存放的目的目录
mv -f /tmp/Geo*.dat /usr/local/share/GeoIP/

2. 可执行权限

chmod +x update_geoip.sh

3. 设定为每周更新一次

### update Geoip databases
0 0 * * 0 /root/update_geoip.sh

【自动更新脚本(2)】

参考:http://wangblog.org/2009/11/_geoip.html

FreeBSD 7.0-RELEASE-i386 + PHP5 + Apache2.2

cd /usr/ports/net/pecl-geoip && make install clean
apachectl restart
cd ~
fetch http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mv GeoIP.dat /usr/local/share/GeoIP/GeoIP.dat
fetch http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat
<?php
echo geoip_database_info(GEOIP_COUNTRY_EDITION);
$country = geoip_record_by_name('wangblog.org');
if($country){
	echo "\nThis host is located in: \n";
	print_r($country);
}
?>

定时更新IP地址库的cron程序:

cd ~
/usr/bin/fetch http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
/usr/bin/gunzip GeoIP.dat.gz
mv GeoIP.dat /usr/local/share/GeoIP/GeoIP.dat
/usr/bin/fetch http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
/usr/bin/gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

以上保存为:update-ipdata-cron.sh

crontab -e

添加以下一行,每月5日0点10分运行:

10 0 5 * * /bin/csh /path/to/update-ipdata-cron.sh

【其他IP库】

HostIP.info IP Addresses Database

参考:http://www.hostip.info/dl/index

纯真IP数据库

参考:http://www.cz88.net/

由纯真网络维护,每5天更新一次,目前数据量在45万条。纯真网络提供一个.EXE安装文件(下载地址 http://update.cz88.net/soft/setup.zip ),下载到本地后安装,在安装目录中可以找到一个文件文件QQWry.Dat,它就是纯真IP数据库文件。

kayako-geoip-data

介绍:http://portaliz.net/threads/kayako-geoip-data.3190/
下载:https://mega.nz/#!V0IxkA6Z!hvQHF62n-a8ftAy9C3AaA4bCzlX7nW3MzDN4m8bMGhs

怎样获取最新数据呢?

It is easy to locate potentially newer versions by simply googling “kayako __swift/geoip” or “Index of /kayako/__swift/geoip”,
and you will find lists of other peoples servers with the geoip data that is downloadable.

https://www.google.com/?gws_rd=ssl#safe=strict&q=Index+of+%2Fkayako%2F__swift%2Fgeoip