能否使用JavaScript解析主机名?
以下是假设代码:
var hostname = "www.yahoo.com";
var ipAddress = DnsLookup(hostname);
console.log(ipAddress);
我正在寻找那个神奇的DnsLookup()
函数。 :-)
能否使用JavaScript解析主机名?
以下是假设代码:
var hostname = "www.yahoo.com";
var ipAddress = DnsLookup(hostname);
console.log(ipAddress);
我正在寻找那个神奇的DnsLookup()
函数。 :-)
虽然 JavaScript 没有标准的 DNS 功能,但是您可以调用第三方公共 API 来进行 DNS 解析。
例如,Encloud 提供了这样的 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();
当然,你需要获取自己的认证令牌。免费的Enclout账户每分钟只能进行6个请求。
如果你只想要IP地址,请使用GET请求获取http://api.konvert.me/forward-dns/yourdomain.com。
有一个相对较新的(2018年)互联网标准称为DNS over HTTPS(也称为DoH),它已经开始流行。它允许您通过HTTPS将wireformat DNS查询发送到“DoH服务器”。好处是,使用DoH,您可以在HTTPS之上获得整个DNS协议。这意味着您可以获取很多有用的信息。
话虽如此,在浏览器中进行DNS查找非常容易,因为有一个名为dohjs的开源JavaScript库。以下是一个快速示例代码片段:
const resolver = new doh.DohResolver('https://1.1.1.1/dns-query')
resolver.query('www.yahoo.com')
.then(console.log)
.catch(console.error);
完全透明:我是dohjs的贡献者。
cURL的DNS over HTTPS维基页面上有很多资源,包括公共DoH服务器列表和DoH工具列表(主要是服务器和客户端软件)。
您需要回调到服务器端并从那里解析该值。Javascript 中没有标准的 DNS 查找功能。
不行 - JavaScript 被阻止进行跨域请求。可能有一些黑客技巧可以帮助你(this 这个看起来很有前途),但默认情况下你不能这样做。
你可能能够请求某些内容并确保你收到 HTTP 200 响应。
window.location
获取当前页面的主机名,并没有尝试解析它。 - Dan Dascalescu