我一直在使用 geoip php 扩展。此扩展程序不像以前那样为我提供纬度和经度。
查看 maxmind 网站,我可以阅读:
注意:经过仔细考虑,考虑到客户的反馈,我们决定不从 GeoLite2 数据库中删除纬度和经度坐标。我们正在审查我们所有 GeoLite2 和 GeoIP 数据库中使用的坐标,以确保不存在滥用风险。
是否有其他方法(或免费替代方法)从 IP 地址获取纬度和经度?
您可以使用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 个请求,否则它们将禁止您的主机发出进一步的请求。
他们最近改变了删除 Lat/Lon 数据的想法,因此它将在现有的 GeoLite2 中再次可用。他们只是在重新部署纬度/经度数据之前验证他们的数据。
注意:经过仔细考虑,考虑到客户的反馈,我们决定不从 GeoLite2 数据库中删除纬度和经度坐标。* 我们正在审查我们所有 GeoLite2 和 GeoIP 数据库中使用的坐标,以确保没有风险的误用。
参考:https ://dev.maxmind.com/geoip/geoip2/geolite2/
[编辑]因此,要根据上述内容实际重新启动,您将能够像以前一样继续,而无需实施新的库/服务
您可以使用免费的 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>';
?>