如何在Python3中检查域详细信息?

如何在Python3中检查域详细信息?,python,python-3.x,dns,Python,Python 3.x,Dns,我想检查域名(比如google.com)的有效性,以及其他细节,如域名年龄、到期日、注册国等。其中一些问题由谁来解决,但他们的付费解决方案对我来说太贵了 有人知道如何在Python3中实现这一点吗?使用自今年8月以来可用于任何gTLD的新RDAP协议,并且使用whois将比使用whois简单得多,因此跳过这一旧协议 你可以去看很多解释 由于您提到了.COM,您可以通过转到找到注册表RDAP服务器,您会发现它是 一旦习惯了RDAP,您就知道需要执行以下查询: 如果一切顺利,您将获得一个JSON内

我想检查域名(比如google.com)的有效性,以及其他细节,如域名年龄、到期日、注册国等。其中一些问题由谁来解决,但他们的付费解决方案对我来说太贵了


有人知道如何在Python3中实现这一点吗?

使用自今年8月以来可用于任何gTLD的新RDAP协议,并且使用whois将比使用whois简单得多,因此跳过这一旧协议

你可以去看很多解释

由于您提到了
.COM
,您可以通过转到找到注册表RDAP服务器,您会发现它是

一旦习惯了RDAP,您就知道需要执行以下查询:

如果一切顺利,您将获得一个JSON内容,以及您需要的所有数据

但请注意:

  • .COM/.NET
    是一个精简的注册表:今天(这将改变),它没有任何关于联系人的数据,包括注册人。但是
    .COM/.NET
    Regitrar现在也被强制要求拥有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,只使用权威来源,即注册表。

应该有帮助。只需在PYPI上搜索whois即可。有很多软件包,可能会有帮助。@OlvinRoght:谢谢,那个图书馆正是我要找的。