Много лет, чтобы узнать, кому принадлежит домен, когда он зарегистрирован и когда истекает, пользовались службой WHOIS. Этот протокол появился на заре интернета и отвечал требованиям того времени, но сегодня его недостатки ощущаются всё сильнее. На смену ему пришёл новый протокол RDAP (Registration Data Access Protocol), и в международных gTLD-зонах он теперь считается основным источником данных. Разберём, что такое RDAP, чем он отличается от WHOIS и как использовать его на практике.
Почему WHOIS устарел
Классический WHOIS — очень простой протокол на порту 43: клиент отправляет имя домена, сервер возвращает обычный текст. Проблема в том, что у этого текста нет единого стандартного формата. Каждый реестр и каждый поставщик называет поля по-своему, по-разному пишет даты и выводит данные в разном порядке. В итоге для надёжного разбора ответа WHOIS программой приходилось писать отдельный парсер почти для каждой зоны.
Кроме того, WHOIS работает без шифрования, не умеет идентифицировать пользователя и разграничивать права доступа, а поддержка нелатинских символов ограничена. Когда требования к защите персональных данных ужесточились, понадобилось управлять тем, какие поля кому показывать, а WHOIS для этого не был приспособлен.
Как работает RDAP
RDAP стандартизирован IETF в серии документов RFC и опирается на обычные веб-технологии. Запрос отправляется по HTTPS в виде привычного URL, а ответ возвращается в формате JSON со строго определённой структурой. То есть статус домена, NS-серверы, даты регистрации и окончания всегда находятся в полях с одинаковыми названиями, и их легко прочитать на любом языке программирования.
# старый способ: текстовый WHOIS (порт 43)
whois example.com
# новый способ: RDAP (HTTPS + JSON)
curl -sL https://rdap.org/domain/example.com | jq .
Ещё одна важная часть RDAP — механизм bootstrap. Адрес RDAP-сервера для каждой зоны хранится в общем списке, который публикует IANA, поэтому клиент сам может определить, к какому серверу обращаться. Сервисы вроде rdap.org как раз на основе этого списка перенаправляют запрос на нужный сервер. Можно прочитать список и напрямую, чтобы найти адрес сервера для нужной зоны.
# найти RDAP-сервер зоны .com в списке IANA
curl -s https://data.iana.org/rdap/dns.json \
| jq -r '.services[] | select(.[0] | index("com")) | .[1][0]'
# есть ли зона в списке (пустой ответ = RDAP не объявлен)
curl -s https://data.iana.org/rdap/dns.json \
| jq -r '.services[] | select(.[0] | index("uz")) | .[1][0]'
Сравнение WHOIS и RDAP
| Аспект | WHOIS | RDAP |
|---|---|---|
| Транспорт | порт 43, без шифрования | HTTPS, с шифрованием |
| Формат ответа | свободный текст, разный в разных зонах | стандартный JSON |
| Поиск сервера | вручную или по готовым спискам | bootstrap-список IANA |
| Права доступа | одинаковы для всех | поддерживает разные уровни доступа |
| Международные символы | ограниченно | полная поддержка |
Как достать нужные данные из JSON
Полный ответ RDAP может быть довольно длинным, но с помощью jq из него легко выбрать только нужные поля. Следующая команда выводит статус домена, список NS-серверов и даты таких событий, как регистрация, последнее изменение и окончание срока.
# статус, NS-серверы и ключевые даты
curl -sL https://rdap.org/domain/example.com \
| jq '{status, ns: [.nameservers[].ldhName], events: [.events[] | {eventAction, eventDate}]}'
Практический пример: небольшая веб-студия в Ташкенте обслуживает сайты десятков клиентов и каждый месяц вручную проверяла, у каких доменов подходит срок. Поскольку ответы WHOIS были в разных форматах, автоматизировать это было сложно. После перехода на RDAP студия одним простым скриптом получает даты окончания всех международных доменов в едином виде и заранее напоминает клиентам о продлении.
#!/bin/sh
# вывести даты окончания доменов клиентов
for d in example.com example.net; do
exp=$(curl -sL "https://rdap.org/domain/$d" \
| jq -r '.events[] | select(.eventAction=="expiration") | .eventDate')
echo "$d $exp"
done
Персональные данные и скрытые поля
В ответе RDAP имя, адрес или телефон владельца домена часто не видны. Это не ошибка: из-за правил защиты персональных данных многие реестры и поставщики удаляют такие поля из публичного ответа или помечают их как скрытые. Протокол RDAP позволяет выдавать разным пользователям разный объём данных, но доступ к полной информации обычно предоставляется только при наличии законного основания и в отдельном порядке.
Для владельца домена это хорошая новость: личный телефон и почта реже попадают к спамерам и мошенникам. В кабинете sayt.uz можно посмотреть данные своего домена и управлять настройкой скрытия данных WHOIS. А когда нужно доказать право владения, правильнее опираться не на публичный ответ RDAP, а на официальные данные в кабинете.
Национальные зоны и ситуация с .uz
Обязательный переход на RDAP касается в первую очередь международных gTLD-зон, работающих по договору с ICANN: в них RDAP стал основным источником с начала 2025 года. Национальные зоны определяют свою политику самостоятельно, поэтому в одних RDAP уже работает, а в других по-прежнему доступен только классический WHOIS. Для зоны .uz RDAP-сервер объявлен в списке IANA, то есть вторая команда выше для .uz возвращает не пустой ответ, а адрес сервера. Значит, данные доменов .uz можно запрашивать тем же способом, что и международных.
curl -sL https://rdap.org/domain/example.uz | jq '{status, events}'
# посмотреть HTTP-код ответа (404 = домен не найден)
curl -sL -o /dev/null -w "%{http_code}\n" https://rdap.org/domain/example.uz
Если запрошенный домен не зарегистрирован, RDAP-сервер обычно возвращает код 404, поэтому команда пригодится и для быстрой проверки занятости имени. Но окончательную проверку перед покупкой всё равно лучше делать на странице поиска у поставщика услуг. Для других национальных зон сначала загляните в список IANA: если зоны в нём нет, её данные нужно смотреть через WHOIS-службу зоны или в кабинете поставщика доменных услуг.