Я ищу надежный и актуальный список серверов WHOIS для использования в сценарии whois.
Поскольку список часто меняется, было бы неплохо, если бы был ресурс, на который я мог бы ссылаться, вместо того, чтобы часто обновлять скрипт.
Я ищу надежный и актуальный список серверов WHOIS для использования в сценарии whois.
Поскольку список часто меняется, было бы неплохо, если бы был ресурс, на который я мог бы ссылаться, вместо того, чтобы часто обновлять скрипт.
Ответы:
Существует несколько хорошо известных способов определения местоположения whois-серверов для TLD. База данных IANA, вероятно, наиболее близка к тому, о чем просит вопрос, однако существуют и другие источники, которые могут быть более полезны на практике.
Просмотрите http://www.iana.org/domains/root/db или найдите в базе данных whois whois.iana.org
TLD. Каждая запись имеет поле, указывающее сервер Whois .
Пример:
$ whois -h whois.iana.org com
[Querying whois.iana.org]
[whois.iana.org]
% IANA WHOIS server
% for more information on IANA, visit http://www.iana.org
% This query returned 1 object
domain: COM
organisation: VeriSign Global Registry Services
address: 12061 Bluemont Way
address: Reston Virginia 20190
address: United States
contact: administrative
name: Registry Customer Service
organisation: VeriSign Global Registry Services
address: 12061 Bluemont Way
address: Reston Virginia 20190
address: United States
phone: +1 703 925-6999
fax-no: +1 703 948 3978
e-mail: info@verisign-grs.com
contact: technical
name: Registry Customer Service
organisation: VeriSign Global Registry Services
address: 12061 Bluemont Way
address: Reston Virginia 20190
address: United States
phone: +1 703 925-6999
fax-no: +1 703 948 3978
e-mail: info@verisign-grs.com
nserver: A.GTLD-SERVERS.NET 192.5.6.30 2001:503:a83e:0:0:0:2:30
nserver: B.GTLD-SERVERS.NET 192.33.14.30 2001:503:231d:0:0:0:2:30
nserver: C.GTLD-SERVERS.NET 192.26.92.30
nserver: D.GTLD-SERVERS.NET 192.31.80.30
nserver: E.GTLD-SERVERS.NET 192.12.94.30
nserver: F.GTLD-SERVERS.NET 192.35.51.30
nserver: G.GTLD-SERVERS.NET 192.42.93.30
nserver: H.GTLD-SERVERS.NET 192.54.112.30
nserver: I.GTLD-SERVERS.NET 192.43.172.30
nserver: J.GTLD-SERVERS.NET 192.48.79.30
nserver: K.GTLD-SERVERS.NET 192.52.178.30
nserver: L.GTLD-SERVERS.NET 192.41.162.30
nserver: M.GTLD-SERVERS.NET 192.55.83.30
ds-rdata: 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CFC41A5766
whois: whois.verisign-grs.com
status: ACTIVE
remarks: Registration information: http://www.verisign-grs.com
created: 1985-01-01
changed: 2012-02-15
source: IANA
$
Имя tld.whois-servers.net
является CNAME
соответствующим whois-сервером. Несколько непонятно, кто на самом деле поддерживает это, но это кажется довольно популярным, поскольку его очень легко использовать практически с любым клиентом whois (и некоторые клиенты по умолчанию используют этот сервис).
Пример:
$ dig com.whois-servers.net +noall +answer
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-15.P2.fc20 <<>> com.whois-servers.net +noall +answer
;; global options: +cmd
com.whois-servers.net. 600 IN CNAME whois.verisign-grs.com.
whois.verisign-grs.com. 5 IN A 199.7.55.74
$
Многие реестры публикуют адрес своего whois-сервера в DNS непосредственно в соответствующей зоне в виде _nicname._tcp
SRV
записи .
Пример:
$ dig _nicname._tcp.us SRV +noall +answer
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-15.P2.fc20 <<>> _nicname._tcp.us SRV +noall +answer
;; global options: +cmd
_nicname._tcp.us. 518344 IN SRV 0 0 43 whois.nic.us.
$
Я регулярно собираю список из IANA и PSL в XML-файл, включающий в себя whois-сервер, регистратор, домены второго уровня и, если возможно, регулярное выражение для доступности: https://github.com/whois-server-list/whois-server-list
В последнее время я играл с WHOIS и обнаружил, что некоторые из общедоступных пакетов whois (в частности, CentOS jwhois), похоже, полагаются на предварительно упакованные списки серверов TLD WHOIS. Хотя это будет хорошо для большинства ДВУ, это проблема для взрыва эзотерических рДВУ, таких как .horse
.
Надежный метод на 100% состоит в том, чтобы найти домен верхнего уровня на сервере WHOIS IANA whois.iana.org
, проанализировать whois:
запись и затем запросить информацию о домене на этом сервере. Например:
foo@bar:~ $ echo -e "horse\r\n" | nc -i 1 whois.iana.org 43
% IANA WHOIS server
% for more information on IANA, visit http://www.iana.org
% This query returned 1 object
domain: HORSE
[snip]
whois: whois-dub.mm-registry.com
[snip]
Connection closed by foreign host.
А потом:
foo@bar:~ $ echo -e "dord.horse\r\n" | nc -i 1 whois-dub.mm-registry.com 43
Domain Name: dord.horse
Domain ID: 1742946-MMd1
WHOIS Server: whois-dub.mm-registry.com
[snip]
Если вы используете этот метод, вы должны быть вежливы и кэшировать ответы от сервера IANA не менее 48 часов, если не дольше, так как они будут редко меняться, а серверы IANA, как правило, находятся под большой нагрузкой.
Я веду список серверов WHOIS для своей библиотеки Ruby WHOIS по адресу https://github.com/weppos/whois/blob/master/data/tld.json.
Содержит список всех существующих серверов.
Он не содержит ответа, когда домен доступен, потому что библиотека Ruby выполняет анализ на другом уровне. Кроме того, имейте в виду, что не все реестры используют строковые сообщения для сообщения о недоступности домена.
Вы можете использовать этот скрипт для получения серверов whois от IANA. созданный noys. вывод в список зон JSON и серверов whois.
<style>
body {
font: normal 10px verdana, sans-serif;
color: #333;
}
</style>
<?
$zones = array('ac','am','asia','at','be','biz','biz.ua','biz.ua','br.com','bz','cc','ch','co','co.am','co.in','co.ua','co.ua','om','com.am','com.kz','com.ua','cx','cz','de.com','eu','eu.com','firm.in','fm','gen.in','im','in','ind.in','info','io','kiev.ua','kz','la','lc','li','lt','lu','md','me','mn','mobi','ms','mx','name','net','net.am','net.in','org','org.am','org.in','org.kz','ph','pl','pp.ua','pro','pw','pw','ru','ru.com','so','su','su','su','tel','tv','tw','us','uy.com','vc','ws','xxx','za.cm','xn--p1ai');
$count = count($zones);
echo '<h1>Whois tool</h1>';
echo '<pre>
{
';
for($i=0;$i<$count;$i++) {
$root_server = 'whois.iana.org';
$zone = $zones[$i];
$domain = 'nuceti75.'.$zones[$i];
//echo "<h2>$domain - $current_domain</h2>";
$fp = fsockopen($root_server, 43);
if (!$fp) echo "Connection error: $root_server \r\n";
else {
fputs($fp, $zone."\r\n");
while (!feof($fp)) {
$root_answer .= fgets($fp, 128);
}
preg_match("~whois:\s(.+)~i", $root_answer, $result);
$current_server = trim($result[1]);
fclose($fp);
}
//echo "<pre>$root_answer</pre>";
//echo "<b>Whois server for this TLD:</b> $current_server";
$fh = fsockopen($current_server, 43);
if (!$fh) echo "Connection error: $current_server ($zone) \r\n";
else {
fputs($fh, $domain."\r\n");
while (!feof($fh)) {
$current_answer .= fgets($fh, 128);
}
fclose($fh);
}
//echo "<pre>$current_answer</pre>";
echo "\"$zone\": \"$current_server\",\r\n";
unset($root_answer);
unset($current_answer);
unset($result);
}
echo '
}
</pre>';
?>
Вам не нужен список этих. whois (1) достаточно умен, чтобы понять это для вас:
Для справочной страницы:
By default whois constructs the name of a whois server to use
from the top-level domain (TLD) of the supplied (single) argu-
ment, and appending ".whois-servers.net". This effectively
allows a suitable whois server to be selected automatically for a
large number of TLDs.
Whois, как правило, довольно надежный. Я никогда не вспоминаю, как это провалилось для домена.
bet.whois-servers.net
не существует.
whois
клиент вы используете. Не все из них делают это по хорошей или плохой причине. whois-servers.net
до сих пор не является официальным сервисом, просто что-то сделано на случай наилучших усилий.