問題には少なくとも 2 つの要素があるようです:
- WHOIS 応答が共通のスキーマを共有していない
- WHOIS 応答を解析し、それらのフィールドを (適切なオントロジーを使用するなどして) 単一のスキーマにマッピングできる WHOIS クライアントが不足しています。 Ruby Whois プロジェクトは、私が見つけた中で最も大規模な取り組みです。 500 以上の異なる WHOIS サーバーのそれぞれにパーサーを提供することを目的としており、その開発者は多大な功績に値しますが、まだ進行中の作業です.
これは残念な状況です。
この問題やその他の WHOIS の問題に対して IETF が提案している解決策は、Registration Data Access Protocol (RDAP) と呼ばれます。
RDAP の理論的根拠を説明している RFC 7485 の引用:
<ブロック引用>
ドメイン名空間には、200 以上の国コードがありました
トップレベル ドメイン (ccTLD) と 400 を超えるジェネリック トップレベル ドメイン
(gTLD) このドキュメントが公開されたとき。別のドメイン名
レジストリは、異なる WHOIS 応答オブジェクトと形式を持つ場合があります。 あ
これらすべてのデータ形式を共通に理解することが重要でした。
オブジェクトごとに単一のデータ モデルを構築します。
(私のものを強調してください。)
残念ながら、ほとんどの (すべて?) TLD レジストリがサブドメインに WHOIS サーバーを提供しているのに対し、1 つ しか提供していません。 これまでのところ、2 つの TLD レジストリがサブドメイン用に RDAP サーバーを正式に配備しています。.cz ドメイン用の CZNIC と .ar ドメイン用の NIC Argentina です。そのため、これは (まだ) 幅広い TLD に一般的に適用できるソリューションではありません。他のすべてのレジストリが急いで RDAP サーバーを配備することを願うばかりです。
ソフトウェアに関しては、私がこれまでに見つけた POSIX システム用の RDAP コマンド ライン クライアントは nicinfo
だけです。 .
Python を使用できます
pip install whois
たとえば、
#!/bin/python
import whois
print whois.whois('www.facebook.com')['city']