Получить колледж / университет с 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.