6

我想组合一个 PHP 脚本来解析城市名称(不需要其他任何东西),并且仅针对单个国家(伊朗)具有良好的分辨率。由于我必须多次查询数据库,因此最好通过可下载的本地版本。我已经阅读了关于 stackoverflow 的大部分帖子,并且从现在开始我已经测试了这些:

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

任何好主意将不胜感激。

4

3 回答 3

4

这是一项艰巨的任务,而且很难可靠地完成。我过去曾尝试过,结果是这样的

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

如果您可以从 IP 表中获取经纬度,即使没有城市数据,那么您可能希望使用类似这样的方法来检查最近的 Javascript 城市是一个选项 -查找最近列出的(数组?)城市已知位置

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

于 2013-08-04T10:11:01.017 回答
0

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

于 2013-08-04T13:34:39.640 回答
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

于 2017-09-28T19:59:23.613 回答