我遇到了hostip.info API
的一些问题。
这是我的PHP代码:
$ip = $_SERVER['REMOTE_ADDR'];
echo $ip;
$response = file('http://api.hostip.info/get_html.php?ip='.$ip);
foreach ($response as $line) {
$line = trim($line);
if (!empty($line)) {
$parts = explode(': ', $line);
$array[$parts[0]] = $parts[1];
}
}
它返回了我正确的IP地址,但是当我尝试返回$array['City']
时,它说我处于不同的状态。我没有使用代理。为什么它给了我正确的IP,而不是城市?
谢谢!
答案 0 :(得分:0)
您的IP地址属于您的ISP,并且已经使用此api返回的地址进行了注册。 api无法以100%的准确度确定给定IP地址的实际地理位置。例如,我目前在加利福尼亚州,但此服务http://api.hostip.info/以" Reston,VA"因为我在Verizon以及Verizon注册ip地址的地方。
Here is a good article about the subject:
有更准确的服务,例如https://www.maxmind.com/en/geoip2-precision-insights,但我不知道是否有任何免费服务。
编辑:刚刚发现此网站显示了各种类似服务的结果的良好比较:http://www.iplocation.net/
并从该网站,这个解释:
地理位置数据库的准确性因数据库而异 你用。对于IP到国家的数据库,一些供应商声称提供98% 虽然典型的Ip2Country数据库精度更高,但精度达到99% 像95%。对于IP到区域(或城市),认证范围从50%到任何 如果邻近城市被视为正确,则达到75%。考虑到这一点 没有官方的IP到地区信息来源,准确率为50 +% 非常好。
我希望这能回答你的问题。