使用 IP 进行地理定位

Posted

技术标签:

【中文标题】使用 IP 进行地理定位【英文标题】:Geolocation using IP 【发布时间】:2017-03-14 04:44:18 【问题描述】:

我一直在尝试寻找一种工具来使用我的计算机ip 定位我的位置。

我尝试了一些网络工具,例如http://geoiplookup.net/https://geoiptool.com/,以及一些开发者工具,例如freegeoip.net,我对这些工具更感兴趣。

事实是:所有的地理位置都偏离,至少在我所在的地方(南美洲、巴西),都指向同一个错误的位置.

为什么会这样?

我试过这段代码:

    send_url = 'http://freegeoip.net/json'
    r = requests.get(send_url)
    j = json.loads(r.text)
    lat = j['latitude']
    lon = j['longitude']

    return (lat, lon)

但由于它使用了错误的ip,它返回了一些奇怪的lat/lgn,离我很远。

1) 我可以在上面的代码中将我的确切 ip 作为参数传递吗?

2) 除了googlemaps,还有其他工具可以找出我的准确lat, lng吗?

【问题讨论】:

【参考方案1】:

与 GPS 或 WiFi MAC 地址等其他地理定位方法相比,IP 地址地理定位的准确度相对较低。原因是ISP频繁重新分配IP地址。

参考:http://www.geolocation.com

回到你的问题。

1) API 应该会自动检测您的 IP 地址并返回您的估计位置

2) 如果不启用 GPS,您将无法找到精确的经度和纬度

【讨论】:

【参考方案2】:

试试http://geoip-db.com的服务

一个用于检索位置、国家、城市、纬度、经度、ip 和州的小型 jQuery 示例:

<!DOCTYPE html>
<html>
<head>
    <title>GEOIP DB - jQuery example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js">
</script>
</head>
<body>
    <div>Country: <span id="country"></span>
    <div>State: <span id="state"></span>
    <div>City: <span id="city"></span>
    <div>Latitude: <span id="latitude"></span>
    <div>Longitude: <span id="longitude"></span>
    <div>IP: <span id="IPv4"></span>
    <script>
    $.ajax(
        url: "https://geoip-db.com/jsonp",
        jsonpCallback: "callback",
        dataType: "jsonp",
        success: function( location ) 
            $('#country').html(location.country_name);
            $('#state').html(location.state);
            $('#city').html(location.city);
            $('#latitude').html(location.latitude);
            $('#longitude').html(location.longitude);
            $('#ip').html(location.IPv4);  
        
    );     
    </script>
</body>
</html>

【讨论】:

以上是关于使用 IP 进行地理定位的主要内容,如果未能解决你的问题,请参考以下文章

使用 IP 进行地理定位是查找计算机位置的好方法吗

谷歌地图是不是只使用我的 IP 进行地理定位?

win32 api根据wifi和IP地址对笔记本电脑进行地理定位

通过 iPhone 的 IP 地址进行地理定位

Max Mind 地理定位异常

基于 gps 或 gprs(ip) 的地理定位