使用DNS记录检查域名可用性

问题描述 投票:10回答:8

通过检查NS或SOA(授权开始)记录的存在来确定域名可用性的准确程度如何?

如果没有,如何在不诉诸WHOIS的情况下尽可能准确地确定?例如,如果不存在NS记录,是否值得检查MX记录?

我对.co.za域名特别感兴趣,但在.co.za命名空间中检查可用性的唯一官方,万无一失的方法是使用http://co.za/whois.shtml,它限制IP地址的连续检查。

dns whois nameservers
8个回答
10
投票

检查域可用性的唯一100%可靠方法是查询注册商的数据库。我不相信whois。

您可以使用DNS来估算。而不是寻找SOA记录,我只想查看是否有任何内容与TLD名称服务器一起列出。 dig是一个很好的工具(在Windows上运行),虽然我猜你也可以使用nslookup。例如:

dig co.za. NS

将提供.co.za的名称服务器列表。其中一台服务器是ns0.is.co.za.

接下来,直接查询该服务器,看看他们是否列出了您感兴趣的域名:

dig ibm.co.za @ns0.is.co.za

该查询返回NS记录,但没有SOA记录,因为SOA记录由域名服务器提供(可能在线也可能不在线)。 NS记录表明域名正在使用中。

直接的原因是它通常比依赖本地名称服务器的递归查询快得多。


6
投票

确定域是否可用的唯一方法是在该注册表数据库中查询该域。通常,您可以通过在注册管理机构WHOIS界面上执行WHOIS查询来实现此目的。

有几个原因可以解释为什么DNS检查不安全。

最简单的解释是因为您可以注册域而不将其指向任何位置。这就像一所房子。你可以买房子,但你没有被迫建造一条通往它的道路。

可用域提供程序的大部分强制您指向DNS,否则它们会设置默认值。但是你没有被迫,这不是一种强制性的域名要求。

第二个原因是因为实际上存在域名注册但不可用的情况。其中一个案例是通常称为赎回期的时期。域名过期后,此期限会持续几天,且当前所有者不会续订。多个注册管理机构禁用域名,这意味着它不再可通过DNS访问,但域名仍然存在,并且只能由原始所有者兑换(通常)。

DNS检查很便宜,有时更快。如果您需要检查域是否存在,那么您可以先尝试DNS查询,如果失败,则回退到WHOIS查询。换句话说,如果DNS查询成功,则WHOIS查询几乎毫无意义。但是你不能这样做,因为如果DNS查询失败,并不意味着域名没有注册。


1
投票

Whois是检查域可用性的规范方法。速率限制是故意让人们不要超载whois服务器。 SOA记录的存在可能是一个很好的猜测,但它不是一个确定的答案。


1
投票

如果您打算进行批量检查,您很快就会对内置的DNS解析器感到失望 - 它是同步的。有一个很漂亮的可爱图书馆名为ADNS(http://www.gnu.org/software/adns/),提供异步DNS查询。它伴随着一个小的命令行工具adnshost,我将它与N-DJBDNS(http://pjp.dgplug.org/ndjbdns/)结合使用作为递归解析器。

确切的论据是adnshost -a -tns -f

输出中的第4列将包含结果代码:

  • 0如果为域分配了至少1个名称服务器(大多数注册商分配默认值,直到所有者分配自己的名称服务器)
  • 如果没有分配名称服务器,则为300或301

检查1.2M域名大约需要4-6个小时,但这会随着网络速度/拥塞而变化。


0
投票

实际上,DNS查找在99%的时间内都有效。如果你写像Ajaxwhois,我建议走这条路。如果您要检查一百万个名字,我会先进行DNS查询,然后对您可能考虑购买的那些进行第二次传递。


0
投票
  • Whois是检查.co.za域可用性的唯一100%确定方式。见http://co.za/whois.shtml
  • 我的测试显示,批量检查NS记录或任何DNS记录的存在似乎是猜测.co.za域是否可用于注册的最准确方法。 SOA记录也有效,但不是很好。
  • dig co.za. NS显示.co.za TLD名称服务器。 Ping TLD服务器并使用最接近的服务器以避免不必要的递归查询。

谢谢你的回答。


0
投票

我也一直在使用dig方法在注册之前测试域的存在,但是大约10%的时间,它返回不可用的域。这是因为域的所有者尚未为域设置任何记录。所以我决定做的是:

  1. 首先通过挖掘方法检查。
  2. 如果域似乎可用,请使用whois.shtml进行检查

人们将经历一堆不可用的域,这不会浪费UniForum提供的已分配请求。只有当某些内容可用时才会检查co.za本身。在我看来,这是唯一可靠的方法,因为发送了一百万个请求而没有失去对co.za/whois.shtml的访问权限:)


-1
投票

尝试了whois,它给了我奇怪的结果(google.fr免费!)所以我尝试了一个Windows命令:nslookup yourdomain,如果它被注册,你会得到它的IP

© www.soinside.com 2019 - 2024. All rights reserved.