如何解决使用 DNS 模块解析混淆的 IP 地址 Node.js
我知道在 Mac OSX 上我可以运行这个命令:dns-sd -q a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local
并且它返回一个 IP 地址。我可以在 Node.js 中做到这一点吗?似乎 dns
模块主要用于 website -> IP
,而不是 IP -> IP (resolved)
转换。任何帮助表示赞赏。谢谢!
注意:输入的地址将是由 Bonjour 转换的 mDNS。我找到了 Bonjour npm package/library,但不认为它在这种情况下有效。此外,我发现 mdns 具有 mdns.dns_sd
功能,但我似乎无法弄清楚如何在我的情况下使用它。
谢谢!
解决方法
我找到了一个 Node 模块,它完全可以满足您的需求。 Multicast-DNS 能够以标准 IP 格式查询 mDNS IP。他们 README 中的代码段满足您的需求:
var mdns = require('multicast-dns')()
mdns.on('response',function(response) {
console.log('got a response packet:',response)
})
mdns.on('query',function(query) {
console.log('got a query packet:',query)
})
// lets query for an A record for 'brunhilde.local'
mdns.query({
questions:[{
name: 'brunhilde.local',type: 'A'
}]
})
显然您需要用有效的 mDNS ip 替换 brunhilde.local
。我把代码简化成这样:
function query(mdns_ip){
return new Promise((resolve,reject)=>{
mdns.on('response',function(response) {
if(response.rcode === 'NOERROR'){
resolve(response.answers[0].data)
mdns.destroy()
} else {
reject(response.rcode)
mdns.destroy()
}
})
mdns.query({
questions:[{
name: mdns_ip,type: 'A'
}]
})
})
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。