whois - протокол и одноимённая команда для запроса регистрационных данных. По домену она показывает регистратора, даты регистрации и окончания, DNS-серверы. По IP-адресу - какой организации выделена сеть и куда жаловаться на спам или атаки с этого адреса.

Установка

В macOS команда уже есть. В Linux её иногда приходится поставить:

bash
sudo apt install whois     # Debian, Ubuntu
sudo dnf install whois     # Fedora, RHEL и родственные
sudo pacman -S whois       # Arch

В Windows встроенной команды нет. Есть два простых варианта: утилита Whois из набора Sysinternals от Microsoft (скачивается с сайта Microsoft, запускается как whois64 example.com) или запрос по протоколу RDAP из PowerShell - о нём ниже.

Данные о домене

bash
whois example.com

Команда сама находит нужный сервер: сначала спрашивает реестр доменной зоны, а для некоторых зон - ещё и сервер регистратора. В ответе стоит смотреть на несколько полей:

  • Registrar - компания, через которую зарегистрирован домен. К ней обращаются по вопросам продления и переноса.
  • Creation Date - дата регистрации. Совсем свежий домен у «известного банка» - повод насторожиться.
  • Registry Expiry Date или paid-till - до какого числа оплачен домен.
  • Name Server - DNS-серверы домена.
  • Domain Status - статусы вроде clientTransferProhibited (перенос к другому регистратору запрещён, обычная защита) или redemptionPeriod (домен не продлён и вот-вот освободится).
  • Registrant - владелец. У частных лиц эти данные почти всегда скрыты: вместо имени будет пометка вроде «REDACTED FOR PRIVACY» или «Private Person». Связаться с владельцем в таком случае можно только через форму регистратора.

У разных зон свой формат ответа. Например, для доменов .ru и .рф поля называются registrar, created, paid-till, free-date.

Данные об IP-адресе

Сетка адресов с выделенным диапазоном, сервер и карта с меткой

bash
whois 203.0.113.10

IP-адреса распределяют пять региональных регистратур: RIPE NCC (Европа, Ближний Восток, Центральная Азия), ARIN (Северная Америка), APNIC (Азия и Тихоокеанский регион), LACNIC (Латинская Америка) и AFRINIC (Африка). whois обращается к нужной и показывает запись о сети, в которую входит адрес:

  • inetnum или NetRange - диапазон адресов;
  • netname, descr, org - кому выделена сеть: провайдеру, хостингу, компании;
  • country - страна регистрации сети (это не обязательно место, где стоит сервер);
  • abuse-mailbox или OrgAbuseEmail - адрес для жалоб.

Последнее поле - самое практичное. Если с какого-то адреса идёт перебор паролей или спам, жалобу с логами отправляют именно на abuse-адрес владельца сети.

По номеру автономной системы можно узнать, какой организации принадлежит сеть целиком:

bash
whois AS64500

Запрос к конкретному серверу

Ключ -h указывает, какой whois-сервер спрашивать:

bash
whois -h whois.ripe.net 203.0.113.10
whois -h whois.verisign-grs.com example.com

Это нужно, если автоматический выбор сервера ошибся, или чтобы получить ответ напрямую из реестра, без посредников. Адрес whois-сервера любой доменной зоны можно узнать у IANA:

bash
whois -h whois.iana.org ru

В ответе строка whois: укажет сервер реестра.

RDAP - современная замена whois

У классического whois нет единого формата: каждый сервер отвечает текстом в своём виде, и разбирать его в скриптах неудобно. Поэтому реестры перешли на протокол RDAP: те же данные, но в JSON по HTTPS.

В Linux и macOS:

bash
curl -s https://rdap.verisign.com/com/v1/domain/example.com

В PowerShell:

powershell
Invoke-RestMethod https://rdap.verisign.com/com/v1/domain/example.com

Для IP-адресов есть RDAP-серверы региональных регистратур, например:

bash
curl -s https://rdap.db.ripe.net/ip/203.0.113.10

Если не хочется разбираться с адресами серверов, ICANN предлагает официальный веб-поиск по доменам на lookup.icann.org - он работает через RDAP.

Ограничения

  • Серверы whois ограничивают частоту запросов. Если отправлять их пачками в скрипте, сервер начнёт отказывать или временно заблокирует ваш адрес.
  • Данные о владельцах частных доменов почти всегда скрыты, и это нормально.
  • По IP-адресу whois показывает, кому выделена сеть, а не кто конкретно пользуется адресом. Для адресов провайдеров и хостингов это провайдер или хостинг, а не их клиент.