1

我开始使用 whoisrb 并且我注意到一些注册商的域返回 nil 联系信息。

例如:

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).

如果我检查返回的原始记录puts r,我可以看到它正在获取厚记录,因此联系信息存在于未解析的原始记录中。

到目前为止,我注意到这两个注册商是 onlinenic.com 和 namesilo.com。如果您尝试为这两个域运行 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)。通过这种方式,当值为零与值未知时,将很清楚。

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

这里的 r 是一个对象,你可以在这里Whois::Record找到可用的方法。registrant_contact 不是其中之一。您可能必须自己解析它。

于 2016-01-25T08:19:53.307 回答