所以我又来到这里,关于红宝石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 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 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
这是我为显示属性而做的输出
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) :
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响应的属性,但我没有在任何地方看到任何信息。
无论如何,干杯!
答案 0 :(得分:0)
实际上,我认为我的问题在其他地方。
由于Ruby-Whois是一个gem,它的Load_Path将从rvm目录加载为gem(它应该这样做)。但是在我编辑源文件的开发环境中,Ruby只是忽略了我的更改并加载了gem而不是我编辑的版本。谢谢Load_Path。
这就是为什么即使使用Byebug我也无法获得任何断点,因为它使用的是gem版本的whois而不是我编辑的本地版本。 现在似乎很明显,但是在修改whois时你不应该安装gem。
然后,通过一些正则表达式添加属性并不是那么困难,只是耗费时间。