原文链接:http://blog.csdn.net/johnnycode/article/details/42028841
MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用广泛,包括个性化定制内容、诈欺检测、广告定向、网站流量分析、执行规定、地理目标定位、地理围栏定位 (geo-fencing)以及数字版权管理。目前使用 GeoIP 更多是配合Nginx或Apache服务器进行日志分析获取网站访问量地域分布状况。
GeoIP 分为商业版和免费版,免费版比商业版精度差了许多,经测试对于城市定位确实有差距,能否接受看你的精度要求!
一、免费版本介绍:
1、GeoLite 版本,网上流传较广,数据库类型为 dat 格式文件,库文件较小未进行精准度测试。
2、GeoLite2版本,目前最新版本,数据库文件为 mmdb 格式文件,有兴趣了解 mmdb 格式的点这里 。
两者数据库文件大小比对,GeoLite2 特性点击这里
二、下载 GeoLite2 数据库
下载方式分为两种,第一种通过下载 gz 压缩包,第二种通过使用官方提供的下载更新程序,建议使用第二种,官方称数据库在每个月的第一个星期二更新,如果想做成计划任务每月都更新建议选择第二种!GeoIP2详细更新日志点这里。
两种方式这里都啰嗦一下,本阶段只是讲如何下载数据库,调用方式需要参考第三阶段 API 调用部分!
1、第一种方式,下载 gz 文件并解压缩。
GeoLite2 只提供 City 数据库和 Country 数据库下载 查看详情点击里,数据库文件分为 Binary 和 CVS 两种,这里使用 Binary 文件。
2、第二种方式,需安装官方下载更新程序 geoipupdate 。
a、到 GitHub下载地址 下载 geoipupdate,目前最新版为 2.1.0,GitHub 连接速度要有耐心,肯定可以下载滴!编译文件需要 libcurl-devel 包支持,需提前下载安装。
编译完毕只需要关注两个文件
更新执行文件 /usr/local/bin/geoipupdate
账户信息文件 /usr/local/etc/GeoIP.conf
b、配置账户信息 GeoIP.conf,修改配置文件如下即可,本配置文件默认下载 mmdb 文件,若想下载 dat 文件取消注释即可!
c、执行更新
查看geoipupdate帮助文件,了解有哪些参数可以使用! -d 参数将文件下载到指定目录,-v 参数就是显示下载过程明细信息。
执行更新命令,下载速度看网络情况,本文将文件下载到 /mnt/data/geolite2/目录 。
如何配置计划任务定时更新 GeoLite2 数据库请自行解决。
三、安装 GeoLite2 API 调用程序
官方提供 .NET (C#)、C、Java、Perl、Python、Apache API调用。其他第三方接口也有,但官方不提供技术支持,详情点击这里。
本文使用 C 语言API接口进行调用测试,为下篇文章Nginx与GeoIP2配合做铺垫。其他语言请参考官方指导自行解决!C语言API GitHub 下载地址
查看帮助文档
1、获取国家信息,国家信息是正确滴,看着像乱码的地方是显示的俄语!
2、获取城市信息,这个数据就有点纠结了,省份没有问题,城市是有问题的! 官方演示地址 非常精准,也许这就是免费和收费的差别 :)
测试IP1:112.225.35.70 山东省青岛市,定位错误。
测试IP2:115.29.113.101 浙江省杭州市,定位正确。
测试IP3:112.124.127.64 浙江省杭州市,定位正确。
测试IP4:180.153.214.152 上海市,定位正确。
因为获取的数据是 Json 格式,所以根据帮助文档提示可以对内容进行格式化输出,如输出城市数据库中 city->names->zh-CN 内容
获取省份要注意一点,省份是个数组,无意中发现每个版本的获取方式还不一样,注意版本区别!
虽然 GeoIP2 免费数据库在城市定位分析的不是很理想,但对我来说精度可以接受,聊胜于无嘛!