我想检查域名(例如,google.com)的有效性,以及其他一些细节,如域名年龄、到期日期、注册国等。这些问题中有一些是由谁来解决的,但他们的付费解决方案对我来说太昂贵了。
有人知道如何在Python3中做到这一点吗?
发布于 2019-09-24 15:27:06
使用自今年8月以来对任何gTLD都可用的新的RDAP协议,使用this将使far更简单,因此跳过这个遗留的旧协议。
你可以到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服务器现在也被授权拥有一个服务器,所以一旦你知道谁是任何域名的注册人(并且你在注册表RDAP服务器回复中有到它的RDAP服务器的链接),你就可以查询它自己的RDAP服务器,以获得所有gTLD的更多详细信息
下面是一些例子:
$ 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,只使用权威的来源,即注册表。
https://stackoverflow.com/questions/58075068
复制相似问题