客观的
我需要一种可靠方式来在Python中检查是否已注册或可用任何TLD 的域。粗体的短语是我一直在努力的重点。
我尝试了什么?p = subprocess.Popen(['whois', 'example.com'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
r = p.communicate()[0]
print(r.decode())
效果更好。除了之外,也不那么可靠。我尝试了一个特定的域,并收到“超出了您的连接限制。请放慢速度,然后重试。”好吧,超出限制的不是我。在庞大的办公室中使用单个IP意味着在我进行查询之前,其他人可能会达到极限。
类似问题
已经有类似的问题:
...但是它们要么只处理一组有限的TLD,要么不受可靠性的困扰。
最佳答案
如果您没有特定的访问权限(例如成为注册商),并且没有针对特定的TLD(因为某些TLD确实具有称为域可用性的特定公共(public)服务),那么唯一有意义的工具是查询whois服务器。
然后,您至少会遇到以下两个问题:
第二点,采用通常的方法(处理您方面的延迟,使用多个端点等)。
对于第一点,在我的另一封答复中:https://unix.stackexchange.com/a/407030/211833,您可以根据所使用的whois周围的包装以及一些对策找到一些有关所观察到内容的解释。另请参阅我的其他回复:https://webmasters.stackexchange.com/a/111639/75842和具体指向
2。
请注意,根据您的特定要求,如果您至少能够更改其中的一部分,则可能会有其他解决方案。例如,对于通用顶级域名(gTLD),如果您允许24小时的延迟,则可以使用已发布的注册表区域文件来查找已注册的域名(已发布的域名并不是全部)。
同样,从一般意义上说,为什么使用第三方有其弱点是对的,如果您找到了一个有值(value)的注册服务商,既可以访问许多注册管理机构,又可以为您提供API,则可以将其用于您的需求。
简而言之,我不相信您可以在所有情况下(100%可靠性,100%TLD等)来完成此任务。您将需要一些折衷,但是它们取决于您的最初需求。
同样非常重要:不要掏空运行whois命令,这会带来许多安全性和性能问题。使用您的编程语言中的适当库来进行whois查询,或者只是在端口43上打开TCP套接字,然后在以CR + LF终止的一行上发送查询,回读一小段文本,这基本上只是RFC3912中定义的内容。
关于python - 如何可靠地检查域是否已注册或可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48063176/