Что такое RDAP (Registration Data Access Protocol)
Статья также доступна на украинском (перейти к просмотру).
Ежедневно в мире регистрируются миллионы доменных имен и распределяются к ним и распределяются миллионы IP-адресов. Интернет регулируется так, что к каждому из них есть регистрационные данные, то есть информация о том, кто, когда регистрировался, и за что отвечает. Эта информация хранится в специальных базах данных.
При поиске по домену RDAP обычно предоставляет сведения о:
-
Регистранта (Registrant) – организацию или физическое лицо, на которое зарегистрирован домен (иногда данные могут быть скрыты из-за защиты конфиденциальности WHOIS/RDAP);
-
Контактные данные – email, телефон, почтовый адрес (если не скрыты);
-
Регистратора (Registrar) – компанию, по которой был зарегистрирован домен;
-
Дата домена:
- created — дата регистрации;
- updated — дата последнего изменения;
- expires — дата окончания регистрации.
-
Name servers (DNS-серверы) – серверы, обслуживающие домен;
Статусы домена (Domain Status) – активный, заблокированный, на удаление, на передачу и т.п. (например, ok, clientTransferProhibited, serverHold);
Контакты – административный, технический, иногда бухгалтерский или злоупотреблений (abuse) контакт.
Для IP-адресов RDAP-запрос обычно содержит сведения о:
-
Организацию-собственника (Org/Maintainer) – кому выделен этот диапазон IP-адресов (интернет-провайдер, дата-центр, хостинг или корпоративная сеть);
-
Тип организации – например, ISP, Hosting Provider, End-User Organization;
-
Диапазон IP-адресов (inetnum / inet6num) – границы блока, к которому относится конкретный IP-адрес;
-
ASN (номер автономной системы) – номер автономной системы, если блок привязан к определенной AS;
-
Географическое расположение – страна, регион, иногда город (зависит от точности данных в RIR);
-
Контактная информация – технические, административные или злоупотребления (abuse) контакты для связи;
-
Дата регистрации/обновления – когда блок был создан или изменен (опционально, не все RIR отображают).
Системным администраторам эти данные необходимы для настройки сетей, специалистам по кибербезопасности – для расследования инцидентов и обнаружения вредоносных активностей, а бизнес-аналитикам – для исследования рынка и проверки доступности доменов. Но как получить доступ к этой информации? Для этого используются специальные протоколы.
Что такое протокол WHOIS
WHOIS (от англ. Who is? – Кто это?) – это один из старейших протоколов Интернета, который был создан еще в 1982 году. Он разрабатывался как простой инструмент для поиска контактной информации о людях и организациях, использующих сетевые ресурсы.
Принцип работы WHOIS
Протокол использует TCP-соединение на порте 43 и базируется на текстовом формате обмена данными. Процесс запроса выглядит следующим образом:
-
Клиент устанавливает TCP-соединение с WHOIS-сервером на порту 43;
-
Отправляет текстовый запрос (например, название домена или IP-адрес), завершенный символом новой строки;
-
Сервер обрабатывает запрос и возвращает всю доступную информацию посредством неструктурированного текста;
-
Соединение закрывается.
Протокол был популярен десятилетиями из-за его простоты в реализации как на стороне сервера, так и на стороне клиента. Не требуется сложных библиотек или парсеров, достаточно базовых возможностей работы с TCP-сокетами. Такое решение также было очень универсальным. WHOIS работает практически с любыми сетевыми ресурсами: доменами всех уровней (.com, .org, национальные домены), IP-адресами (IPv4 и IPv6), автономными системами (ASN).
Но протокол не пережил эволюции Интернета – с развитием технологий и ужесточением требований к защите данных он оказался уже не таким привлекательным способом получить нужные данные. В первую очередь пользователям не нравились:
-
отсутствие стандартизации ответов;
-
проблемы с автоматизацией обработки данных;
-
отсутствие поддержки международных символов (IDN);
-
невозможность надежной аутентификации;
-
несоответствие современным нормам конфиденциальности, таким как GDPR.
Именно поэтому ему на смену пришел RDAP– протокол, который разрабатывался с целью разрешить проблемы предшественника.
Что такое протокол RDAP и как он работает
Название протокола RDAP (Registration Data Access Protocol) четко отображает его назначение: предоставлять структурированный доступ к информации о регистрации доменов, IP-адресов и автономных систем. Он имеет тот же базовый функционал, что и WHOIS, но делает процесс гораздо более эффективным, безопасным и удобным для современных потребностей.
Работа над его созданием началась в 2010-х в Инженерном совете Интернета (IETF). А уже с 2015 года протокол активно внедряется реестрами и регистраторами по всему миру. ICANN (Internet Corporation for Assigned Names and Numbers) официально рекомендует переход на RDAP, и многие большие реестры уже оказывают его полноценную поддержку.
RDAP базируется на HTTP/HTTPS и JSON-формате выдачи, что делает его гораздо более удобным для представления регистрационных данных. Работа с ним выглядит так:
-
Клиент (например, браузер или RDAP-клиент) присылает HTTP/HTTPS-запрос к RDAP-сервера реестра или регистратора Обычно он имеет структуру типа: https://<rdap-server>/<object-type>/<query-value>,
например https://rdap.example.net/domain/example.com. То есть в URL указывается тип объекта (domain, ip, пустой,сервер имен, entity) и сам объект для поиска.
-
Сервер находит соответствующую запись в своей базе и формирует структурированный ответ в JSON-формате.
Поскольку разные реестры отвечают за разные домены/адреса, RDAP использует систему bootstrapping, определенную IANA (Internet Assigned Numbers Authority). Клиент может сначала обратиться к специальному начальная загрузка сервера, чтобы узнать, какой именно RDAP-сервер обслуживает запрошенную зону (.com, .ua, .org и т.п.).

Главную роль в процессе играет структурированный ответ в формате JSON, которая легко читается машиной.Каждый ответ содержит набор обязательных и опциональных полей, определенных спецификацией RFC 7483. Основными элементами RDAP-ответа о регистрационных данных являются следующие блоки.
$ curl https://rdap.apnic.net/ip/61.135.157.156
{
"handle" : "61.135.0.0 - 61.135.255.255",
"startAddress" : "61.135.0.0",
"endAddress" : "61.135.255.255",
"ipVersion" : "v4","name" : "UNICOM-BJ","type" : "ALLOCATED PORTABLE","country" : "CN","objectClassName" : "ip network","entities" : [ {"handle" : "CH1302-AP","vcardArray" : [ "vcard", [ [ "version", {}, "text", "4.0" ],[ "fn", {}, "text", "C" ],[ "label", "No.21,Jin-Rong Street\\nBeijing,100033\\nP.R.China" ]] ]} ]...}
Базовые поля объекта
{
"objectClassName": "domain",
"handle": "EXAMPLE-COM",
"ldhName": "example.com",
"unicodeName": "example.com"
}
Базовые поля объекта содержат:
-
objectClassName – тип объекта (domain, ip network, пустой, сущность, сервер имен);
-
handle – уникальный идентификатор объекта в реестре;
-
ldhName – имя в LDH-форме (Letters, Digits, Hyphen) для доменов;
-
unicodeName – Unicode-представление (для интернационализированных доменов).
События
Они указывают на важные даты: регистрацию, последнее изменение, срок действия и т.д.
Статусы
[ "active", "client transfer prohibited", "server delete prohibited" ]
Отображают текущее состояние объекта. Основные статусы:
-
active –активный;
-
inactive –неактивный;
-
locked –заблокирован;
-
pending delete – ожидает удаление;
-
client/server transfer prohibited – запрет передачи данных.
Связанные сущности
[
{
"objectClassName": "entity",
"handle": "EXAMPLE-REG",
"roles": ["registrant"],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Example Corporation"],
["email", {}, "text", "contact@example.com"]
]
]
}
]
Эти данные описывают организации и лиц, связанных с объектом:
-
registrant – владелец;
-
administrative – административный контакт;
-
technical – технический контакт;
-
billing – контакт для биллинга (автоматизированной системы расчетов);
-
registrar – регистратор.
Контактная информация сохраняется в формате vCard (RFC 6350).
Name servers (актуально для доменов)
[
{
"objectClassName": "nameserver",
"ldhName": "ns1.example.com",
"ipAddresses": {
"v4": ["192.0.2.1"],
"v6": ["2001:db8::1"]
}
}
]
Обработка ошибок
Поскольку в протоколе используется HTTP/S, то и коды статуса представляются стандартизированными. Запрос RDAP может выдать:
-
200 OK – успешно;
-
404 Not Found – объект не найдено;
-
400 Bad Request – неверный формат запроса;
-
429 Too Many Requests – превышен предел запросов;
-
500 Internal Server Error – ошибка сервера;
-
403 Forbidden – доступ запрещен.
При ошибках сервер может вернуть JSON с подробной информацией, почему так произошло.
Ключевые преимущества над WHOIS
Поскольку протокол RDAP является «работой над ошибками» своего предшественника, то ему присущи значительные преимущества над WHOIS.
Стандартизированный формат результата
Это самое удобное преимущество, ведь вместо произвольного текста, который каждый реестр форматировал по своему усмотрению, RDAP выдает ответ в JSON. Здесь у каждого поля четко определенное название, тип и структура.
Его легко парсить на любом современном языке программирования без необходимости писать сложные регулярные выражения для каждого реестра отдельно. Это рождает легкое управление результатами (paging/sorting), возможность автоматизации запросов и высокая совместимость с приложениями.
RESTful API
Протокол RDAP построен на принципах REST (Representational State Transfer) и использует стандартный HTTP/HTTPS протокол (а следовательно и безопасное соединение TLS) вместо специализированного порта 43. Поэтому он может пользоваться стандартными веб-механизмами:
-
аутентификацией;
-
авторизацией;
-
редиректорами;
-
пагинацией;
-
кэшированием.
У WHOIS такого функционала нет. RDAP позволяет легко интегрироваться с существующей веб-инфраструктурой, не открывая дополнительных портов в файерволах.
Интернационализация: поддержка Unicode и разных языков
WHOIS был ограничен ASCII-символами, что создавало проблемы с доменами на кириллице, китайском, арабском и других языках. Нативная поддержка Unicode (UTF-8) в RDAP позволяет корректно отображать:
-
интернационализированные доменные имена в международных символах (IDN);
-
контактную информацию на любых языках;
-
названия организаций в национальных алфавитах
Кроме того, многоязычие поддерживается через механизм альтернативных представлений одних и тех же данных на разных языках.
Безопасность: обязательное шифрование
В отличие от WHOIS, передающего данные открытым текстом, RDAP требует использования HTTPS. Это гарантирует шифрование и уменьшение возможностей перехвата информации. Соединение не происходит, если подлинность сервера не подтверждена через SSL/TLS сертификаты.
Также протокол RDAP соответствует GDPR (Общему регламенту о защите данных), введенному в 2018 году. А вот WHOIS показывал персональные данные всем без разбора, в нарушение европейского законодательства.
Аутентификация: возможность контроля доступа к данным
RDAP поддерживает различные механизмы аутентификации, что позволяет дифференцированный доступ к данным. На нем можно реализовать:
-
анонимный доступ;
-
API ключи и OAuth 2.0;
-
ролевой доступ (RBAC);
-
rate limiting с дифференциацией.
Это невозможно было в WHOIS из-за его примитивной архитектуры.
Примеры CURL-запросов к RDAP для получения данных по доменам и IP адресам
Как это реализуется на практике? Самым простым способом получить нужные данные является использование RDAP через командную строку. Базовая команда – это curl. Часто используют публичный редиректор (он перенаправит запрос на авторитетный RDAP-сервер):
# Пример: домен curl -Ls -H "Принять: application/rdap+json" "https://rdap.org/domain/example.com" |jq # Пример: IP-адрес curl -Ls -H "Принять: application/rdap+json" "https://rdap.org/ip/8.8.8.8" |jq Но запрос RDAP можно выполнить и напрямую, сразу обращаясь к региональному/авторитетному серверу: # RIPE (пример IP) curl -s "https://rdap.db.ripe.net/ip/2001:67c:2e8::1" |jq # DENIC (домены DE) curl -s "https://rdap.denic.de/domain/example.de" |jq
Здесь -L – следовать редиректам, -s (silent) – не показывать прогресс загрузки, -S (show errors) – показывать ошибки, если они есть,
jq – удобное форматирование/фильтрация JSON.
Среди других вариантов запроса RDAP:
-
проверка статуса домена:
curl -s "https://rdap.org/domain/google.com" |jq'.status, .events[] | select(.eventAction=="expiration")'
-
получение информации о IP-адрес–найти, к какому региональному интернет-реестру (RIR) принадлежит IP и кто владелец блока:
curl -s "https://rdap.org/ip/8.8.8.8" |jq'.handle, .name, .country'
-
обнаружение изменений:
curl -s "https://rdap.org/domain/example.com" -o current.json
diff previous.json current.json
RDAP – это современный, безопасный и стандартизированный протокол доступа к регистрационным данным, постепенно вытесняемый устаревшим WHOIS. Благодаря использованию HTTP(S) и формата JSON он обеспечивает удобную интеграцию с веб-сервисами, автоматизацию проверок доменов и IP-адресов, а также лучшую защиту персональных данных.


