Как найти местоположение IP-адреса без использования API? - PullRequest
4 голосов
/ 01 апреля 2011

Еще один теоретический вопрос. Да, я знаю, что эти типы вопросов здесь не одобряются. Но предположим, что таких API, как MaxMind GeoIP, не существует, и вы хотите создать службу, которая переводит IP-адреса в город, в котором он находится. Как бы вы решили эту проблему?

Ответы [ 2 ]

6 голосов
/ 01 апреля 2011
  1. Используйте базу данных whois, чтобы узнать, кому назначен IP-адрес.
  2. Используйте DNS для обратного просмотра IP-адреса.
  3. Используйте traceroute, чтобы угадать местоположение на основе маршрутизаторов, ведущих к хосту

В качестве примера рассмотрим stackoverflow.com (64.34.119.12)

$ whois 64.34.119.12 | egrep "(OrgName)|(City)|(State)|(Country)"
OrgName:        Peer 1 Network Inc.
City:           New York
StateProv:      NY
Country:        US

whois показывает нам, что они, вероятно, в Нью-Йорке, Нью-Йорке.

$ host 64.34.119.12
12.119.34.64.in-addr.arpa domain name pointer stackoverflow.com.

Обратный DNS (запись PTR) здесь не помогает. Однако у многих интернет-провайдеров есть записи обратного DNS для конкретного региона, которые могут помочь в этом процессе (особенно для динамически назначаемых хостов). Как пример:

$ host 24.25.195.1
1.195.25.24.in-addr.arpa domain name pointer sndgca-dns-cac-01.san.rr.com.

Этот хост явно идентифицирован и находится по его записи PTR: DNS-сервер Time Warner (Road Runner), кэширующий в Сан-Диего, Калифорния.

Теперь вернемся к процессу определения местоположения stackoverflow.com:

$ traceroute stackoverflow.com
traceroute to stackoverflow.com (64.34.119.12), 64 hops max, 40 byte packets
ms
 (... removed the first few hops ...)
 8  ae-6-6.ebr1.Chicago1.Level3.net (4.69.140.189)  30.9 ms  28.855 ms  25.183 ms
 9  ae-2-2.ebr2.NewYork2.Level3.net (4.69.132.66)  54.373 ms  54.197 ms  48.171 ms
10  ae-6-6.ebr2.NewYork1.Level3.net (4.69.141.21)  48.250 ms  50.712 ms  51.293 ms
11  ae-62-62.csw1.NewYork1.Level3.net (4.69.148.34)  59.493 ms ae-82-82.csw3.NewYork1.Level3.net (4.69.148.42)  51.694 ms ae-62-62.csw1.NewYork1.Level3.net (4.69.148.34)  58.315 ms
12  ae-3-89.edge1.NewYork1.Level3.net (4.68.16.142)  51.529 ms ae-2-79.edge1.NewYork1.Level3.net (4.68.16.78)  50.77 ms ae-3-89.edge1.NewYork1.Level3.net (4.68.16.142)  50.567 ms
13  10ge-te-1-1.nyc-75bre-dis-2.peer1.net (216.187.115.77)  50.776 ms  51.193 ms  56.166 ms
14  gig2-0.nyc-gsr-b.peer1.net (216.187.123.5)  54.994 ms  58.813 ms  51.794 ms
15  gwny01.stackoverflow.com (64.34.41.58)  54.121 ms  52.65 ms  54.166 ms
16  * * *
(... remaining time outs removed ...)

Вывод traceroute подтверждает наше подозрение, что stackoverflow.com размещен в Нью-Йорке, Нью-Йорк.

Это один из способов решения геолокации без API.

1 голос
/ 01 апреля 2011

Я действительно догадываюсь, но это может сработать.

Диапазоны IP-адресов назначаются IANA региональным провайдерам.Их пять.В свою очередь, каждый региональный провайдер назначает диапазоны IP-адресов конечным пользователям и предоставляет интернет-услуги.Если вы можете получить / купить информацию у региональных провайдеров и их интернет-клиентов, вы работаете.

...