【问题标题】:Check domain validity with wildcard resolver使用通配符解析器检查域有效性
【发布时间】:2012-03-08 03:55:30
【问题描述】:

我有一个网站,用于记录指向用户提供的网页的链接。我只想记录它们是否有效。

我使用checkdnsrr($domain, 'A') 来检查域的有效性,我注意到它总是返回true。我在共享主机上(所以我不能改变任何东西)。我向服务器管理员报告了一个错误,他回答:

我们将 OpenDNS 用于服务器上的解析器。他们的解析器即使对于无效域也会返回 IP/DNS 记录,因为它们设置了通配符以将任何无效域指向默认 IP。因此,您输入的所有域都将显示为具有 A 记录。

那好吧。

我想避免在无效域上使用cURL,因为这会浪费,但实际上存在更大的问题。我相信这个解析器会返回某种错误页面,例如“此域不存在”,并发出 200 或其他一些所谓的有效返回状态。我使用此状态来确认页面确实有效,因此现在任何无效域都将被我的站点记录为有效。

(幽默地说,一个有效的域,其 URL 无效,导致页面发出 404 或其他错误状态将被记录)。

无论如何,还有其他方法可以检查域的有效性吗?我不介意使用一些第三方网站。

【问题讨论】:

  • 使用 curl 也可能毫无意义 - 它会使用与 PHP 相同的解析器,并且仍然以 opendns 提供的任何 IP 结束。

标签: php dns


【解决方案1】:

OpenDNS(和其他这样做的)通常为应该出现 NXDOMAIN 的所有域返回相同的 IP(无效)。如果您检查的结果是该 IP,则认为它无效。这是一项额外检查,但它应该是一种有效的解决方法。

【讨论】:

  • 这听起来像是一个好的开始......你知道如何 a) 从 PHP 中的字符串获取域的 IP 并 b) 弄清楚这个“所有域的相同 IP”是什么?另外,我是否需要担心它会不时发生意外变化?
  • @tandu,看来您可以使用gethostbyname() 获取IP。您可能需要使用已知无效的主机(例如:dfgdfgdg.com)从主机运行一次,以获得您需要考虑“无效”的 ip。 dns 提供商何时更改内容取决于您,但我希望它应该相当稳定。
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 2014-08-12
  • 2010-12-06
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
相关资源
最近更新 更多