1

所以我再次来到这里,是关于我一定要研究一段时间的 ruby​​ whois gem。我一直在摆弄它,并注意到一些新闻 gTLD 没有实施或没有完全实施。因此,我想了解这个 Ruby whois 解析器的深度,以便添加一些缺失的属性。

现在,我正在研究.name TLD(解析器是 'whois.nic.name') ,其中缺少domainregistrarregistrant_contactstech_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”。这必须解释为什么解析器不能在.name TLD 上工作,因为 Verisign 基本解析器(文件 base_verisign.rb)是这样配置的:

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 添加 registrar 属性(这样我就可以为其余部分做),那就太棒了!

我想知道你的代码是什么“节点”,因为我不知道。我假设它是封装了 whois 响应属性的结构对象的表示,但我在任何地方都没有看到任何关于它的信息。

总之,加油!

4

1 回答 1

1

实际上,认为我的问题在其他地方。

由于 Ruby-Whois 是 gem,它的 Load_Path 将作为 gem 从 rvm 目录加载(它应该这样做)。但是在我正在编辑源文件的开发环境中,Ruby 只是忽略我的更改并加载 gem,而不是我编辑的版本。谢谢 Load_Path。

这就是为什么即使使用 Byebug 我也无法让任何断点工作,因为它使用的是 gem 版本的 whois 而不是我正在编辑的本地版本。现在看起来很明显,但是在修改 whois 时,您不应该安装 gem。

然后,使用一些正则表达式添加属性并不是那么困难,只是耗时。

于 2014-10-16T12:15:18.260 回答