« 6月18日 放棄放棄 | メイン | 学会誌をたくさん借りてきた »
2008年06月18日
IANA から TLD の情報を抽出するスクリプト
TLD の組織名や URL を抽出するスクリプトを書きました。Whois Gateway を作成中なのです。数年前にも作成していたのですが、頓挫していました。
use strict;
use warnings;
use LWP::Simple;
my $base = 'http://www.iana.org/domains/root/db/';
my $html = get($base);
my $re =
'<td><a href="/domains/root/db/([\w\.-]+)">([^<]+)</a></td>' .
'<td>([^<]+)</td><td>([^<]+)<';
while ($html =~ /$re/go) {
my $tld = $2;
my $type = $3;
my $org = $4;
my ($url, $whois) = get_tld_info(get($base . $1));
printf("%s\t%s\t%s\t%s\t%s\t\n", $tld, $type, $org, $url, $whois);
sleep 2;
}
sub get_tld_info {
my ($html) = @_;
my $url = '';
my $whois = '';
if ($html =~ m|<b>URL for registration services:</b> <a [^>]+>([^<]+)</a>|) {
$url = $1;
}
if ($html =~ m|<b>WHOIS Server:</b> ([^<]+)<|) {
$whois = $1;
}
return $url, $whois;
}
ご利用は自己責任で…。
作成している Whois Gateway は CPAN の Net::Whois::Raw を利用していますが、拡張性がイマイチです。特に HTTP 経由で情報を取得する TLD を追加する場合、基のソースを弄らないといけない(オーバーライドで一部だけ弄れるのかな)。また、設定されている WHOIS Server が少なかったり古かったり。
パッチファイル作成にチャレンジしてみようかな。
【関連情報】
・IANA — Root Zone Database
http://www.iana.org/domains/root/db/
・Walery Studennikov / Net-Whois-Raw - search.cpan.org
http://search.cpan.org/dist/Net-Whois-Raw/
2008年06月18日 23:41 | Programming