Перейти к основному содержимому

Net::Whois - Парсер проверяет данные о домене через RDAP и WHOIS

Обзор парсера

Обзор парсера

Данные о домене собираются через RDAP (HTTP, JSON) или WHOIS (порт 43) — в зависимости от доменной зоны. Для каждого TLD в парсере заданы RDAP- и WHOIS-серверы; если для зоны доступен RDAP, запрос выполняется через него в первую очередь, при ошибке — на WHOIS.

Подробнее: RDAP (англ.), WHOIS.

Функционал A-Parser позволяет сохранять настройки парсинга для дальнейшего использования (пресеты), задавать расписание парсинга и многое другое. Вы можете использовать автоматическое размножение запросов, подстановку подзапросов из файлов, перебор цифро-буквенных комбинаций и списков для получения максимально возможного количества результатов.

Сохранение результатов возможно в том виде и структуре которая вам необходима, благодаря встроенному мощному шаблонизатору Template Toolkit который позволяет применять дополнительную логику к результатам и выводить данные в различных форматах, включая JSON, SQL и CSV.

Кейсы по применению парсера

Собираемые данные

  • Зарегистрирован домен или нет
  • Дата окончания регистрации домена
  • Когда зарегистрирован домен
  • Дата последнего обновления записи
  • URL RDAP-сервера — при успешном RDAP-запросе
  • Используемый WHOIS-сервер — при WHOIS-запросе; при RDAP часто пустой
  • Список нэйм сервера домена
  • Регистратор домена
  • Текущий статус домена
  • Дата освобождения домена
  • Сырой ответ — текст WHOIS или JSON RDAP

Возможности

  • Автоматический выбор RDAP или WHOIS по доменной зоне (приоритет RDAP)
  • Поддерживается работа с интернациональными доменами (IDN, например яндекс.рф)

Варианты использования

  • Сбор свободных доменов или тех, которые скоро освободятся
  • Сбор списка ns-серверов
  • Получение статусов доменов

Запросы

В качестве запросов необходимо указывать домен искомого сайта, например:

a-parser.com  
yandex.ru
google.com
vk.com
facebook.com

Варианты вывода результатов

A-Parser поддерживает гибкое форматирование результатов благодаря встроенному шаблонизатору Template Toolkit, что позволяет ему выводить результаты в произвольной форме, а также в структуированной, например CSV или JSON

Вывод по умолчанию

Формат результата:

$query - registered: $registered, expire: $expire_date, creation: $creation_date

В результате отображен домен, зарегистрирован ли он, дата окончания регистрации и дата регистрации домена:

facebook.com - registered: 1, expire: 30.03.2028, creation: 29.03.1997
a-parser.com - registered: 1, expire: 25.02.2022, creation: 25.02.2012
vk.com - registered: 1, expire: 23.06.2021, creation: 24.06.1997
yandex.ru - registered: 1, expire: 01.10.2021, creation: 23.09.1997
google.com - registered: 1, expire: 14.09.2028, creation: 15.09.1997

Вывод списка NS

Формат результата:

$ns.format('$server\n')

Пример результата:

demi.ns.cloudflare.com
vern.ns.cloudflare.com

Вывод данных о сроках домена в CSV

Формат результата:

[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]

Пример результата (домен .com, ответ через RDAP — whoisserver пустой, заполнен rdapserver):

a-parser.com,1,25.02.2027,25.02.2012,10.02.2026,none,,https://rdap.verisign.com/com/v1/domain/a-parser.com,"Squarespace Domains II LLC"

Вывод списка NS в таблицу CSV

Формат результата:

[% FOREACH ns;
tools.CSVline(query, server);
END %]

Пример результата:

a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com

Дамп результатов в JSON

Общий формат результата:

[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;

obj = {};
obj.query = query;
obj.registered = p1.registered;
obj.expire_date = p1.expire_date;
obj.creation_date = p1.creation_date;
obj.updated_date = p1.updated_date;
obj.free_date = p1.free_date;
obj.whoisserver = p1.whoisserver;
obj.rdapserver = p1.rdapserver;
obj.registrar = p1.registrar;
obj.domains = [];

FOREACH item IN p1.ns;
obj.domains.push({
server = item.server
});
END;

obj.json %]

Начальный текст:

[

Конечный текст:

]

Пример результата (RDAP):

[{
"registered": 1,
"rdapserver":"https://rdap.verisign.com/com/v1/domain/a-parser.com",
"query":"a-parser.com",
"free_date":"none",
"domains":[
{
"server":"demi.ns.cloudflare.com"
},
{
"server":"vern.ns.cloudflare.com"
}
],
"registrar":"Squarespace Domains II LLC",
"expire_date":"25.02.2027",
"creation_date":"25.02.2012",
"whoisserver":"",
"updated_date":"10.02.2026"
}]
подсказка

Чтобы опции "Начальный текст" и "Конечный текст" были доступны в Редакторе заданий, нужно активировать "Больше опций".

Обработка результатов

A-Parser позволяет обрабатывать результаты непосредственно во время парсинга, в этом разделе мы привели наиболее популярные кейсы для парсера Net::Whois

Получение регистратора домена

При ответе через WHOIS поле $p1.data содержит текст; при RDAP — JSON. Чтобы получить регистратора в обоих случаях, добавьте два Конструктора результатов.

Добавить Конструктор результатов и в выпадающем списке выбрать источник: $p1.data. Выбрать тип: RegEx Match. В поле Регулярка вписать: Registrar:\s*(.+) и сохранить в переменную registrarwhois.

Добавить снова Конструктор результатов и в выпадающем списке выбрать источник: $p1.data. Выбрать тип: RegEx Match. В поле Регулярка вписать: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" и сохранить в переменную registrarrdap.

Добавить в Формат результата: [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — если RDAP не нашёл имя (registrarrdap равен none), выводится значение из WHOIS, иначе из RDAP.

Скачать пример

Как импортировать пример в А-Парсер

eJyVVNtO20AQ/RVrFEQoJioPfbGEqkATiSpNKAH1wU6lVTxJt6x3ze46EEX5987Y
jh1TpKpP9lzPmdvuYIPWSaMhugzBC/fk7iw69A6ieAd5+Q8RWFxL562wEEIurKMg
cohhij6Kfvwy0pEhxZUolIdwB36bI4UZym5limSUKckrYzPhKWnpBhuhCnaLT4Lb
cdBg2FTkwdVVcKqNxtPgZNF7LtBug4ug1/i8MCbFjSbz0fsenIUdpl/InmjYLxYh
VNBuXPIg5F5+OaiLbIxzscEHw2ylwlY9JmkqMubbS4VHtg6qgvpnA//KGUSaSk/d
FKpC4Ca1qI9aPnO9K6EchsCUJbqxNRnl9FhmKOs40IuhqgsoR1EGf69imhyOuI4F
MUnfWqRHK7yxs5wJkX4HRg+VmuAGleuQ2F4XUqU00uGKgm7rwPddZn/l2Df1HUPR
4F8scWiylNL17FsblZqJWTd2JTPpSeFuTKGp9o8hPCHmh57B1FB3MmOxQakDa3Ba
2xw1L1k7smHeqjpVdMZypNyBM4VdEl5M+DRlwa2vl5k2C1/L5PyN4P6waVGSuA/9
wfnZwfhQBZDoDU+xu7Ww2If/BZQAak97hS6BmLCSZL44/5zAZilsOrRWbLv6le7K
vFpdTT/+mQD9nSXwT858R0SZ6C2NXsn1rL7pQxML/UDPxkzfmCxXyBPXhVK0sA7v
28sZunpBWWhn9zb4poQgHs1bQnSMcl/nFbfcSmL3iTlntGPHqHXKpVDq8X5ybOFA
500+0yNr3yx2eTIgLqpHbbCkW2wvs6TKRS7p3teGDpEk7kT9BDZP5Y7W+be7q7Qc
Vur2fwBx19yZ

Возможные настройки

ПараметрЗначение по умолчаниюОписание
Recursive queryПозволяет получить расширенную версию WHOIS
WHOIS serverПозволяет задать свой WHOIS-сервер
RDAP serverПозволяет задать свой RDAP-сервер
Checking by DNSПозволяет проверять зарегистрирован ли домен исходя из существования IP по домену
Checking domains by DNS recordПроверка IP, если находит status ALLOCATED, то определяет домен как зарегистрированный, если опция отключена, то проверка IP не происходит вовсе
Force DNS check for not found domainsПринудительная проверка если домен был определён как не зарегистрированный