使用Socket和Tor检测服务状态时遇General SOCKS服务器故障错误
解决
socks.GeneralProxyError: Socket error: 0x01: General SOCKS server failure 错误 常见原因及修复方案
1. Tor服务未正常运行
这是触发该错误最常见的原因,说明程序无法连接到本地9050端口的Tor服务:
- 检查Tor服务状态:
- Windows:打开任务管理器查看
tor.exe进程,或在系统服务中确认Tor服务是否启动。 - Linux/macOS:执行
systemctl status tor(systemd系统)或brew services list(macOS brew安装的Tor)。
- Windows:打开任务管理器查看
- 手动启动Tor服务:
- Windows:启动Tor Browser或直接开启Tor系统服务。
- Linux:
sudo systemctl start tor - macOS:
brew services start tor
2. 代码逻辑错误
你的代码存在两处明显问题,会导致逻辑混乱或误导性输出:
- 错误1:
print(connected)是打印函数对象,而非连接成功的提示,应改为print("目标服务连接成功")这类明确信息。 - 错误2:未添加异常捕获,程序遇到错误会直接崩溃,无法定位具体问题。
修复后的代码示例:
import socks import socket def tor_connect(): # 设置SOCKS5代理,最后一个参数开启Tor推荐的远程DNS解析 socks.set_default_proxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050, True) socket.socket = socks.socksocket def check_service(): try: tor_connect() print("已连接到Tor代理") # 替换dest_ip为实际目标IP s = socket.create_connection(("dest_ip", 22), timeout=5) print("目标SSH服务连接成功") s.close() except socks.GeneralProxyError as e: print(f"代理连接失败: {e}") except socket.timeout: print("连接超时,目标服务可能未运行或不可达") except ConnectionRefusedError: print("目标服务拒绝连接") except Exception as e: print(f"其他错误: {e}") if __name__ == "__main__": check_service()
3. Tor端口配置冲突
- 检查Tor端口是否匹配:默认Tor SOCKS端口为9050,若修改过
torrc配置文件,需确认SocksPort项与代码中的端口一致。- Windows配置文件路径:
%APPDATA%\Tor\torrc - Linux配置文件路径:
/etc/tor/torrc
- Windows配置文件路径:
- 检查端口占用情况:
- Windows:
netstat -ano | findstr :9050 - Linux/macOS:
lsof -i :9050
若端口被占用,可关闭占用程序,或修改Tor的SocksPort及代码中的对应端口。
- Windows:
4. 防火墙或安全软件拦截
本地防火墙、杀毒软件可能阻止程序访问Tor的9050端口,或阻止Tor访问外部网络。可临时关闭安全软件测试,若问题解决,添加对应程序或端口的允许规则。
内容的提问来源于stack exchange,提问作者Mayank Joshi
相关产品推荐
相关产品推荐

