Как определить местоположение удаленного компьютера, учитывая его IP (без оплаты)? - PullRequest
2 голосов
/ 03 ноября 2011

Я работаю над этим проектом некоторое время.Я обнаружил, что существует много бесплатных баз данных, которые отображаются между IP-номером (своего рода манипуляцией с IP-адресом) и долготой и широтой.Однако точность этих баз данных очень плохая.

Я пытался объединить некоторые базы данных и получить наиболее частый или средний ответ среди ответов.

Это улучшило мою точность, ноне так много, как я ожидал.

У меня есть еще одна идея - использовать команду Traceroute, чтобы выяснить путь к этой цели, и в соответствии с прыжками на пути, чтобы определить, где находится моя цель.

Я ищу новые идеи или какие-то протоколы, которые помогут выяснить местоположение.Я думал об общественных куки, но это может быть слишком агрессивным.Кроме того, мой друг сказал мне, что протокол SNMP может помочь мне, но его очень сложно реализовать.

Моя цель - определить, в каком городе находится этот компьютер.Это то, к чему я стремлюсь.

спасибо и извините за мой английский!

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Не может работать надежно. Например, взять следующие сценарии:

  • У меня есть VPN в моей компании.

    С этим я могу получить IP-адрес от моей компании, не присутствуя физически.

    Где я? На месте моей компании? Или на другом конце света, где я провожу отпуск?

  • У меня коммутируемое соединение с моим провайдером.

    Где я? В точке, где находится узел дозвона или где я на самом деле?

Эти два примера показывают, что сам IP-адрес не содержит (и не может содержать) никакой географической информации. Это может быть связано с таким опытом - пользователи вводят свой (динамический?) IP-адрес в базу данных, связанный с их текущим IP-адресом, но это все. Так сказать, системе присуще то, что она не может быть точной.

Если вы ищете «среднего пользователя», который подключается к сети через ADSL и динамический IP-адрес, вы не знаете, насколько велика область, где провайдер берет адреса из того же пула. После того, как я разорву свое соединение, пользователь, получающий следующий IP-адрес, может находиться на расстоянии 50, 500 или даже 2000 км от меня (в зависимости от страны, в которой вы живете).

Даже фиксированный IP-адрес, назначенный бизнес-клиенту, может изменить его местоположение: бизнес перемещается или перестает существовать, и IP-адрес назначается совершенно другому клиенту.

И все это снова изменится в ближайшие месяцы / годы, и IPv6 станет более популярным.

1 голос
/ 03 ноября 2011

Вы можете использовать новую геолокацию HTML5.Пример: http://html5demos.com/geo

(взято из ссылки выше)

Код:

<script>
function success(position) {
  var s = document.querySelector('#status');

  if (s.className == 'success') {
    // not sure why we're hitting this twice in FF, I think it's to do with a cached result coming back    
    return;
  }

  s.innerHTML = "found you!";
  s.className = 'success';

  var mapcanvas = document.createElement('div');
  mapcanvas.id = 'mapcanvas';
  mapcanvas.style.height = '400px';
  mapcanvas.style.width = '560px';

  document.querySelector('article').appendChild(mapcanvas);

  var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
  var myOptions = {
    zoom: 15,
    center: latlng,
    mapTypeControl: false,
    navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("mapcanvas"), myOptions);

  var marker = new google.maps.Marker({
      position: latlng, 
      map: map, 
      title:"You are here!"
  });
}

function error(msg) {
  var s = document.querySelector('#status');
  s.innerHTML = typeof msg == 'string' ? msg : "failed";
  s.className = 'fail';

  // console.log(arguments);
}

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(success, error);
} else {
  error('not supported');
}

</script>

Что касается баз данных, то я был на этом пути, там нетидеальное решение, все базы данных обеспечат вам точность около 50 миль.

При этом вы можете использовать Ajax для передачи данных о местоположении на ваш сервер.

...