使用 ProxyChains 让 macOS 应用使用代理访问网络
2024 12 23 05:41 PM 13次查看
我查看了一下 VCMI 的源码,发现它是用 Qt 的
QNetworkRequest
来创建网络连接的,没有写任何代理相关的代码。由于我是用 SOCKS5/HTTP 代理翻墙,并没有采用 VPN 这种全局代理的方式,因此只能另找方法让它使用代理。问了下 ChatGPT,从它推荐的几个方案里,我找到了 ProxyChains。原理就是 ProxyChains 的动态链接库重写了 socket 相关的接口,然后通过
LD_PRELOAD
(Linux) 或 DYLD_INSERT_LIBRARIES
(macOS)环境变量让其优先加载,从而取代了 libc 的默认实现。QNetworkRequest
底层也是使用 libc 来建立网络连接,理论上是可以生效的。使用步骤如下:
- 安装 ProxyChains:
brew install proxychains-ng
- 创建配置文件(改成自己的代理地址):
proxy_dns [ProxyList] socks5 127.0.0.1 1080
- 使用 ProxyChains 启动 VCMI(不能直接启动 VCMI.app,需要找里面的可执行文件):
proxychains4 -f proxychains.conf /Applications/VCMI.app/Contents/MacOS/vcmilauncher
顺带一提,第二步的 proxy_dns 指的是用代理来解析域名,默认是用本地 DNS 来解析的。由于 raw.githubusercontent.com 的 DNS 被劫持了,这里必须启用,或者修改
/etc/hosts
文件。另外,ProxyChains 只能代理 TCP 连接,因此不支持用 UDP 协议来通信的应用,还有 ping 这种用 ICMP 协议的程序。
0条评论 你不来一发么↓