在前端开发中,经常需要进行 DNS 查询以及与 DNS 相关的操作,比如 A 记录、CNAME 记录、MX 记录等等。但是,有时候我们并不知道需要访问的域名是否存在,或者需要进行一些异常的 DNS 操作,比如劫持某个域名。这时,我们需要使用 npm 包 evil-dns。
什么是 evil-dns?
evil-dns 是一个 Node.js 的 DNS 服务器,可以用于模拟 DNS 服务器,方便开发人员进行测试。
正常情况下,我们使用的 DNS 服务器都是 ISP 公司提供的,而 evil-dns 支持创建自己的 DNS 服务器,可以用于模拟本机环境中的所有 DNS 请求,方便我们进行 DNS 相关的开发工作。
安装和使用
首先,我们需要在项目中安装 evil-dns,可以通过 npm 安装:
npm install evil-dns --save-dev
安装完成后,我们就可以使用 evil-dns 了。以下是 evil-dns 的基本使用方法:
- 创建一个 DNS 服务器:
const dnsServer = require('evil-dns').server({ forward: { 8.8.8.8: 53 } });
上面的代码创建了一个 DNS 服务器,forward 对象中的 IP 地址可以是你本地的 DNS 服务器地址,也可以是其他公共 DNS 服务器地址。
- 添加 DNS 记录:
dnsServer.addRecord('example.com', '10.0.0.1');
上述代码为域名 example.com 添加了一条 A 记录,解析到 IP 地址为 10.0.0.1。我们可以添加多条记录,包括 A 记录、CNAME 记录、MX 记录等等。
- 开启 DNS 服务器:
dnsServer.listen(53,'localhost')
上述代码表示将 DNS 服务器绑定在 localhost 的 53 端口。
- 查询 DNS 记录:
const dns = require('dns'); dns.lookup('example.com', function(err, address, family) { console.log('address: %j family: IPv%s', address, family); });
上述代码查询域名 example.com 的解析结果,console.log 中返回的 address 应该是我们之前添加的 10.0.0.1。
示例代码
以下为一个完整的 evil-dns 使用示例代码:
const dnsServer = require('evil-dns').server({forward: { 8.8.8.8: 53 } }) dnsServer.addRecord('example.com', '10.0.0.1') dnsServer.listen(53, 'localhost') const dns = require('dns') dns.lookup('example.com', function (err, address, family) { console.log('address: %j family: IPv%s', address, family) // 地址是 "10.0.0.1" })
结语
evil-dns 的使用非常简单,但是它为我们进行 DNS 相关开发工作提供了很大的便利。在使用 evil-dns 的时候,我们需要注意不能滥用,以免影响其它用户和网络。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/59198