Как я могу получить из консоли информацию о дате истечения срока действия домена для европейских доменов, например .eu
, .de
, .sk
?
Для .com
домены, которые я просто использую whois example.com
, но для европейских доменов я получаю только краткую информацию без даты (например, NOT DISCLOSED!
для .eu
домены)
В качестве альтернативного решения я нашел платный веб-сервис www.whoisxmlapi.com, но он тоже ограничен (и я ищу решение для некоммерческих проектов).
У вас должна быть возможность получить whois практически для любого домена, на самом деле существуют правила, чтобы убедиться, что это так. Но очевидно, что так бывает не всегда. Чтобы правильно использовать whois из командной строки, вы должны сначала:
1) подключитесь к whois с помощью переключателя -h с одним из серверов в этом списке:
http://www.nirsoft.net/whois_servers_list.html
ПРИМЕЧАНИЕ: каждое окончание / tld имеет одного «главного регистратора»
2) То, что вы получите взамен, будет включать поле, в котором будет указан адрес Whois-сервера регистратора, на котором фактически зарегистрирован домен.
ПРИМЕЧАНИЕ: Вы можете получить полную регистрационную информацию только от регистратора, у которого фактически зарегистрирован домен.
Если вы запустите:
$ whois google.com
Он попытается сделать это за вас в фоновом режиме (насколько я понимаю), но в зависимости от системы и версии whois он часто не справляется с этой задачей, а также может быть подвержен ограничению скорости.
Ниже приведен быстрый пример кода для "правильного" выполнения whois. Я тестировал его на большом количестве сайтов, и он позволяет избежать обычных проблем с ограничением скорости и возвращает гораздо более высокий уровень «полного результата», чем любой другой метод, который я пробовал.
TLD=$(echo $DOMAIN | cut -d. -f2-)
WHOIS=$(grep -w ^$TLD whois_server.txt | cut -d ' ' -f2)
timeout 2 whois -h $WHOIS "domain "$DOMAIN"" | grep " " | grep -v "Status:" | tr ':' '=' | tr -d ' ' | tr '[a-z]' '[A-Z]' > whois.bash
REGIST=$(cat whois.bash | grep WHOISSERVER | cut -d= -f2)
timeout 2 whois -h $REGIST $DOMAIN | grep : | grep -w '^Admin City\|^Admin Country\|^Registrant Organization\|^Registrant Name' | tr [a-z] [A-Z] | sed 's/\ /_/' | sed 's/:/=("/' | tr -d ' ' | sed 's/$/")/' | tr '/' '_' >> whois.bash;
Вот онлайн-служба whois, которая сработала (отображается дата истечения срока действия) для доменного имени .eu: https://whois.eurid.eu/en/?domain=demosphere.eu
У большинства ccTLD (.de и .eu тоже) дата истечения срока действия не отображается при запуске whois, в то время как .sk - один из тех, которые имеют. Единственное решение, пока эта политика не изменится, - это использовать api для получения полного Whois из веб-интерфейса в этом национальном реестре. Здесь вы можете найти список с доступной информацией whois для большинства ccTLD: http://linuxmafia.com/pub/linux/network/domain-check-testdata
Как видите, большинство серверов whois ccTLD не возвращают даты истечения срока действия.