有什么办法让 Node 里发起的请求的 DNS 请求走 Socks 代理

2019-04-29 10:57:46 +08:00
 EridanusSora

或者其他代理手段?

开发者层面,非用户层面。

当前使用 socks-proxy-agent 代理请求 结果发现 DNS 没过代理。

5680 次点击
所在节点    Node.js
11 条回复
jitongxi
2019-04-29 13:02:17 +08:00
windows ? windows 的 dns 请求不走当前程序的,是一个独立的服务。
oyosc
2019-04-29 13:06:19 +08:00
建议你先查查什么是 DNS
YuxiangLuo
2019-04-29 13:16:30 +08:00
http 请求的话可以试试我这个 https://github.com/YUxiangLuo/node-socks5-http
northernlights
2019-04-29 16:02:21 +08:00
弄个虚拟机,搞个网关级别的代理吧。
whoami9894
2019-04-29 16:23:44 +08:00
udp 包为什么会走应用层代理
giuem
2019-04-29 16:32:06 +08:00
socks5h
momocraft
2019-04-29 16:33:23 +08:00
瀏覽器那個選項的意思是 "由代理服務器解析域名", 你其實不知道代理服務器是不是從 dns 獲得 ip
jinliming2
2019-04-29 17:48:41 +08:00
可以尝试 Google 或者 1.1.1.1 的 DNSoverHTTPS 接口,自己解析然后直接用,自己解析走的 HTTPS 就可以直接走代理了。
whoami9894
2019-04-29 18:04:48 +08:00
@whoami9894
我明白 lz 的意思了…… socks5 的控制报文里写域名,让 socks5 server 拿到后去解析
lzvezr
2019-04-29 18:18:22 +08:00
应该是挺麻烦, DNS 查询的时候可以传入一个 lookup 函数, 需要自己写, 不知道 npm 上有没有现成的
EridanusSora
2019-04-29 19:55:43 +08:00
结贴。

看了下 socks-proxy-agent 的源码。

https://github.com/TooTallNate/node-socks-proxy-agent/blob/d8152efd21d2c0d7a9d08588de61bbc59e6c3dde/index.js#L60

如果初始化的时候传入的是`socks5://xxx`这样的字符串,会判断成不适用`socks5h`,结果导致本地解析。

所以,要么使用`socks5h://xxx`,要么传入 object 显式指定 protocol。

注:使用`socks://xxx`也是默认使用`socks5h`。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/559676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX