使用JavaScript执行DNS查找以将主机名解析为IP地址

使用JavaScript执行DNS查找以将主机名解析为IP地址,javascript,dns,Javascript,Dns,是否可以使用Javascript解析主机名 下面是假设代码: var hostname = "www.yahoo.com"; var ipAddress = DnsLookup(hostname); console.log(ipAddress); 我正在寻找神奇的DnsLookup()函数。:-) 您需要回调到服务器端并从那里解析值。Javascript中没有可用的标准DNS查找功能。否-Javascript被阻止进行跨域请求。可能有一些黑客可以帮助您(其中一个看起来有点前途),但默认情况下您

是否可以使用Javascript解析主机名

下面是假设代码:

var hostname = "www.yahoo.com";
var ipAddress = DnsLookup(hostname);
console.log(ipAddress);

我正在寻找神奇的
DnsLookup()
函数。:-)

您需要回调到服务器端并从那里解析值。Javascript中没有可用的标准DNS查找功能。

否-Javascript被阻止进行跨域请求。可能有一些黑客可以帮助您(其中一个看起来有点前途),但默认情况下您无法做到这一点


您可能可以请求一些内容,并确保返回HTTP 200

虽然JavaScript中没有标准的DNS功能,但您始终可以调用执行DNS解析的第三方公共API

例如,您可以为它生成一个XMLHttpRequest:

var-oReq=newXMLHttpRequest();
oReq.onload=函数(){
var response=JSON.parse(this.responseText);
警报(JSON.stringify(response.dns_条目));
}  
oReq.open(“获取”https://www.enclout.com/api/v1/dns/show.json?auth_token=rN4oqCyJz9v2RRNnQqkx&url=stackoverflow.com“,对);
oReq.send()有一个相对较新的(2018年)互联网标准(也称为DoH)正在兴起。它允许您通过HTTPS向“DoH服务器”发送wireformat DNS查询。好的是,使用DoH,您可以在HTTPS之上获得整个DNS协议。这意味着你可以获得很多有用的信息

这就是说,有一个名为的开源JavaScript库,使得在浏览器中进行DNS查找非常容易。下面是一个快速示例代码片段:

const resolver=new doh.DohResolver('https://1.1.1.1/dns-query')
resolver.query('www.yahoo.com')
.then(console.log)
.catch(控制台错误);
充分披露:我是dohjs的贡献者


上有很多资源,包括公共DoH服务器列表和DoH工具列表(主要是服务器和客户端软件)。

参考库如何帮助Amir获取主机的IP地址??跨域请求与此无关-您无法在前端解析主机!这个答案是无效的。请参阅:@PatrikAlienus BollocksNo在2015年不再适用,因为CORS已得到广泛支持。@PatrikAlienus您发布的链接与此问题无关,并讨论了一个完全不同的问题。@PatrikAlienus:您不理解这个问题。正如,你的评论是“胡说八道”。@DanDascalescu我想我上面提到的问题是错误的。有一个复选标记和277个向上投票…@PatrikAlienus:OP想要将任意主机名解析为IP。您链接到的答案仅从
window.location
获取当前页面的主机名,并且不尝试解析它。我想说的是,这个问题几乎是的重复,尽管您没有说明是使用客户端脚本还是服务器端代码(如NodeJS)。此问题的可能重复会解析上的主机名Enclout的服务器,而不是运行javascript的机器上。由此产生的IP可能会有所不同。