节点覆盖请求IP解析

Coo*_*ter 9 ip dns http request node.js

我正在努力找到正确的术语来准确地说出这个问题,但我会尽我所能:

在node.js中,使得当一个HTTP请求(例如请求是有办法来手动重写IP地址some-domain.com/whatever和,而不是通过DNS解析的IP地址,手动提供一些IP地址1.2.3.4)?

这将有效地来讲,是设置相当于1.2.3.4 some-domain.com在/etc/hosts

Cha*_*had 14

Node 的 http 和 https 模块采用 Agent 作为参数,您可以使用参数覆盖 dnslookup解析器。

const http = require("http");
const https = require("https");


const staticLookup = (ip, v) => (hostname, opts, cb) => cb(null, ip, v || 4)
const staticDnsAgent = (scheme, ip) => new require(scheme).Agent({lookup: staticLookup(ip)})

http.get("http://some-domain.com/whatever", {agent: staticDnsAgent('http', '1.2.3.4')})
Run Code Online (Sandbox Code Playgroud)

  • 这是太棒了。谢谢。不知道为什么这个解决方案没有得到更多的支持。 (2认同)

小智 7

有一个小模块就是这样做的:邪恶的dns.

evilDns.add('foo.com', '1.2.3.4');
Run Code Online (Sandbox Code Playgroud)