一、系统代理的本质:操作系统的“指示牌”
在 Windows、macOS 等现代操作系统中,“系统代理(System Proxy)”本质上是一个存储在系统注册表或网络服务管理配置里的全局指示。
例如在 Windows 的 设置 -> 网络和 Internet -> 代理 中,开启后实际上是在注册表项 ProxyServer 写入了类似 127.0.0.1:7890 的地址。
操作系统立起了一块指示牌,告知各软件:“如果需要发起 HTTP/HTTPS 请求,建议送往这个本地中继端口”。
二、为什么“客户端启动”不等于“代理生效”?
这里存在两个关键技术断层:
断层一:客户端运行只是在“本地开了一扇门”
启动 Clash Verge 或其它客户端,只是在操作系统后台拉起了一个监听进程,在 127.0.0.1:7890 准备好接收流量。
如果你没有在客户端界面上勾选“系统代理 (Set as system proxy)”这个开关,操作系统并不知道有这个门存在,所有浏览器依然会通过默认网卡走家庭宽带公网直连。
断层二:不是所有软件都会“看指示牌”
系统代理只是一种软性约定,并不具备强制拦截流量的特权:
- 会遵守系统代理的软件:Chrome、Edge、Safari、Firefox(默认遵循系统设置)、系统自带应用商店;
- 完全无视系统代理的软件:
- 开发工具与命令行:CMD、PowerShell、Git Bash、Python requests 库、Docker;
- 客户端网游与专用引擎:Steam 游戏内联机、各类大型对战游戏;
- 部分安全通信工具与自建网络栈程序。
三、如何解决“部分软件不走代理”的问题?
| 应用类型 | 不走系统代理的原因 | 推荐的解决手段 |
|---|---|---|
| 普通浏览器 | 客户端未开启“系统代理”开关或端口被抢占 | 在客户端UI中重新开启系统代理开关 |
| Git / 终端终端 | 遵循类Unix传统,只读取环境变量 | 配置 set http_proxy=http://127.0.0.1:7890 |
| 开发与大型游戏 | 直接走底层系统套接字或自定义驱动 | 在客户端开启 TUN 模式 (虚拟网卡接管) |
四、常见故障排查
故障:关闭客户端后,电脑连正常国内网页也打不开了?
这是最经典的系统代理残留故障。
原因是客户端在非正常退出(如直接任务管理器强制结束、电脑死机或异常重启)时,未来得及清除操作系统注册表中的代理开关。导致操作系统依然执着地把流量发往已经不存在的 127.0.0.1:7890。
解决方法:重新打开客户端并正常点击一次“关闭系统代理”,或手动在 Windows 网络设置中关闭“使用代理服务器”。
五、常见问题 FAQ
Q:平时一直开着 TUN 模式会影响日常网速吗?
在规则配置完善的前提下基本不影响。因为 TUN 模式同样遵循 Clash 的规则分流引擎,访问国内流量时依然会在虚拟网卡层直接走本地直连通道。