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

6
我希望编写一个PHP脚本,用于解析城市名称(仅限伊朗),需要有较好的分辨率。由于需要多次查询数据库,最好使用可下载的本地版本。 我已阅读了Stackoverflow上的大部分帖子,并测试了以下内容:
  • GeoIP City 来自maxmind听起来不错,但是不免费。
  • GeoIP 来自maxmind,精度较低(约50-60%)
  • ip2country.net 有一个IP-2-City数据库,但不免费,并且无法解析伊朗城市名称。
  • 我还尝试了来自ipinfodb.com的DB#.Lite,它有一个API,但没有成功。问题在于它无法检测到许多城市名称。
  • 我还尝试了hostip.info API,但它似乎太慢了。
  • 有一个带有本地数据库的免费php类仅解决国家名称。
  • 我不知道是否有机会使用Piwik和此GeoIP插件。如果有人知道,请提供想法。
  • ipinfo.io 是另一个无法准确解析城市名称的服务。
  • 我不知道是否有办法使用Google Analytics解析城市名称,因为我认为Google在像伊朗这样的国家方面比任何其他服务都更好。
任何好的想法都将不胜感激。

1
你尝试过https://developers.google.com/fusiontables/吗?你也可以从https://en.wikipedia.org/wiki/Category:Cities_in_Iran获取数据。 - Robert Seddon-Smith
3个回答

4
这是一件比较困难且难以可靠地完成的事情。我曾经尝试过,大致步骤如下: 有些付费服务可以快速地帮助您完成这项工作。如果您没有数据,则可能需要花费很长时间才能使其可靠。我强烈建议考虑使用http://www.maxmind.com/en/city_per,除非这是一个完全非商业项目且无法使用资金。
如果从IP表格中获取纬度和经度,即使没有城市数据,您也可以使用类似于此的内容来检查距离最近的城市,可以使用JavaScript实现-Finding nearest listed (array?) city from known location
那浏览器的共享位置功能呢?

谢谢你的回答。我不认为“浏览器共享位置功能”被所有主要浏览器广泛支持。是吗? - Peyman Mohamadpour
不,我只是随便说说而已。 - Jake N
我们正在使用免费支持邮政编码的IP2Location LITE。 - Michael C.

0
如果基于浏览器的解决方案适用于您的用例,您可能想要查看MaxMind的GeoIP2 JavaScript API。它首先尝试使用HTML5地理定位来定位用户,如果失败或不准确,则会回到MaxMind的GeoIP2 City数据(而不是GeoLite)。MaxMind提供了一个免费的归属版本。

0
有时候,我们需要使用本地的Geo-IP数据库来替代网络服务以满足特定的需求。这是我的经验:
我从https://db-ip.com下载了数据库。我搜索了很多,最终发现这个更可靠。但还有两个问题:
  • 1-“IP地址到城市”的数据库太大了,在MYSQL数据库上上传会超时。
  • 2-该数据库基于IP地址比较,而http://lite.ip2location.com数据库则基于IP数字。
所以,我开发了一个简单的.NET应用程序来解决这些问题。 解决方案可以从这里下载:https://github.com/atoosi/IP2Location-Database-Luncher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接