从 IP 地址获取城市

Posted

技术标签:

【中文标题】从 IP 地址获取城市【英文标题】:Getting the city from an IP address 【发布时间】:2015-09-16 09:20:29 【问题描述】:

我想从访问者的 IP 地址中检索他们的城市、州和国家/地区等信息,以便我可以根据他们的位置自定义我的网页。在 php 中有没有好的可靠的方法来做到这一点? 没有 java 脚本,我正在使用此代码,但城市的结果为 null

$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$city = $geo["geoplugin_city"];
$region = $geo["geoplugin_regionName"];
$country = $geo["geoplugin_countryName"];

echo "City: ".$city."<br>";
echo "Region: ".$region."<br>";
echo "Country: ".$country."<br>";

城市的结果不起作用非常感谢

【问题讨论】:

您无法仅通过用户 IP 准确获取这些信息。你应该看看其他(更详细的)方法。 我们需要什么方法谢谢 我只是尝试了一堆IP地址,例如我的没有返回任何city,但是使用IP地址返回8.8.8.8城市(如山景)。所以我认为一些 IP 地址启用了配置来防止位置跟踪或阻止本地化信息的东西。 get region/city from ip 的可能重复项 @Zeratops 或者,不那么险恶的解释:这个城市根本不为人所知。 IP 地理定位并不是一门精确的科学。 【参考方案1】:

Geolocation-by-IP 通过积累一个将 IP 映射到地理位置的数据库来工作。这些数据的来源多种多样,通常是公共 IP 分配记录的积累。作为背景知识,有一些机构负责管理 IP 地址的分配。有一个全球机构将 IP 地址范围分配给较小的区域机构,这些机构进一步将这些地址传递给更多本地组织,如 ISP 或托管公司,最终将其分发给客户。

例如,如果大型 ISP 接收到一系列 IP 地址,那么这可能是公共知识。但是,如果这个 ISP 是跨区域运营的,那么一个客户今天可能会得到一个地址,而另一个完全不同城市的完全不同的客户可能会在明天得到它。 在任何时候都不知道此 IP 分配给了谁。 ISP 运营所在的模糊地理区域是已知的,但特定城市的哪个特定客户当前拥有该 IP 地址却不知道。

【讨论】:

以上是关于从 IP 地址获取城市的主要内容,如果未能解决你的问题,请参考以下文章

获取公网ip,获取用户城市地址

如何从 MVC 中的 ip 地址获取格式化地址

js获取当前用户IP地址和城市

js根据ip地址获取城市地理位置

用于从 IP 地址获取地理编码的 Java 库

获取客户端IP地址经纬度所在城市