1

whoisrb を使い始めたのですが、一部のレジストラのドメインが連絡先情報を返さないことに気付きました。

例えば:

domain_name = ARGV[0]
r = Whois.whois(domain_name)

t=r.registrant_contact
  if t == nil
  puts 'Registrant Contact is empty.'
end

「登録者の連絡先が空です」を返します。連絡先属性にアクセスしようとすると、 のようなエラーが発生しますundefined method 'id' for nil:NilClass (NoMethodError)

返された raw レコードを確認するとputs r、厚いレコードが取得されていることがわかります。そのため、連絡先情報は解析されていない raw レコードにあります。

これまでのところ、これに気づいた 2 つのレジストラは、onlinenic.com と namesilo.com です。これら 2 つのドメインに対して whois を実行しようとすると、私の言いたいことがわかるでしょう。

ここで ICANN 準拠のサンプルを確認しています。

https://www.icann.org/resources/pages/approved-with-specs-2013-09-17-en#whois

onlinenic.com と namesilo.com に対して、大きな違いは見られません (何かが欠けているのかもしれません)。

これらの解析に問題がある理由、またはそれを修正するために確認できることへのポインタはありますか? ありがとう。

4

2 に答える 2

2

これは、レジストラーにパーサーが関連付けられていないか、連絡先を解析するために必要な定義がパーサーにない場合に発生します。

つまり、パーサーが存在しない場合、レジストラの詳細が応答に含まれている可能性がありますが、ライブラリはそれらを見つけることができません。

その場合の解決策は、特定のレジストラ/レジストリに対応するパーサーを追加/更新することです。

この動作は、ライブラリの内部に精通していない人にとっては混乱を招くため、この場合、新しいリリース 4 ではエラーが発生することに注意してください (何も言わずに nil を返すのではなく)。このようにして、値が nil である場合と値が不明である場合が明確になります。

于 2016-01-25T15:04:22.107 に答える
0
r = Whois.whois(domain_name)

ここの r はWhois::Recordオブジェクトで、利用可能なメソッドは hereにあります。registrant_contact はその 1 つではありません。おそらく自分で解析する必要があります。

于 2016-01-25T08:19:53.307 に答える