我注意到当我使用 proxychains 启动 Chrome 时:
$ proxychains google-chrome
每个请求都经过正确的代理,除了发送到 Google 网站的内容! 例如,当我停止在 proxychains conf 中配置的代理时,使用代理的 Chrome 我无法访问除 Google 之外的任何网站 (err_connection_refused)。
我用 Firefox 做了同样的测试:每个请求都通过代理链进行代理,包括发送给 Google 的。
我知道还有其他方法可以代理请求并且也可以用于 Google,但我更感兴趣的是为什么当您通过 Chrome 访问 Google 时代理链方法不起作用。
在内部,proxychains 使用 LD_PRELOAD 环境变量来包装必要的系统调用并透明地代理所有请求。我没想到 Chrome 能够绕过这种包装。这怎么可能呢?
答案1
Proxychains 错误/不兼容性:
Chrome 中有一个错误,显然是由沙盒功能引起的;检查 第 45 期
代理链限制:
代理链在许多情况下都可能出现泄漏,下面是其中一些示例
- 子进程没有被代理(以 chrome 为例,除了主进程之外,还可以使用许多其他进程……解决方案 :解决方法可能是修改二进制位置)
- Socks v4 代理无法通过隧道传输 DNS 请求(解决方案 :改用 Socks v5)
- 与某些沙盒功能/应用程序不兼容,因为它们使用内核用户空间功能与主系统分离,代理链无法看到/拦截它们的连接(解决方案 :将代理链与 iptables 结合起来)
选择 :
你可以试试袜子作为替代方案,它通常可用发行版存储库,apt-get install tsocks
或dnf install tsocks
等等。