如何向现有解析器ruby whois添加属性

时间:2014-10-09 16:08:07

标签: ruby whois-ruby

所以我又来到这里,关于红宝石whois gem,我一定会在其上工作一段时间。我一直在摆弄它,并注意到一些新闻通用顶级域名未实施或未完全实施。 因此,我想了解这个Ruby whois解析器的深度,以便添加一些缺少的属性。

目前,我正在研究 .name TLD(解析器是'whois.nic.name'),其注册商 registrant_contacts tech_contacts 缺失。 (以及其他不太有用的)

如果我错了,请纠正我,但据我所知,解析的过程是从纯文本字符串中提取显着的关键字(例如“域名”或“< em>赞助注册商ID “)以创建属性或散列,具体取决于输入。

N.B - &gt;解析器扩展了与通用或特定注册表相关的基础。我很确定它与适配器有关,除非是因为每个注册表都有自己的方式来构造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 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添加注册商属性(所以我可以为其余部分执行此操作)'真棒!

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

无论如何,干杯!

1 个答案:

答案 0 :(得分:0)

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

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

这就是为什么即使使用Byebug我也无法获得任何断点,因为它使用的是gem版本的whois而不是我编辑的本地版本。 现在似乎很明显,但是在修改whois时你不应该安装gem。

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