Я пишу короткий сценарий для запроса доменных имен с соответствующих серверов whois — в то время как в большинстве случаев, хотя TCP-соединение через порт 43, похоже, работает для большинства серверов whois, запросы к whois.markmonitor.com
, похоже, завершаются с ошибкой. с надписью Неверный запрос.
Вот основные элементы того, что я использую:
#!/usr/bin/perl
#whois.pl
use strict;
use IO::Socket;
my $domain_name = "google.com";
my $query_socket = new IO::Socket::INET(
PeerAddr => 'whois.iana.org',
PeerPort => 43,
Proto => 'tcp');
print $query_socket "$domain_name ";
print $query_socket "\n\r";
while(my $this_line = <$query_socket>) {
print $this_line;
}
close($query_socket);
Как видно выше, используется сервер whois whois.iana.org
; это также работает, как и ожидалось, с whois.internic.net
. Только в случае whois.markmonitor.com
видна следующая ошибка:
$ perl whois.pl
Invalid query
Может ли кто-нибудь помочь пролить больше света на то, как я могу получить более подробный вывод, чтобы проверить, есть ли какие-либо ошибки в запросе, который отправляется на сервер?
В качестве дополнительного теста обычное соединение через telnet
работает, как и ожидалось, как показано ниже:
$ telnet whois.markmonitor.com 43
Trying 64.124.14.21...
Connected to whois.markmonitor.com.
Escape character is '^]'.
google.com
Domain Name: google.com
Registry Domain ID: 2138514_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar URL: http://www.markmonitor.com
Updated Date: 2015-06-12T10:38:52-0700
Creation Date: 1997-09-15T00:00:00-0700
......<output truncated>......
что наводит меня на мысль, что фактические подключения к серверу через порт 43 принимаются на стороне сервера.
"$domain_name "
- person wnrph   schedule 29.11.2015\r\n
- person Sobrique   schedule 29.11.2015