Получить колледж / университет с IP-адреса

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

2 ответа

Решение

Вы можете использовать http://ipinfo.io/ (сервис, который я построил) для этого. Вот некоторые примеры вывода из API:

$ curl ipinfo.io/128.32.0.1 
{
    "ip": "128.32.0.1",
    "hostname": "No Hostname",
    "city": "Berkeley",
    "region": "California",
    "country": "US",
    "loc": "37.8668,-122.2536",
    "org": "AS25 University of California at Berkeley",
    "postal": "94720"
}

Обратите внимание на поле организации, "AS25 Калифорнийский университет в Беркли". Вы можете получить только эти детали, добавив / org к URL:

$ curl ipinfo.io/128.32.0.1/org
AS25 University of California at Berkeley

Вы можете выполнить массовый поиск ваших IP-адресов, поместив их в файл и выполнив следующую команду:

$ cat ips.txt | xargs -I% curl -s http://ipinfo.io/%/org | paste ips.txt -
128.32.0.1  AS25 University of California at Berkeley
128.62.76.244   AS18 University of Texas at Austin
24.32.142.2 AS7018 AT&T Services, Inc.
171.64.84.194   AS32 Stanford University
18.9.44.47  AS3 Massachusetts Institute of Technology
67.188.232.130  AS7922 Comcast Cable Communications, Inc.

Вы можете узнать более подробную информацию об API по http://ipinfo.io/developers.

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

Я играл с базой данных мировых имен, собранной из LinkedIn и Webometric, и со старой базой данных IP-ISP, которая была у меня под рукой (датированная 2012 годом), чтобы получить список из примерно 5800 университетов / колледжей.

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

Но это должно быть хорошим началом, если вы не хотите использовать какой-либо API.

Затем вы должны быть в состоянии сделать что-то похожее на:

SELECT * FROM `isp_universities`
WHERE INET_ATON('192.16.181.4')
BETWEEN from_dec AND to_dec

чтобы получить:

192.16.181.0 to 192.16.181.255
Massachusetts Institute of Technology
http://www.mit.edu/

Посмотрите здесь, я поместил базу данных на Bitbucket.

Другие вопросы по тегам