Геолокация с использованием 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>