首页 客户端与配置 代理机制与生效
ARTICLE / 017

系统代理是什么意思?为什么客户端启动不代表它一定生效?

“我已经把客户端打开了,右下角小猫/图标都在运行,为什么打开特定网页还是打不开?”这是新手在网络排障中最常遇到的困扰。核心原因就在于误将“客户端进程已启动”等同于“网络流量已被系统代理成功接管”。

快速结论

系统代理是操作系统提供给应用层的一个网络配置“建议指标”。客户端在后台运行仅代表本地端口就绪,若未主动将该端口写入操作系统的网络代理设置,普通浏览器依旧会走本地直连;同时,终端命令行工具与底层游戏默认不读取系统代理,必须额外配置环境变量或开启 TUN 虚拟网卡模式。

一、系统代理的本质:操作系统的“指示牌”

在 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(默认遵循系统设置)、系统自带应用商店;
  • 完全无视系统代理的软件:
    1. 开发工具与命令行:CMD、PowerShell、Git Bash、Python requests 库、Docker;
    2. 客户端网游与专用引擎:Steam 游戏内联机、各类大型对战游戏;
    3. 部分安全通信工具与自建网络栈程序。

三、如何解决“部分软件不走代理”的问题?

应用类型 不走系统代理的原因 推荐的解决手段
普通浏览器 客户端未开启“系统代理”开关或端口被抢占 在客户端UI中重新开启系统代理开关
Git / 终端终端 遵循类Unix传统,只读取环境变量 配置 set http_proxy=http://127.0.0.1:7890
开发与大型游戏 直接走底层系统套接字或自定义驱动 在客户端开启 TUN 模式 (虚拟网卡接管)

四、常见故障排查

故障:关闭客户端后,电脑连正常国内网页也打不开了?

这是最经典的系统代理残留故障。

原因是客户端在非正常退出(如直接任务管理器强制结束、电脑死机或异常重启)时,未来得及清除操作系统注册表中的代理开关。导致操作系统依然执着地把流量发往已经不存在的 127.0.0.1:7890。

解决方法:重新打开客户端并正常点击一次“关闭系统代理”,或手动在 Windows 网络设置中关闭“使用代理服务器”。

五、常见问题 FAQ

Q:平时一直开着 TUN 模式会影响日常网速吗?

在规则配置完善的前提下基本不影响。因为 TUN 模式同样遵循 Clash 的规则分流引擎,访问国内流量时依然会在虚拟网卡层直接走本地直连通道。