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

时间:2011-08-18 19:34:09

标签: javascript dns

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

这是假设的代码:

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

我正在寻找那种神奇的DnsLookup()功能。 : - )

4 个答案:

答案 0 :(得分:3)

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

例如,Encloud provides such an API,您可以为它创建XMLHttpRequest:



var oReq = new XMLHttpRequest();
oReq.onload = function () {
  var response = JSON.parse(this.responseText);
  alert(JSON.stringify(response.dns_entries));
}  
oReq.open("get", "https://www.enclout.com/api/v1/dns/show.json?auth_token=rN4oqCyJz9v2RRNnQqkx&url=stackoverflow.com", true);
oReq.send();




当然,您应该获得自己的Auth令牌。免费Enclout帐户每分钟限制为6次。

如果您只想要IP,请为http://api.konvert.me/forward-dns/yourdomain.com发出GET请求。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

有一个相对较新的(2018年)提议的互联网标准https://chromium.googlesource.com/chromium/src/+/652f0ba0d8d29ba7508654bf20172d3c83a784fb/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappDataStorage.java(也称为DoH)正在兴起。它允许您通过HTTPS将有线格式DNS查询发送到“ DoH服务器”。令人高兴的是,通过DoH,您可以在HTTPS之上获得整个DNS协议。这意味着您可以获得很多有用的信息。

话虽这么说,有一个名为DNS over HTTPS的开源JavaScript库,可以很轻松地在浏览器中进行DNS查找。这是一个简单的示例代码片段:

const resolver = new doh.DohResolver('https://1.1.1.1/dns-query')
resolver.query('www.yahoo.com')
  .then(console.log)
  .catch(console.error);

完全公开:我是dohjs的贡献者。

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

答案 3 :(得分:-2)

否 - 禁止javascript发出跨域请求。可能有一些黑客可能能够帮助你(this看起来很有希望),但默认你不能这样做。

您可以申请某些内容并确保获得HTTP 200.