web-dev-qa-db-ja.com

解析せずにWHOISデータフィールドを取得しますか?

一般的なGNU/Linuxディストリビューション(Fedora/Debian/Ubuntu/etcなど)で利用可能なコマンドラインツールを使用して、理想的には必要なく、特定のWHOISフィールド(たとえば、登録者の組織名)の値を取得する一般的な方法があります。各レジストリの出力間の違いを処理するようにハードコードされたカスタムWHOISパーサーを構築しますか?

whoisコマンドからの出力は非常に一貫しているように見えないため、これは質問する価値があるようです。たとえば、次を比較します。

$ whois trigger.io

[...]

Owner OrgName : Amir Nathoo

[...]

と:

$ whois facebook.com

[...]

Registrant Organization: Facebook, Inc.

[...]

代わりに、いくつかのコマンドの引数として渡すことができるようにしたいと思います。

  • ドメイン名
  • 希望のフィールド

そして、出力が単に目的のフィールドの値になるようにします。たとえば、上記の例に基づいて、次のようになります。

$ some_whois_command -field organization_name trigger.io
Amir Nathoo

$ some_whois_command -field organization_name facebook.com
Facebook, Inc.

これは可能ですか?

理想的には、whoisコマンドを中心とした解決策を希望します。たとえば、-i-q-t、および/または-v、これらのオプションを効果的に使用する方法を学びたいので、必要に応じて別の解決策を正解として受け入れます。

6
sampablokuper

問題は少なくとも2つあるようです。

  • WHOIS応答は共通のスキーマを共有しません。
  • wHOISクライアントがWHOIS応答を解析し、それらのフィールドを(たとえば、適切なオントロジーを使用して)単一のスキーマにマッピングすることができるという不足しています。 Ruby Whois プロジェクトは、私が見つけた最も広範囲な取り組みです。それは 500以上の異なるWHOISサーバーのそれぞれにパーサーを提供する を目指しており、その開発者は莫大な信用に値しますが、まだ作業中です。

申し訳ございません。

IETF's これおよび他のWHOISの問題に対する提案されたソリューションは Registration Data Access Protocol(RDAP) と呼ばれます。

引用 RFC 7485 、これはRDAPの根拠を説明しています:

ドメイン名前空間に200以上の国コードがありました
トップレベルドメイン(ccTLD)および400を超える一般的なトップレベルドメイン
(gTLDs)このドキュメントが公開されたとき。別のドメイン名
レジストリには、異なるWHOIS応答オブジェクトと形式がある場合があります。
A
これらすべてのデータ形式の共通理解は、
オブジェクトごとに単一のデータモデルを構築します。

(エンファシス鉱山。)

残念ながら、ほとんど(すべて?)のTLDレジストリは、サブドメインにWHOISサーバーを提供しますが、 のみ 1 これまでのところ、2つのTLDレジストリは、サブドメイン用のRDAPサーバーを正式にフィールド化しています :.czドメイン用のCZNIC、およびNIC .arドメイン用のアルゼンチン)。したがって、これは(まだ)一般的ではありません。幅広いTLDに適用可能なソリューションです。他のすべてのレジストリが急いでRDAPサーバーをフィールドに配置することを期待できます。

ソフトウェアに関しては、これまでに見つけたPOSIXシステム用の唯一のRDAPコマンドラインクライアントは nicinfo です。

4
sampablokuper

あなたはpythonを使うかもしれません

 pip install whois

例えば、

#!/bin/python

import whois
print whois.whois('www.facebook.com')['city']
2
user123456