使用 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'
          }]
        })
    })
}