gat*_*byz 5 dns node.js npm nock
import DNS from 'dns'
DNS.resolveTxt('test-website.com', (err, addresses) => {
console.log(err, addresses);
})
Run Code Online (Sandbox Code Playgroud)
以上是节点如何解析网址的示例用法。我想为'dns'构建一个nock库,并拦截处理程序。(这将用于我为 Route53 创建的 AWS nock 库中,因此这不是用于“测试”目的)。我看到了一些有意义的 rewiremock 东西,但这似乎是一个测试模拟工具。有没有办法实现这种拦截?我想弄清楚如何替换整个处理程序本身,而不是在两者之间拦截它并转移到原始方法。*
澄清:我想直接使用 DNS.resolveTxt 并且addresses我从响应中得到的将是我的自定义。
澄清 #2:我想理想地锁定整个 DNS 库。resolveTxt 只是一个例子。
澄清 #3:我想在我的服务中全局模拟 DNS。不仅仅是一次性使用。
澄清 #4(重要):我认为我的问题是如何拦截对 DNS 的 tcp 请求。sudo tcpdump host 1.1.1.1显示从我的计算机设置的 DNS 服务器的当前调用。例如,如果我使用 dns.setServer('1.2.3.4') 并执行一个sudo tcpdump host 1.2.3.4,则每次调用时DNS.resolveTxt,我都可以看到通话记录。知道如何拦截吗?
您可以实现自己的模仿 DNS.Resolver#lookup() 的查找函数
https://nodejs.org/docs/latest-v12.x/api/dns.html#dns_dns_lookup_hostname_options_callback
并将其传递给采用 TCP 连接选项的节点模块函数的选项。
https://nodejs.org/docs/latest-v12.x/api/http.html#http_http_request_options_callback
https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |