可靠的城市级Geo-IP,免费本地数据库

时间:2013-08-04 09:51:23

标签: php geolocation ip-address local ip-geolocation

我想整理一个PHP脚本来解析城市名称(不需要其他任何东西),只有一个国家(IRAN)具有良好的分辨率。由于我必须多次查询数据库,因此最好通过可下载的本地版本。 我已经阅读了stackoverflow上的大部分帖子,因为现在我已经测试了这些:

    来自maxmind的
  • GeoIP City听起来不错,但不是免费的。
  • 来自maxmind的
  • GeoIP具有较低的准确度(约50-60%)
  • ip2country.net有一个IP-2-City数据库,但不是免费的,也不解析伊朗的城市名称。
  • 我还尝试了来自ipinfodb.com的DB#.Lite,它有一个API here但没有任何成功。问题是,它没有检测到许多城市名称。
  • 我也试过hostip.info API,但似乎太慢了。
  • 本地数据库有一个free php class,只能解析国家/地区名称。
  • 我不知道是否有机会,使用Piwik this GeoIP plugin。如果有人知道,我们将不胜感激。
  • ipinfo.io是另一项无法准确解析城市名称的服务。
  • 我不知道是否有办法使用Google分析来解析城市名称,因为我认为谷歌会比伊朗等国家的任何其他服务更好。

任何好主意都会非常感激。

3 个答案:

答案 0 :(得分:4)

这是一个艰难的,很难做到可靠。我过去曾经给过它,它就是这样的

付费的服务可以很快为您做到这一点。可能需要很长时间才能获得仍然不可靠的工作,因为您根本没有数据。我会认真考虑http://www.maxmind.com/en/city_per - 除非当然这是一个完全没有商业化的项目而且$是不是否。

如果你可以从IP表获得lat和long,即使没有城市数据,那么你可能想要使用这样的东西来检查最近的城市Javascript是一个选项 - Finding nearest listed (array?) city from known location

浏览器共享位置功能怎么样?

答案 1 :(得分:0)

如果基于浏览器的解决方案适用于您的用例,您可能需要查看MaxMind's GeoIP2 JavaScript API。它首先尝试使用HTML5地理定位来定位用户,如果失败或不准确,它将恢复为MaxMind的GeoIP2 City数据(不是GeoLite)。 MaxMind提供免费归因版本。

答案 2 :(得分:0)

有时我们需要使用本地Geo-IP数据库而不是Web服务来实现特定目的。这是我的经历: 我下载了数据库表单https://db-ip.com。我经常搜索,最后我发现这个更可靠。但还有两个问题:

  • 1 - “IP地址到城市”数据库太大,无法在托管上的MYSQL数据库上传,因为它超出了超时限制。
  • 2 - 数据库基于http://lite.ip2location.com的IP地址比较。数据库是IP编号的基础。

所以我开发了一个简单的.NET应用来解决这些问题。 该解决方案可以从这里下载:https://github.com/atoosi/IP2Location-Database-Luncher