我已经使用geoip php扩展已有一段时间了。 此扩展程序无法像以前那样为我提供纬度和经度。
在maxmind网站内部,我可以阅读:
注意:经过仔细考虑,考虑到客户 反馈,我们已决定不删除经纬度 来自GeoLite2数据库的坐标。我们正在 查看我们所有GeoLite2和GeoIP数据库中使用的坐标 确保没有滥用风险。
还有其他方法(或免费替代方法)从IP地址获取纬度和经度吗?
答案 0 :(得分:3)
http://ip-api.com/提供了一项免费服务,您可以使用。
向http://ip-api.com/json/111.222.333.444/发出GET请求(在您要查找的末尾添加自己的IP)
结果将如下所示:
{
"status": "success",
"country": "COUNTRY",
"countryCode": "COUNTRY CODE",
"region": "REGION CODE",
"regionName": "REGION NAME",
"city": "CITY",
"zip": "ZIP CODE",
"lat": LATITUDE,
"lon": LONGITUDE,
"timezone": "TIME ZONE",
"isp": "ISP NAME",
"org": "ORGANIZATION NAME",
"as": "AS NUMBER / NAME",
"query": "IP ADDRESS USED FOR QUERY"
}
我相信这是您要询问的数据; LAT / LON是此API的标准返回。请注意,不要每分钟执行超过150个请求,否则它们将禁止您的主机发出进一步的请求。
答案 1 :(得分:1)
您可以使用免费的IP2Location LITE DB5和PHP库。
PHP库 https://www.ip2location.com/developers/php
IP2Location LITE DB5 https://lite.ip2location.com/database/ip-country-region-city-latitude-longitude
<?php
require_once 'IP2Location.php';
/*
Default file I/O lookup
*/
$db = new \IP2Location\Database('./databases/IP-COUNTRY-SAMPLE.BIN', \IP2Location\Database::FILE_IO);
$records = $db->lookup('8.8.8.8', \IP2Location\Database::ALL);
echo '<pre>';
echo 'IP Number : ' . $records['ipNumber'] . "\n";
echo 'IP Version : ' . $records['ipVersion'] . "\n";
echo 'IP Address : ' . $records['ipAddress'] . "\n";
echo 'Country Code : ' . $records['countryCode'] . "\n";
echo 'Country Name : ' . $records['countryName'] . "\n";
echo 'Region Name : ' . $records['regionName'] . "\n";
echo 'City Name : ' . $records['cityName'] . "\n";
echo 'Latitude : ' . $records['latitude'] . "\n";
echo 'Longitude : ' . $records['longitude'] . "\n";
echo 'Area Code : ' . $records['areaCode'] . "\n";
echo 'IDD Code : ' . $records['iddCode'] . "\n";
echo 'Weather Station Code : ' . $records['weatherStationCode'] . "\n";
echo 'Weather Station Name : ' . $records['weatherStationName'] . "\n";
echo 'MCC : ' . $records['mcc'] . "\n";
echo 'MNC : ' . $records['mnc'] . "\n";
echo 'Mobile Carrier : ' . $records['mobileCarrierName'] . "\n";
echo 'Usage Type : ' . $records['usageType'] . "\n";
echo 'Elevation : ' . $records['elevation'] . "\n";
echo 'Net Speed : ' . $records['netSpeed'] . "\n";
echo 'Time Zone : ' . $records['timeZone'] . "\n";
echo 'ZIP Code : ' . $records['zipCode'] . "\n";
echo 'Domain Name : ' . $records['domainName'] . "\n";
echo 'ISP Name : ' . $records['isp'] . "\n";
echo '</pre>';
?>
答案 2 :(得分:1)
他们最近改变了关于删除纬度/经度数据的主意,因此它将在现有的GeoLite2中再次可用。在重新部署纬度/经度数据之前,他们只是在验证数据而已。
注意:经过仔细考虑,考虑到客户 反馈,我们已决定不删除经纬度 来自GeoLite2数据库的坐标。*我们正在 查看我们所有GeoLite2和GeoIP数据库中使用的坐标 确保没有滥用风险。
参考:https://dev.maxmind.com/geoip/geoip2/geolite2/
[编辑]因此,要根据以上内容进行实际转储,您将能够像往常一样继续操作,而无需实施新的库/服务