PHP で Whois 情報を取得するコードを書いてみたのですが、そもそも、Whois の仕組みを知らなかったので、まとめておこうと思います。
(1) 問い合わせ先の WhoisServer は、TLD(Top Level Domain)ごとに存在する
(3) 最近?Whois への問い合わせ、1回では情報が取得できないケースがある(連絡先などのメールアドレスなどを含む情報)>Whois Proxy Serve へのアクセスが必要
ということと踏まえつつ、最近、なにかと話題のAIの力を借りでコードを書いてみました。
なお、Whois サーバーへ負荷をかけることはよろしくないので、実際に利用するときは、連続実行しないように利用したいと思います。
※連続してアクセスすると、接続制限を受けることもあるようです。
<?php
function getWhoisInfo($whois_server, $domain)
{
$whois_string = '';
// Whois Server から情報取得
$sock = fsockopen($whois_server, 43);
if (!$sock)
{
die('Whois サーバーにアクセスできませんでした。');
}
fputs($sock, $domain."\r\n");
// whois
while (!feof($sock)) {
$whois_string .= fgets($sock, 128);
}
fclose($sock);
// Whois Server から取得した文字列に、Proxy サーバーの情報が含まれていた場合、再取得
if (strpos($whois_string, 'Registrar WHOIS Server:') !== false) {
preg_match('/Registrar WHOIS Server: (.*)/', $whois_string, $matches);
if (isset($matches[1]))
{
$proxy_server = trim($matches[1]);
$sock = fsockopen($proxy_server, 43);
if (!$sock) {
die('Error: Whois Proxy サーバーにアクセスできませんでした。');
}
fputs($sock, $domain."\r\n");
$whois_string = '';
while (!feof($sock)) {
$whois_string .= fgets($sock, 128);
}
fclose($sock);
}
}
return $whois_string;
}