作成日:2004年01月02日、更新日:2004年01月10日 作成:鷹の巣

Meta-WhoisのCGIであるCGI倶楽部さんのimWHOISを改造したimWHOIS改のデータを自動生成する方法について説明します。


imWHOIS改(高性能Meta-Whois)用データ自動生成スクリプト

前節では、Meta-WhoisのCGIであるCGI倶楽部さんのimWHOISで使用しているデータを最新版に自動更新する方法について説明しました。前節の自動更新は、公開データである「IPv4アドレス-WHOISサーバ対応リスト(rirs_a.list)」と「国コード-WHOISサーバ対応リスト(tld_a.list)」を自動ダウンロードする方式でした。このWebページでは、自サイトに自動更新スクリプトを設置して、直接上記の公開データと同じWHOISサーバーのリストを生成する方法を紹介します。(Perlのスクリプトが実行出来る環境にあるものとしています。)
ご注意)
このスクリプトは、通常プロバイダのCGIには、設置できません。これは、スクリプトがWebクライアント(ブラウザ)として振舞うため、プロバイダ側のパケットフィルタリングにより阻止されるからです。この様な場合には、CGIでは全くエラーが表示されませんし、データも正しく生成されないという結果になります。

目次

  1. まえがき
  2. 公開Whoisサーバーリスト(tld.listとrirs.list)の更新方法
  3. 公開Whoisサーバーリスト(tld.listとrirs.list)の自動作成スクリプトの設定と実行例
  4. あとがき
  5. この頁の更新履歴
  6. 謝辞

1. まえがき

前節のあとがきに述べました様に前節の方式では、ダウンロード先のサーバーであるwhois.sakaguch.comがダウンしているとデータが更新出来ません。この不安を払拭するためにも、自サイトで、これらのデータを作成する手段が講じておくのが、このWebページの目的です。要は、サービスの提供を自立させ、Meta-Whois Gatewayサービスと同じサービスを提供出来るということです。逆に言えば、検索窓を設置して、このMeta-Whois GatewayサービスのCGIが悲鳴を上げる様な検索数の多いサイトには、このWebページを読んで頂き、ミラーサイトを構築して頂くことを御願いすることも視野に入れています。

2. 公開Whoisサーバーリスト(tld.listとrirs.list)の更新方法

imWHOISに使用されているデータのIPv4アドレス-WHOISサーバ対応リスト(rirs.list)と国コード-WHOISサーバ対応リスト(tld.list)の一般的な更新方法は、以下の様になります。

  1. 国コード-WHOISサーバ対応リスト(tld.list)の作成方法

    IANA | Generic Top-Level Domainsをダウンロードし、gTLDのwhoisサーバーやURLをtld.listに書き出す。また、IANA | Root-Zone Whois Index by TLD Codeをダウンロードし、ccTLDのwhoisサーバーやURLをtld.listに書き出す。

    country code TLD world mapに記載されている様に200個近くある国コード毎にWebページが存在するので、処理時間は、2~3分程要します。

  2. IPv4アドレス-WHOISサーバ対応リスト(rirs.list)の更新方法

    IPアドレスの元締めであるIANA | Abuse Issues and IP AddressesINTERNET PROTOCOL V4 ADDRESS SPACEをダウンロードし、gTLDのwhoisサーバーやURLをrirs.listに書き出す。JPNICのデータベースJPNIC管理下でAPNICが逆引きの管理を行っているIPアドレスJPNICが逆引きの管理を行っているIPアドレス(2003年3月12日現在)のJPNICのデータは、無視します。

まとめますと、以下のURLに記載されている内容

より、Whoisサーバーのデータを自動取得します。(Meta-Whois Gatewayサービスでは、日本標準時で毎週月曜日午前5時から所要時間2~3分で、更新しています。)
更新後の最新版のデータは、「国コード-WHOISサーバ対応リスト(tld_a.list)」と「IPv4アドレス-WHOISサーバ対応リスト(rirs_a.list)」で公開しているものと同じものが出来ます。

3. 公開Whoisサーバーリスト(tld.listとrirs.list)の自動作成スクリプトの設定と実行例

imWHOISに使用されているデータ(tld.listとrirs.list)を前項のWebページから取得し、自動生成するPerlスクリプトのimWHOISデータ自動更新プログラム(IO::Socketモジュール使用例)(右クリックして保存)を作成しました。このスクリプトを起動するには、インターネット上のWebページが閲覧出来る環境になければなりません。200頁近いWebページを読みに行くので、ADSL1.5Mの環境下では、最大5分程度の処理時間が必要となります。

このスクリプトを起動する前にスクリプト内の基本設定部分のファイル名を絶対パス表記ファイル名で設定して下さい。以下の例では、元々あったtld.listrirs.listの同じディレクトリにtld_a.listrirs_a.listを自動作成する様に設定しています。

MakeImWhoisList.plの設定例

#■□■ 基本設定 ■□■
$file_rirs = 'D:\www\cgi-lib\whois\rirs_a.list';    # imWHOISのrirs.listの絶対パス表記ファイル名
$file_tld  = 'D:\www\cgi-lib\whois\tld_a.list';     # imWHOISのtld.listの絶対パス表記ファイル名
#■□■ 基本設定終わり ■□■

下記にこのスクリプトの実行例を示します。画面では、水色がコマンド入力、緑色が得られた結果表示、赤色が注目すべき説明としております。Windows 2000 ProfessionalやWindows XP HOME EditionにActive Perl 5.8.1.807 built for MSWin32-x86-multi-threadを導入して実行しました。尚、このスクリプトでは、ファイルに書き出している内容と同じ内容を画面(標準出力)へも出力しています。

MakeImWhoisList.plの実行例(Windows XP HOME Editionのコマンドプロンプト画面での実行例)

D:\>cd \WWW\cgilib\whois  <-----------------------スクリプト(MakeImWhoisList.pl)のあるディレクトリに移動する。
D:\WWW\cgilib\whois>perl  MakeImWhoisList.pl  <----左記の様に入力して、スクリプト(MakeImWhoisList.pl)を実行する。
MakeImWhoisList.pl   Rev.1.000(作成:鷹の巣 http://whois.sakaguch.com/) <-------この行の下は、ファイルに書き出している内容が表示されます。

# ===========================================================================  <-------この行以下は、rirs_a.listの出力結果表示
# rirs.list ver1.00
#       Copyright (C) 2001 pika-club.com
#       IPv4アドレス-WHOISサーバ対応リスト
# ===========================================================================

# =================
# 更新履歴
# =================

# [2001/10/19] v1.00
#       作成

# データ更新日:2004年01月01日 :鷹の巣  <------------------------データ更新日は、このスクリプトを実行した日付となります。
# このデータは、以下のURLに記載されている内容をもとに
# MakeImWhoisList.pl   Rev.1.000(作成:鷹の巣 http://whois.sakaguch.com)により、自動更新されています。
# INTERNET PROTOCOL V4 ADDRESS SPACE
# http://www.iana.org/assignments/ipv4-address-space

# このデータを利用するには、im_whois.cgi ver1.05の改造が必要です。
#   改造方法も含めた詳細は、以下のURLをご参照願います。
#   http://whois.sakaguch.com/

0/8,whois.arin.net  <-------IPアドレスの第一オクテット単位で出力結果を表示
1/8,whois.arin.net

・・・中略・・・

254/8,whois.arin.net
255/8,whois.arin.net





# ===========================================================================  <-------この行以下は、tld_a.listの出力結果表示
# tld.list ver1.00
#       Copyright (C) 2001 pika-club.com
#       国コード-WHOISサーバ対応リスト
# ===========================================================================

# =================
# 更新履歴
# =================

# [2001/10/19] v1.00
#       作成

# データ更新日:2004年01月01日 :鷹の巣  <------------------------データ更新日は、このスクリプトを実行した日付となります。
# このデータは、以下のURLに記載されている内容をもとに
# MakeImWhoisList.pl   Rev.1.000(作成:鷹の巣 http://whois.sakaguch.com)により、自動更新されています。
# IANA | Generic Top-Level Domains
# http://www.iana.org/gtld/gtld.htm
# IANA | Root-Zone Whois Index by TLD Code
# http://www.iana.org/cctld/cctld-whois.htm

# このデータを利用するには、im_whois.cgi ver1.05の改造が必要です。
#   改造方法も含めた詳細は、以下のURLをご参照願います。
#   http://whois.sakaguch.com/

.aero,whois.aero,Air-transport,http://www.information.aero  <-------この行以下は、gTLDドメイン名の出力結果表示
.biz,whois.biz,Businesses,http://www.nic.biz
.com,whois.verisign-grs.com,Commercial,http://www.verisign-grs.com
.coop,whois.nic.coop,Cooperatives,http://www.nic.coop
.info,whois.afilias.net,Unrestricted,http://www.nic.info
.museum,whois.museum,Museums,http://musedoma.museum
.name,whois.nic.name,Individuals,http://www.name
.net,whois.verisign-grs.com,Network,http://www.verisign-grs.com
.org,whois.pir.org,Organizations,http://www.pir.org
.pro,,Professional,
.gov,whois.nic.gov,Government(US),http://www.nic.gov
.edu,whois.educause.edu,Educational,http://www.educause.edu/edudomain
.mil,whois.nic.mil,Military(US),
.int,whois.iana.org,International,http://www.iana.org/int-dom/int.htm
.ad,,Andorra,http://www.nic.ad  <-------------------------------この行以下は、ccTLDドメイン名の出力結果表示
.af,,Afghanistan,http://www.nic.af/

・・・中略・・・

.jp,whois.nic.ad.jp,Japan,http://jprs.jp/  <----jpドメイン名の場合。

・・・中略・・・

.zm,,Zambia,http://www.zamnet.zm/domain.shtml
.zw,,Zimbabwe,

4. あとがき

このスクリプトの欠点を述べておきますと、国コード-WHOISサーバ対応リストの方は、Webページのhtmlタグに極めて依存したスクリプトになっています。Webページのhtmlタグの書き方が変ってしまうと「一巻の終わり」となってしまいます。そういう意味では、Perlのスクリプトが理解でき、改造できる方でないと設置しない方が良いと考えます。冒頭に述べました様に「サービスの提供を自立させる」というのが前提ですから、是非、このPerlのスクリプトを改造できる様になって頂きたいです。

自動作成スクリプトは、アクセス先のWebページに多少の負担が掛かりますので、通常は、このMeta-Whois Gatewayサービスから公開データをダウンロードして下さい。ダウンロード出来ない場合のバックアップとして、ご使用して頂くと幸いです。

このWebページの通りに設定して、正常に動作しない場合やこのスクリプトに対するご質問や不具合がございましたら、「鷹の巣」の自宅サーバー掲示板にご投稿を御願い致します。このPerlスクリプトは、Perlの練習用として、鷹の巣が個人的に作成しました。 imWHOISデータ自動更新プログラムは、CGI倶楽部さんとは、全く関係がありませんので、お問合せは、必ず上記の掲示板の方に御願い致します。

5.この頁の更新履歴

6. 謝辞

imWHOISデータ自動更新プログラム(IO::Socketモジュール使用例)の作成にあたり、下記のWebページを参考にさせて頂きました。この場を借りて、心よりお礼申し上げます。

インターネット上のWebページをダウンロード(GET)する部分(IO::Socketモジュール使用例)

▲頁先頭