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

Данные о домене собираются через RDAP (HTTP, JSON) или WHOIS (порт 43) — в зависимости от доменной зоны. Для каждого TLD в парсере заданы RDAP- и WHOIS-серверы; если для зоны доступен RDAP, запрос выполняется через него в первую очередь, при ошибке — на WHOIS.
Подробнее: RDAP (англ.), WHOIS.
Функционал A-Parser позволяет сохранять настройки парсинга для дальнейшего использования (пресеты), задавать расписание парсинга и многое другое. Вы можете использовать автоматическое размножение запросов, подстановку подзапросов из файлов, перебор цифро-буквенных комбинаций и списков для получения максимально возможного количества результатов.
Сохранение результатов возможно в том виде и структуре которая вам необходима, благодаря встроенному мощному шаблонизатору Template Toolkit который позволяет применять дополнительную логику к результатам и выводить данные в различных форматах, включая JSON, SQL и CSV.
Кейсы по применению парсера
🔗 Выбираем произвольные данные
Net::Whois выбираем произвольные данные
🔗 Параметры доменов
Получение параметров по доменам
🔗 Уведомление о сроках доменов
Получаем уведомления в Telegram об окончании срока регистрации доменов
🔗 Сбор базы e-mail адресов
Пресет позволяет собирать e-mail адреса доменов, через сервис Whois.
Собираемые данные
- Зарегистрирован домен или нет
- Дата окончания регистрации домена
- Когда зарегистрирован домен
- Дата последнего обновления записи
- 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 | ☑ | Принудительная проверка если домен был определён как не зарегистрированный |