如何在JavaScript中检测DNS查找错误

How to detect DNS lookup error in JavaScript

本文关键字:DNS 查找 错误 检测 JavaScript      更新时间:2023-09-26

我想知道有没有一种方法可以检测JavaScript中的DNS查找错误。

有什么代码或技巧吗?

或者这是一项不可能完成的任务?

有人能解释一下吗?非常感谢!

当随机最终用户的机器上出现"DNS查找失败"时,无法准确预测会发生什么行为。

例如,当在不存在的域(NXDOMAIN)上执行查找时,许多ISP会返回自己的"帮助者"搜索页面/站点。这也被称为DNS劫持。

用户还可以在本地"主机文件"上配置自己的域条目,这将给出"假阳性"。

为了获得更可靠的方法,您应该在服务器上执行此查找,这样可以更好地指示域是否可以访问到更广阔的世界。它还可以让你区分网站是否只是关闭或无法从用户的机器访问,而不是无效条目。

如果你指的是err_name_not_resolve,那就是没有连接或无法联系dns服务器的结果。如果您使用的是XHR,那么只需为您的XHR.onerror:xhr.onerror = () => { alert('Failed DNS resolution'); };分配一个函数即可。注意,错误仍然会出现在控制台中,这是故意的,也是故意的。如果xhr.onload没有被定义,它也应该仍然尝试运行,所以这是需要记住的另一件事。

如果你的意思是找到一个页面,但它不存在,那么只需返回404。使用xhr,您只需阅读if(xhr.status === 404) { ... }

如果你的意思是找到一个页面,但得到了错误的IP地址,试图通过dns劫持钓鱼网站,有几种方法可以解决这个问题。第一种是对IP地址进行硬编码,第二种是证书,第三种是任何类型的隐藏代码,两台计算机都应该知道如何相互验证。可能还有其他的方法,这只是我的想法。