gpt4 book ai didi

python - 如何可靠地检查域是否已注册或可用?

转载 作者:太空狗 更新时间:2023-10-29 20:28:03 25 4
gpt4 key购买 nike

目标

如果任何 TLD 的域已注册或可用,我需要一种可靠方法来检查 Python。大胆的短语是我正在努力解决的关键点。

我尝试了什么?

  1. WHOIS 是进行检查和现有 Python 库(如流行的 python-whois)的明显方法。 是我的第一次尝试。问题是它似乎无法检索某些 TLD 的信息,例如.run,虽然它对老年人来说效果很好,例如.com.
  2. 因此,如果 python-whois 不可靠,也许只是 Linux whois 的包装器 会更好。我试过 whois library 不幸的是,它仅支持有限的 TLD 集,显然是为了确保它始终可以解析结果。
  3. 因为我真的不需要解析结果,所以我从 whois 库中提取了代码,并尝试通过自己调用 Linux 的 whois 来进行查询:

    p = subprocess.Popen(['whois', 'example.com'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    r = p.communicate()[0]
    print(r.decode())

    这样效果更好。除了它也不是那么可靠。我尝试了一个特定的域并得到“您的连接限制已超出。请放慢速度,稍后再试。”好吧,超出限制的不是我。在一个巨大的办公室中使用单个 IP 意味着其他人可能会在我进行查询之前达到极限。

  4. 另一个想法是不要使用 WHOIS,而是进行 DNS 查询。但是,我需要处理已注册或过期后处于保护阶段且没有 DNS 记录的域,因此这显然是不可能的。
  5. 最后的想法是通过某些第 3 方服务的 API 进行查询。问题是对这些服务的信任,因为它们可能会 snatch我检查的可用域。

类似问题

已经有类似的问题了:

...但他们要么只处理有限的 TLD 集,要么不为可靠性所困扰。

最佳答案

如果您没有特定的访问权限(例如作为注册商),并且您没有针对特定的 TLD(因为某些 TLD 确实具有称为域可用性的特定公共(public)服务),唯一有意义的工具是查询whois 服务器。

那么你至少有以下两个问题:

  1. 根据给定的域名使用合适的whois服务器
  2. 考虑到 whois 服务器是有速率限制的,所以如果您不加注意地批量查询它们,您首先会遇到延迟,然后甚至会冒着您的 IP 被列入黑名单的风险,持续一段时间。

对于第二点,通常的方法适用(在你这边处理延迟,使用多个端点等)

关于第一点,在我的另一个回复中: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com