默认在.bashrc启用torsocks导致Tor Browser无法连接的解决方法求助
我在.bashrc里加了torsocks on的配置,让终端里默认所有命令都走Tor代理:
# ~/.bashrc: executed by bash(1) for non-login shells. # ... . torsocks on
平时用着没问题,但最近发现Tor Browser连不上Tor网络了,日志里报这个错:
return (<Some timestamp> [WARN] Proxy Client: unable to connect OR connection (handshaking (proxy)) with <Some IP>:443 ID=<Some ID> RSA_ID=<Some ID> ("Connection refused") )
把.bashrc里的torsocks配置删掉就正常了,而且我试过在终端里先执行. torsocks off再启动Tor Browser(不管用torbrowser-launcher还是直接跑可执行文件),还是不行。
有没有办法既能让终端默认启用torsocks,又能正常用Tor Browser呢?我用的是Debian 11(bullseye),torbrowser-launcher版本0.3.3-6,torsocks版本2.3.0-3,内核5.10.0-23-amd64。
问题原因
Tor Browser本身已经内置了完整的Tor客户端和代理机制,当你全局启用torsocks后,Tor Browser会被强制通过系统的Tor代理再去连接Tor网络,相当于代理嵌套,这就导致连接被拒绝了。而且torsocks off只是临时关闭终端的torsocks生效状态,但相关的代理环境变量(比如ALL_PROXY、socks_proxy)还会残留,Tor Browser启动时继承了这些变量,所以还是会走错误的代理路径。
解决方法
这里给你几个可行的方案:
1. 临时启动时手动绕过代理
在终端里启动Tor Browser前,彻底清除所有代理相关的环境变量,然后再启动:
unset ALL_PROXY http_proxy https_proxy socks_proxy TORSOCKS_ENABLED torbrowser-launcher
或者更彻底的,直接用env命令清空环境变量,只保留启动图形程序必需的变量:
env -i DISPLAY="$DISPLAY" XAUTHORITY="$XAUTHORITY" torbrowser-launcher
这样启动的Tor Browser就不会受到torsocks的影响了。
2. 制作专属启动脚本(永久解决)
写个简单的脚本,每次用它启动Tor Browser就自动跳过代理:
- 创建一个名为
start-torbrowser.sh的文件,内容如下:
#!/bin/bash # 清除代理相关环境变量 unset ALL_PROXY http_proxy https_proxy socks_proxy TORSOCKS_ENABLED # 启动Tor Browser exec torbrowser-launcher
- 给脚本加执行权限:
chmod +x start-torbrowser.sh
- 以后直接运行这个脚本就能正常启动Tor Browser了,终端的torsocks依然保持默认启用。
3. 修改桌面快捷方式(图形化启动更方便)
如果你习惯用桌面图标启动Tor Browser,可以修改它的快捷方式配置:
- 找到Tor Browser的桌面文件,一般在
~/.local/share/applications/或者/usr/share/applications/里,文件名类似torbrowser.desktop - 打开文件,找到
Exec=开头的行,修改成:
Exec=env -i DISPLAY="$DISPLAY" XAUTHORITY="$XAUTHORITY" /usr/bin/torbrowser-launcher
保存后,点击桌面图标启动Tor Browser就不会受torsocks影响了。
备注:内容来源于stack exchange,提问作者MetaColon

