我在不同的注册商(比如 netsol、goDaddy 等)拥有很多域名(77 个)。
我想要获取每个证书的到期日期、注册人和注册商。
由于每个人都有自己的 WHOIS 数据库和不同的输出格式,我无法对所有数据进行排序。是否有任何 TOP WHOIS 数据库可供我查询,以便我的列表中的所有域都具有相同的格式,并且能够处理它以获取我需要的信息?
答案1
这Ruby whois 库还包括一个标准化的 whois 响应解析器,您可以使用它从 whois 响应中提取详细信息。
如果您不了解 Ruby 或者不想使用它,有几种服务可供选择。机器人搜索就是其中之一。
免责声明:我是 Ruby whois 库和 RoboWhois 的作者。
答案2
如今,特别是如果您正在处理 gTLD,您应该使用 RDAP 而不是 whois。解析起来容易得多,因为结果是 JSON,而不是自由格式的非结构化文本。并非所有注册商或注册中心(即使在 gTLD 中,即使自 8 月 26 日起由 ICANN 强制要求)都可能拥有正常运行且遵循标准的 RDAP 服务器,但它们应该有,而且数量只会增加。
看https://about.rdap.org/请参阅入门指南或 ICANN 文档:https://www.icann.org/rdap
否则,一个简单的例子:
$ wget -qO - https://rdap.verisign.com/com/v1/domain/godaddy.com | jq '.events[] | select(.eventAction | contains("expiration")) | .eventDate'
"2021-11-01T11:59:59Z"
$ wget -qO - https://rdap.verisign.com/com/v1/domain/godaddy.com | jq '.entities[0].vcardArray[1][1][3]'
"GoDaddy.com, LLC"
$ wget -qO - https://rdap.verisign.com/com/v1/domain/godaddy.com | jq '.links[1].href'
"https://rdap.godaddy.com/v1/domain/GODADDY.COM"
$ wget -qO - https://rdap.godaddy.com/v1/domain/GODADDY.COM | jq '.events[] | select(.eventAction | contains("expiration")) | .eventDate'
"2021-11-01T06:59:59Z"
(但当然在实际代码中你不应该对数组中的位置和类似的东西进行硬编码,你需要正确解析 JSON 输出)。
答案3
这是许多人为他们的监控系统所做的任务,以确保域名按时更新。您可以在以下位置找到一些现有的 Nagios 插件nagios 交换. 这应该可以帮助您入门。
没有“顶级 whois 数据库”,whois 是分散且混乱的。您会发现,所有这些工具(以及您不可避免地自己编写的工具)都是特殊情况的长列表。