Парсим whois

В процессе разработки сервиса для поиска дроп доменов необходимо было:

  • получить whois информацию по найденному домену
  • вычленить данные и сохранить в БД.

Получение whois информации

Поискав, какие решения есть на гитхабе на php, я нашел несколько реализаций. Попробовал и пришел к выводу, что в этом случае использовать гитхаб репозитории, у которых нет активных контрибьюторов не стоит. Причина в том, что регулярно появляются новые доменные зоны, поэтому надо поддерживать базу whois серверов актуальной.

В итоге я решил отказаться от репозиториев написанных на php в пользу whois клиента, который встроен в Ubuntu. Вот его репозиторий https://github.com/rfc1036/whois Его активно поддерживают и развивают, так что риск, что его забросят минимален.

Если он у вас не установлен:

apt-get install whois

Пользоваться им просто:

whois thisis-blog.ru

Результат

Данные получены, но это просто текст. Его надо распарсить и сохранить в БД.

Парсинг whois информации

Для этой цели я не нашел подходящего мне решения. Многие уже заброшены. Сделал свой велосипед https://github.com/shapito27/whois.

На первый взгляд задача вычленения нужных данных может показаться тривиальной. Но сложность кроется в разных форматах ответа от разных whois серверов.

Например ответ на whois car.co.uk

Сравните его с первым скриншотом.

По другим доменным зонам можно получить совершенно другой неожиданный формат. Думаю проблема стала понятна. Её я попытался решить в выше указаном инструменте. Результат работы получается примерно такой:

Shapito27\Whois\Whois::__set_state(array(
  'status' => 1,
  'creationDate' => '1997-03-29 05:00:00',
  'updateDate' => '2020-03-10 18:53:59',
  'expirationDate' => '2028-03-30 04:00:00',
  'nameServers' => 
 array (
   0 => 'a.ns.facebook.com',
   1 => 'b.ns.facebook.com',
   2 => 'c.ns.facebook.com',
   3 => 'd.ns.facebook.com',
 ),
  'registrar' => 
 Shapito27\Whois\Registrar::__set_state(array(
    'id' => '3237',
    'name' => 'RegistrarSafe, LLC',
    'abuseContactEmail' => 'abusecomplaints@registrarsafe.com',
    'abuseContactPhone' => '+1.6503087004',
 )),
  'registryDomainId' => '2320948_DOMAIN_COM-VRSN',
  'errorMessage' => NULL,
))

Рекомендуем к прочтению



Оставить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.