系统代理是什么意思?

一句话结论

系统代理是写在操作系统网络配置里的一个代理地址与端口,各个应用读到之后自行决定是否把请求交给代理软件。

客户端开启“系统代理”,本质是改了系统的代理设置。浏览器等多数软件会遵守,但命令行、游戏、部分桌面程序不一定,这也是“开了没反应”的常见原因。

打开代理客户端,界面上总有一个“系统代理”开关。它容易被当作“开了就全局科学上网”,其实它做的事情要朴素得多。

它是什么

操作系统提供一个公共登记处,里面可以填写“代理服务器地址与端口”,常见的有 HTTP 代理和 SOCKS 代理两种写法。客户端启动后会在本机监听一个端口,打开系统代理,就是把这个地址端口写进系统登记处。

之后,凡是愿意读取这份登记的程序,会自觉把请求发给这个本机端口,由客户端转给节点。注意关键词是“愿意”:这是一种约定,系统并不会强制所有程序服从。

谁会遵守,谁不会

类型 通常表现
主流浏览器 一般读取系统设置,可能另有自己的代理选项
命令行工具 常需要手动设置环境变量,不一定读系统设置
自带网络栈的桌面程序 有的无视系统代理
游戏与部分更新程序 多半不走系统代理
非 TCP 流量(UDP 等) 系统代理主要面向 HTTP/SOCKS,覆盖有限

所以有人开着系统代理,浏览器能上,某个应用却连不上,这并不矛盾。想让更多流量被接管,需要看TUN 模式,它工作在更底层,两者的取舍可以读Clash 系统代理与 TUN 的区别。

常见误解

“开关打开就一定生效。” 开关只是改设置。客户端异常退出时,设置有可能残留,表现为关了客户端后整台电脑都上不了网。

“有了系统代理,DNS 也被代理了。” 不一定。域名解析走哪里取决于具体实现,解析可能泄露在本地网络,参见 DNS 泄露。

“系统代理和分流是一回事。” 不是。系统代理决定流量进不进客户端,分流决定进来之后走哪条出口。

怎么确认状态

  1. 打开系统自带的网络设置,找到代理一栏,看地址端口是否与客户端显示的一致。
  2. 关闭客户端后再看一次,确认设置已被还原;没有还原就手动关闭开关。
  3. 换用另一个应用测试,区分是应用不遵守,还是节点本身有问题。
  4. 对照系统代理无效排查按症状逐项检查。

下一步

确认是开关层面的问题,读系统代理无效怎么办;想了解更彻底的接管方式,读 TUN 模式。

哪些文章讲到了系统代理

想对照具体机场的记录?

机场榜单和机场目录里,价格、线路、协议、节点地区都是逐家列着的;不确定该装哪个客户端,试试客户端筛选器。