답변:
TLD를위한 whois 서버를 찾는 방법은 잘 알려져 있지만 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-server 의 이름 입니다 . 누가 실제로 이것을 유지하는지는 불분명하지만 거의 모든 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
$
많은 등록 기관이 관련 영역에서 DNS로 WHOIS 서버 주소를 _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 의 목록을 whois 서버, 등록 기관, 2 차 도메인 및 가능한 경우 가용성에 대한 정규식을 포함한 XML 파일로 컴파일합니다 . https://github.com/whois-server-list/whois-server-list
나는 최근 WHOIS와 함께 놀고 있었고 공개적으로 사용 가능한 whois 패키지 (즉, CentOS의 jwhois) 중 일부는 사전 패키지 된 TLD WHOIS 서버 목록에 의존하는 것으로 나타났습니다. 이것은 대부분의 TLD에서 괜찮을 것 같지만, 난해한 gTLD 폭발과 같은 문제입니다 .horse
.
100 % 신뢰할 수있는 방법은 IANA의 WHOIS 서버에서 TLD 를 조회 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 서버는 거의 변경되지 않고 IANA 서버의 부하가 큰 경향이 있기 때문에 48 시간 이상 동안 IANA 서버의 응답을 정중하고 캐시해야합니다.
https://github.com/weppos/whois/blob/master/data/tld.json 에서 Ruby WHOIS 라이브러리에 대한 WHOIS 서버 목록을 유지 관리합니다.
기존의 모든 서버 목록이 포함되어 있습니다.
Ruby 라이브러리는 다른 레벨에서 구문 분석을 수행하기 때문에 도메인을 사용할 수있을 때 응답을 포함하지 않습니다. 또한 모든 레지스트리가 문자열 메시지를 사용하여 도메인의 사용 불가능 성을 알리는 것은 아닙니다.
이 스크립트를 사용하여 IANA에서 WHOIS 서버를 가져올 수 있습니다. noys에 의해 chreated. 영역 및 WHOIS 서버의 JSON 목록에 출력됩니다.
<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
여전히 공식적인 서비스가 아니라 최선의 노력으로 수행 된 것입니다.