Геолокация с использованием IP

Я пытался найти инструмент для определения местоположения с помощью моего компьютера 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) есть ли другой инструмент для выяснения моего точного lat, lng, Кроме как googlemaps?

2 ответа

Решение

Геолокация IP-адреса относительно менее точна по сравнению с другими методами геолокации, такими как GPS или WiFi MAC-адрес. Причина заключается в частом перераспределении IP-адреса интернет-провайдером.

Ссылка: http://www.geolocation.com/

Вернуться к вашим вопросам.

1) API должен автоматически определить ваш IP-адрес и вернуть вам предполагаемое местоположение

2) Вы не можете найти свои точные широту и долготу без включения GPS

Попробуйте услуги http://geoip-db.com/

Небольшой пример jQuery для получения местоположения, страны, города, широты, долготы, ip и состояния:

<!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>
Другие вопросы по тегам