1

ということで、私がしばらくの間取り組もうとしている ruby​​ whois gem について、またここに来ました。私はそれをいじっていて、いくつかのニュースgTLDが実装されていないか、完全ではないことに気付きました. したがって、欠落しているプロパティのいくつかを追加するために、この Ruby whois パーサーの深さを理解したいと思います。

現在、私は.name TLD (パーサーは 'whois.nic.name') に取り組んでおり、これにはdomainregistrarregistrant_contacts、およびtech_contactsがありません。(他のあまり役に立たないものの中で)

私が間違っている場合は修正してください。しかし、私が理解したところでは、解析のプロセスは、平文の文字列から重要なキーワード (「ドメイン名」や「スポンサー レジストラー ID」など) を抽出して、入力に応じて、プロパティまたはハッシュ。

注意 -> パーサーは、汎用または特定のレジストリに関連するベースを拡張します。各レジストリがwhoisデータを構造化する独自の方法を持っている可能性があるためでない限り、アダプターに関係していると確信しています。.name に戻って調べたところ、Verisign によって運営されているようです。とりわけ、.net TLD (パーサーは「whois.verisign-grs.com」) も上記のレジストリによって運営されているため、同様の動作をするはずだと思いました。私が犯した重大な間違い...

domain.name whois のプレーンテキスト

   Domain Name ID: XXXXXXXXXXXX
   Domain Name: XXXXXXXXXXX.NAME
   Sponsoring Registrar: Network Solutions, LLC.
   Sponsoring Registrar ID: 2_REGISTRAR_NAME-VRSN
   Domain Status: clientTransferProhibited
   Registrant ID: CONTACT_NAME-VRSN
   Admin ID: CONTACT_NAME-VRSN
   Tech ID: CONTACT_NAME-VRSN
   Billing ID: CONTACT_NAME-VRSN
   Name Server: NS1.WIX.COM
   Name Server ID: 1739652_HOST_NAME-VRSN
   Name Server: NS2.WIX.COM
   Name Server ID: 1739653_HOST_NAME-VRSN
   Created On: 2013-09-30T05:36:15Z
   Expires On: 2015-09-30T05:36:15Z
   Updated On: 2014-10-06T11:44:37Z

domain.net whois のプレーンテキスト

Domain Name: XXXXXXX.NET
Registry Domain ID:
Registrar WHOIS Server: whois.publicdomainregistry.com
Registrar URL: www.publicdomainregistry.com
Updated Date: 23-Jul-2014
Creation Date: 24-Apr-2009
Registrar Registration Expiration Date: 24-Apr-2016
Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com
Registrar IANA ID: 303
Registrar Abuse Contact Email: abuse-contact@publicdomainregistry.com
Registrar Abuse Contact Phone: +1-2013775952
Domain Status: clientTransferProhibited
Registry Registrant ID: XXXXXXXX
Registrant Name: Domain Admin

そして、これがプロパティを表示するために行った出力です

.NAME 解析された whois

domain :
status : ["clientTransferProhibited"]
available? : false
registered? : true
created on : 2013-09-30 05:36:15 UTC
updated on : 2014-10-06 11:44:37 UTC
expires_on : 2015-09-30 05:36:15 UTC
registrar (hash) :
registrant contact (hash) :
admin contact (hash) :
technical contact (hash) :

.NET で解析された whois

domain : XXXXXXX.net
status : registered
available? : false
registered? : true
created on : 2009-04-24 00:00:00 +0000
updated on : 2014-05-24 00:00:00 +0000
expires_on : 2016-04-24 00:00:00 +0000
registrar (hash) : #<struct Whois::Record::Registrar id=nil, name="PDR LTD. D/B/A PUBLICDOMAINREGISTRY.COM", organization=nil, url="http://www.PublicDomainRegistry.com">
registrant contact (hash) :
admin contact (hash) :
technical contact (hash) :

ご覧のとおり、いくつかのバリエーションがあります。私が指摘したかったのは、プレーン テキスト応答のRegistrarプロパティでした。前者は「REGISTRAR IANA ID」、後者は「SPONSORING REGISTRAR ID」です。これは、Verisign ベース パーサー (ファイル base_verisign.rb) が次のように構成されているため、パーサーが.name TLD で動作しない理由を説明する必要があります。

property_supported :registrar do
          node("Sponsoring Registrar") do |value|
            Whois::Record::Registrar.new(
                id:           last_useful_item(node("Sponsoring Registrar IANA ID")),
                name:         last_useful_item(value),
                url:          referral_url
            )
          end
        end

「レジストラ IANA ID」ではなく「スポンサー レジストラ IANA ID」である理由がわかりません...

とにかく、誰かが私が誤解していることを説明することで私を助け、.name TLD のレジストラ プロパティを追加する方法の例を提供してくれれば (残りのためにそれを行うことができます)、それは素晴らしいことです. !

そして、あなたのコードの「ノード」とは何かを知りたいのですが、私にはわからないからです。whois 応答のプロパティをカプセル化する構造体オブジェクトの表現だと思いますが、どこにも情報がありません。

とにかく乾杯!

4

1 に答える 1

1

実際、私の問題は他の場所にあると考えました。

Ruby-Whois は gem であるため、その Load_Path は rvm ディレクトリから gem としてロードされます (そうする必要があります)。しかし、ソースファイルを編集している開発環境では、Ruby は変更を無視して、編集したバージョンではなく、gem をロードします。Load_Path ありがとうございます。

そのため、Byebug を使用していても、編集していたローカルのものではなく、gem バージョンの whois を使用していたため、ブレークポイントを機能させることができませんでした。今では非常に明白に思えますが、whois を変更するときは gem をインストールしないでください。

次に、少しの正規表現を使用して、プロパティを追加することはそれほど難しくなく、時間がかかるだけです。

于 2014-10-16T12:15:18.260 に答える