使用 DNS 模块解析混淆的 IP 地址 Node.js
Resolve obfuscated IP addresses Node.js using the DNS module
我知道 Mac OSX 我可以 运行 这个命令:dns-sd -q a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local
它 returns 一个 IP 地址。我可以在 Node.js 中执行此操作吗?似乎 dns
模块主要用于 website -> IP
,而不是 IP -> IP (resolved)
转换。任何帮助表示赞赏。谢谢!
注意:输入的地址为mDNS,由Bonjour 转换。我找到了 Bonjour npm package/library, but don't think it works in this case. Also, I found mdns which has the mdns.dns_sd
函数,但我似乎无法弄清楚如何在我的案例中使用它。
谢谢!
我找到了一个完全可以满足您需要的 Node 模块。
Multicast-DNS 能够将mDNS IP 查询为标准IP 格式。他们的自述文件中的片段可以满足您的需求:
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'
}]
})
})
}
我知道 Mac OSX 我可以 运行 这个命令:dns-sd -q a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local
它 returns 一个 IP 地址。我可以在 Node.js 中执行此操作吗?似乎 dns
模块主要用于 website -> IP
,而不是 IP -> IP (resolved)
转换。任何帮助表示赞赏。谢谢!
注意:输入的地址为mDNS,由Bonjour 转换。我找到了 Bonjour npm package/library, but don't think it works in this case. Also, I found mdns which has the mdns.dns_sd
函数,但我似乎无法弄清楚如何在我的案例中使用它。
谢谢!
我找到了一个完全可以满足您需要的 Node 模块。 Multicast-DNS 能够将mDNS IP 查询为标准IP 格式。他们的自述文件中的片段可以满足您的需求:
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'
}]
})
})
}