是否可以使用Javascript解析主机名?
这是假设的代码:
var hostname = "www.yahoo.com";
var ipAddress = DnsLookup(hostname);
console.log(ipAddress);
我正在寻找那种神奇的DnsLookup()
功能。 : - )
答案 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.