无需第三方服务(如 ipinfo)即可检测 ip 位置

Posted

技术标签:

【中文标题】无需第三方服务(如 ipinfo)即可检测 ip 位置【英文标题】:Detect ip location without third services like ipinfo 【发布时间】:2017-08-06 18:03:45 【问题描述】:

我正在做一个网站,我需要注册用户的 ip 以通过 ip 地址按经度和纬度进行某种“地理定位”。

实际上我正在使用 php 的 geoip 库和 maxmind geoipcity.dat (http://php.net/manual/en/book.geoip.php)。 我看到对于 60/70% 这种方法不起作用,我的意思是它没有找到经纬度和城市,而只找到国家。

我不想使用第三方服务,正如我在主题标题中所写的那样。也许你可以给我一些建议或者我在网上没有找到的东西。

感谢您的回复!

【问题讨论】:

【参考方案1】:

除非您可以访问最终用户的 GPS 数据,否则您必须使用第三方服务将 IP 地址或 WIFI MAC 地址转换为纬度和经度。

以下是解决您问题的 2 个建议。

    请求最终用户通过 html 5 共享其 GPS 位置。在这种情况下,Web 浏览器将在向您共享坐标之前请求最终用户的授权(视情况而定)。您可以访问http://ipgeo5.com获取示例代码。

    更改另一个地理位置数据库。如果您关心覆盖范围,您可以评估其他数据库提供商。您可以访问http://lite.ip2location.com 并使用他们的 IP2Location LITE 数据库,看看它是否符合您的要求。

【讨论】:

真的谢谢你。我会尝试 ip2location 数据库。但我有一个问题。从第一种方式(ipgeo)我可以获得用户的ip吗?我在一个带有经度和纬度的 sql 表中上传了所有城市。我的想法是创建一个查询,创建一种关于用户经度和纬度的半径并获取最近的城市。这是个好主意还是坏主意? 更新:我尝试了 ip2location (ip2location.com/developers/php),效果非常好!更新 2:这是一个 DB9 演示 BIN 数据库。您可以评估从 0.0.0.0 到 99.255.255.255 的 IP 地址,只支付我解决? x' @stackedo 您应该从lite.ip2location.com 注册免费的IP2Location LITE 并下载完整的DB9 BIN 文件。开发人员区的示例文件不完整,仅用于演示目的。

以上是关于无需第三方服务(如 ipinfo)即可检测 ip 位置的主要内容,如果未能解决你的问题,请参考以下文章

无需调用外部服务器即可获取 Internet ip

无需轮询即可检测 PHP 中的文件更改

Mac 开发使用的小技巧和笔记

无需 oAuth 即可连接到非 Google 服务的 Gmail 插件

无需单击即可检测UIWebView链接

无需打开注册全局变量即可获取 IP 地址 [重复]