使用 GeoIP 数据库的最佳方式

Posted

技术标签:

【中文标题】使用 GeoIP 数据库的最佳方式【英文标题】:Best way of using GeoIP databases 【发布时间】:2015-05-08 14:06:57 【问题描述】:

谁能告诉我使用 GeoIP 数据库以通过 IP 检测访问者所在国家/地区的最佳方法是什么。

我曾经有一个填充了 IPv4 信息(longstart、longend、国家代码)的表格,并使用 INET_ATON() 指令我会得到相关的国家代码。

但是,我们现在想要使用 IPv6 数据库并获取 IPv6 IP 的国家代码。但不确定使用这些数据库的最佳方式是什么。我可以看到他们现在提供各种数据库(geolite legacy、geolite 2 或 API),他们还提供了一些更新脚本 - 但不确定这是如何工作的,或者与什么相关。

任何帮助将不胜感激。谢谢。

【问题讨论】:

这取决于您和您的需求。我正在使用嵌入在 Apache 模块中的二进制数据库,它会自动将每个传入请求与一个位置相关联。这很棒。这是否是您需要的用例,没人能告诉您。 【参考方案1】:

您是否尝试过使用http://php.net/manual/en/intro.geoip.php

您也可以在这里http://dev.maxmind.com/geoip/geoip2/geolite2/使用 Maxmind 的可下载 GeoIP 数据库

【讨论】:

感谢您的回答 - 这似乎是一个很好的解决方案。他们每个月都会更新他们的数据库(如dev.maxmind.com/geoip/legacy/geolite 所述)。知道这个扩展是否以某种方式更新了吗?对不起,如果这是一个愚蠢的问题 - 不是很熟悉服务器的事情。 您只需要每周提醒一次,这样您就可以关注他们的网站以检查任何更新。 感谢您的回答。我最终在这里使用了github.com/maxmind/GeoIP2-php 的 API,并使用了一个可以保持数据库更新的 cron。再次感谢! @OmniPotens 你知道有没有比 MaxMind 提供的免费 geolite.dat 更准确的免费 geo db 吗? @zeflex 给我一些时间检查一下然后回复你

以上是关于使用 GeoIP 数据库的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

GeoIP 查找——选项和数据持久性

如何以编程方式在 NGINX 中查询 GeoIP

nginx GeoIP 缓存密钥

如何为 IPv6 使用 geoip 数据?

GeoIP + Django,无效的 GeoIP 城市数据文件

使用 PHP 从保存在本地的 GeoIP 数据库中获取数据