【问题标题】:How to check domain details in Python3?如何在 Python3 中检查域详细信息?
【发布时间】:2019-09-24 07:22:54
【问题描述】:

我想检查域名(例如 google.com)的有效性以及其他详细信息,例如域名年龄、到期日期、注册人所在国家/地区等。其中一些问题由 Who-is 解决,但他们的付费解决方案是对我来说太贵了。

有人知道如何在 Python3 中做到这一点吗?

【问题讨论】:

  • This 应该会有所帮助。
  • 只需在 PYPI 上搜索 whois。有很多软件包,这可能会有所帮助。
  • @OlvinR​​oght:谢谢,那个库正是我想要的。

标签: python python-3.x dns


【解决方案1】:

使用自今年 8 月起可用于任何 gTLD 的新 RDAP 协议,它会比使用 whois 更简单,因此请跳过此旧协议。

你可以去https://www.icann.org/rdap了解很多。

既然你提到了.COM,你可以通过https://data.iana.org/rdap/dns.json找到注册RDAP服务器,你会发现它是https://rdap.verisign.com/com/v1/

一旦你习惯了 RDAP,你就会知道你需要做这个查询: https://rdap.verisign.com/com/v1/domain/google.com

如果一切顺利,您将返回一个 JSON 内容,其中包含您需要的所有数据。

但请注意:

  • .COM/.NET 是一个瘦注册表:今天(这将改变)它没有任何关于联系人的数据,包括注册人。但是.COM/.NET regitrars 现在也被要求拥有一个 RDAP 服务器,因此一旦您知道谁是任何域的注册商(并且您在注册 RDAP 服务器回复中有指向其 RDAP 服务器的链接),您就可以查询其自己的 RDAP 服务器更多详情
  • 对于所有 gTLD,并且由于 GDPR,它们符合一些 ICANN 临时规范,该规范基本上会导致不会显示任何联系数据(实际上是在 whois 或 RDAP 中),通常只有一个链接或一个模糊的电子邮件才能加入注册人,并且只喜欢国家/地区。

一些例子:

$ wget -qO - https://rdap.verisign.com/com/v1/domain/google.com | jq '.events[] | select(.eventAction | contains("expiration")) | .eventDate'
"2028-09-14T04:00:00Z"

$ wget -qO - https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM | jq '.entities[] | select(.roles[0] | contains("registrant")) | .vcardArray[1] | .[2][3][6]'
"US"

(请注意,注册商 RDAP 服务器不符合当前的 ICANN 规范,因为地址的最后一个元素应为国家全名,国家 ISO 代码应位于单独的“CC”属性中)。

当然,适当的 RDAP 客户端或库会保护您免受此类详细信息的影响,并提供对数据的轻松访问器。

PS:即使你不使用RDAP但坚持使用whois,也不要盲目地对任何服务器使用whois,只使用权威来源,即注册中心。

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 2012-02-20
    • 2018-07-26
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多