我开始使用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)
。
如果我检查了正在返回的原始记录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,我没有看到任何实质性的差异(可能我错过了一些东西)。
为什么它在解析这些问题时遇到任何问题,或指出我可以检查修复它的内容?感谢。
答案 0 :(得分:2)
当注册商没有关联解析器,或者解析器没有解析联系人所需的定义时,就会发生这种情况。
换句话说,除非存在解析器,否则注册商详细信息可能在响应中,但库无法找到它们。
在这种情况下,解决方案是添加/更新对应于特定注册商/注册表的解析器。
由于这种行为让那些不熟悉库内部的人感到困惑,所以在这种情况下也注意到新的release 4 will raise an error(而不是默默地返回nil)。通过这种方式,当值为nil时,将清楚该值是未知的。
答案 1 :(得分:0)
r = Whois.whois(domain_name)
此处的r是Whois::Record
对象,您可以找到可用的方法here。 registrant_contact不是其中之一。你可能需要自己解析它。