Содержание:
Список всех IP интернет-провайдера
Для получения списка диапазонов IP адреса провайдера есть несколько сервисов.
Например, Hurricane Electric BGP Toolkit — позволяет делать поиск по имени. Но у этого сервиса есть существенные недостатки:
- выдаётся не более 1000 записей
- среди записей много нерелеватных данных
- перед выдачей идёт проверка браузера — это затруднит или исключит автоматический парсинг, например, инструментами из командной строки.
Следующий сервис, который нам порекомендовал Google, это онлайн демонстрация программы «Тест IP v 1.7».
Работа этого сервиса достаточно хороша — диапазоны выдаются в удобочитаемом формате. Но смущает надпись «Обновление от 15 дек 2014». Теперь остается гадать, это относится к базе данных или к программе, но по сравнению с результатами из других источников, результаты этого сервиса несколько неполные.
В конечном счёте пал на сервис — 2ip.ua. Он не может искать по именам компании — нужно ввести один из IP, который принадлежит провайдеру, либо адрес веб-сайта провайдера, либо его RIPE NCC.
Главный его минус — это тот вид, в котором он выдаёт диапазоны адресов.
Зато он оказался крайне дружелюбным для парсинга в командной строке.
Если вы хотите узнать все IP другого провайдера (а не вашего), то можно сделать так:
curl -s -L --data "ip=www.parc.com" https://2ip.ua/ru/services/information-service/provider-ip?a=act | grep -o -E '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/[0-9]{1,2}'
Вместо www.parc.com вам нужно указать любой IP, который принадлежит интересующему вас провайдеру, либо адрес его веб-сайта.
Список IP города, области
Для этого можно воспользоваться IpGeoBase.ru.
Причём результаты также легко поддаются парсингу. Если вы хотите сохранить список из IP какого-либо города, то сначала зайдите на сайт IpGeoBase.ru, задайте нужные вам опции и скопируйте адрес получившейся страницы.
Теперь в командную строку скопируйте команду
curl -s
'URL'
|
grep
-o -E
'[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} - [0-9] {1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'
> diap_ip.txt
Где вместо ‘URL‘ введите адрес страницы на ipgeobase.ru, которую нужно пропарсить.
Результаты работы программы будут сохранены в файл diap_ip.txt.
Ещё один вариант — оффлайновый. Мне он даже ближе, т.к. актуальность базы данных IpGeoBase.ru вызывает у меня сомнения.
Скачиваем и распаковываем базу данных (она довольно большая — в распакованном виде более 400 мегабайт):
1
|
wget `curl -s https: //db-ip .com /db/download/city | grep -E -o 'http://download.db-ip.com/free/dbip-city-20[0-9]{2}-[0-9]{2}.csv.gz' `&& gunzip dbip-city-*.csv.gz && mv dbip-city-* dbip-city-csv |
Чтобы прикинуть, правильно ли вы ищите, наберите примерно такую команду (Murom замените на интересующий вас город):
1
|
CITY=Murom; cat dbip-city-csv | grep -E -i "$CITY" |
ВНИМАНИЕ: некоторые населённые пункты написаны по-русски! Пробуйте также русские названия.
Для очистки списка сделайте так:
1
|
CITY=Murom; cat dbip-city-csv | grep -E -i "$CITY" | sed 's/","/-/' | cut -d ',' -f 1 | sed 's/"//' | sed 's/"//' |
Сохраняем в файл полученные результаты:
1
|
CITY=Murom; cat dbip-city-csv | grep -E -i "$CITY" | sed 's/","/-/' | cut -d ',' -f 1 | sed 's/"//' | sed 's/"//' > IP_City_$CITY.txt |
Если вы хотите получить все IP адреса какой-либо области, то смотрите мой пример. Меня интересует Владимирская область. Начните с укороченного названия на русском:
CITY=владимир;cat dbip-city-csv | grep -E -i «$CITY» | sed ‘s/»,»/-/’
Результат пустой — хорошо, запомнили это и продолжаем. Пробуем сокращённое английское название:
1
|
CITY=vladimir; cat dbip-city-csv | grep -E -i "$CITY" | sed 's/","/-/' |
Вариантов написания много: «Vladimir Oblast», Vladimirskaya Oblast\’, Province of Vladimir, Vladimirskaya oblast, Влади́мирская О́бласть (хм, запись нашлась по городу Vladimir, сколько ещё русских названий мы пропустили?). Если там что-то лишнее, то делаем примерно так:
1
|
CITY= 'Vladimirskaya oblast|Province of Vladimir' ; cat dbip-city-csv | grep -E -i "$CITY" | sed 's/","/-/' |
У меня лишних результатов нет, поэтому я просто очищаю полученный по укороченного английскому названию список:
1
|
CITY=vladimir; cat dbip-city-csv | grep -E -i "$CITY" | sed 's/","/-/' | cut -d ',' -f 1 | sed 's/"//' | sed 's/"//' > IP_Region_$CITY.txt |
Список всех IP страны
Получить полный список IP любой страны очень просто.
Скачиваем и распаковываем базу данных:
1
|
wget `curl -s https: //db-ip .com /db/download/country | grep -E -o 'http://download.db-ip.com/free/dbip-country-20[0-9]{2}-[0-9]{2}.csv.gz' ` && gunzip dbip-country-*csv.gz && mv dbip-country-* dbip-country-csv |
В следующей команде там где COUNTRY=RU, замените RU на двухсимвольное обозначение любой интересующей вас страны. Двухбуквенные коды любой страны вы можете узнать здесь.
Эта команда составит полный список IP и сохранит его в файл для РФ:
1
|
COUNTRY=RU; cat dbip-country-csv | grep -E "$COUNTRY" | sed 's/","/-/' | sed 's/`echo $COUNTRY`//' | cut -d ',' -f 1 | sed 's/"//' | sed 's/"//' > IP_Country_$COUNTRY.txt |
А эта команда сделает то же самое для Таиланда:
1
|
COUNTRY=TH; cat dbip-country-csv | grep -E "$COUNTRY" | sed 's/","/-/' | sed 's/`echo $COUNTRY`//' | cut -d ',' -f 1 | sed 's/"//' | sed 's/"//' > IP_Country_$COUNTRY.txt |
Спасибо норм все по полочкам разложили