以编程方式确定网域是否可用的最有效方法是什么?

13

我正在编写一些代码来确定一个网络域是否已注册。例如,我想检查"Google123.com"是否可用。至少有两种编程方式可以实现,但我不确定哪种更有效:

  • A) 在Linux/Cygwin中,我可以启动whois命令来查看域名是否在使用中。
  • B) 在Linux/Windows中,我可以启动nslookup命令来查看域名是否可解析。

我的问题是:

  1. nslookup真的是检查注册的有效方法吗?每个注册的域名都有一个名称服务器并显示在DNS中吗?
  2. 最快的方法是什么来进行这个注册检查?有什么提示或其他方法来完成它吗?
6个回答

10

关于问题 #1,不需要。注册的域名并不一定需要有DNS。


7

nslookup会命中您系统设置中的DNS服务器。它可能过时或没有任何DNS条目。我认为最好的方法是通过TCP连接到whois.internic.net端口43(whois端口),传递您想要检查的名称,然后您应该会收到响应以让您知道。如果不存在,您将收到像"domainyourchecking.com"无匹配项这样的响应。


2
但是那种方法只会在最后显示一个消息:“注册表数据库仅包含 .COM、.NET、.EDU 域名和注册机。” - Sabya

2

有传言称,一些允许您搜索域名的网站实际上是域名投机者的幌子。当您搜索域名时,他们会立即购买该域名,然后试图为您出售。我从未遇到过这样的骗局,但您可能想在新网站上尝试几次无用的域名搜索,然后再搜索您梦寐以求的域名。


或者您可以使用值得信赖的注册商;我从未在namecheap.com上做这件事遇到过任何问题。 - Greg Hewgill
他们甚至会收集有关流行域名搜索想法的信息,然后相应地定价高级域名。 - Playdome.io

2

whois的问题在于不同tld的响应不一致。

因此,如果你只是查找.com或其他特定的tld,那么没问题。但如果你开始查看各种ccTlds或其他gTlds,你可能会发现你的逻辑中有很多特殊情况,尝试弄清楚whois命令返回的数据中“可用”意味着什么。

即使域名可用,whois始终向shell返回成功。 :(


-2

这将为您提供一个快速的是/否答案,但如果您认为它是免费的,并且您想要它,请尝试注册它,您可能会发现它已经被占用了。


-3

system("whois $domainname");


1
我相信提问者已经知道如何去做了。问题是这样做是否是一个好的方式。 - Justin Bennett
是的,我应该在回答问题之前完整阅读问题。 - Adam Pierce
2
无论你使用什么编程语言,直接调用 whois 命令都是一个非常糟糕的主意。相反,你应该使用特定的 whois 库,或者最简单的方法就是在 43 端口打开一个 TCP socket 并读取 RFC3912。 - Patrick Mevzek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接