系统代理是什么意思?
一句话解释
系统代理是操作系统里统一登记的一份代理设置,浏览器等遵守该设置的程序会按它把流量交给代理。
客户端的“系统代理”开关,实际是替你写入或清除这份系统设置。它只管得到会读设置的程序,不读的程序不受影响。你会在客户端首页的开关和系统的网络代理设置页同时看到它,异常退出时还可能残留。
它是一张“贴在系统里的告示”
系统代理,说白了是在操作系统里登记一条信息:“需要代理的话,请去某某地址某某端口”。这个地址通常指向本机上客户端开的一个本地端口。浏览器、很多桌面软件在发起连接前会读这份登记,读到了就按它的要求把流量交给客户端。
关于代理这类中间服务器的通用概念,可以看 Mozilla MDN:HTTP 代理与隧道。
它管得到什么,管不到什么
| 情形 | 通常的结果 |
|---|---|
| 浏览器、遵守系统设置的桌面程序 | 会走代理 |
| 自带网络栈、不读系统设置的程序 | 不走代理,直接访问 |
| 命令行工具、终端里的 git 等 | 一般不读,需要单独设置 |
| 游戏、部分聊天软件 | 视程序而定,常常不走 |
因此“系统代理已开启,但某个程序仍然不走梯子”是很常见的现象,原因多半不在节点,而在系统代理管不到它。想整机接管,要么给程序单独配置代理,要么改用 TUN 模式。
在哪里会看到
- 客户端首页或设置页的“系统代理”开关。
- Windows 的网络与代理设置页、macOS 的网络设置里的代理选项,里面会出现地址和端口。
- 浏览器的代理设置,多数默认跟随系统。
具体菜单名随系统版本和客户端变化,以当前版本为准。设置方法可以看系统代理怎么设置。
常见误解
- “系统代理就是全局模式”。两者不是同一层:系统代理决定哪些程序被交给客户端,全局模式是客户端内部决定所有请求都走代理还是按规则走,对照见分流。
- “关掉客户端,系统代理自然就关了”。客户端正常退出时一般会清除设置,但异常退出、崩溃或被强制结束时,可能留下指向已不存在端口的设置,表现为关了梯子后反而上不了网。
- “系统代理能管所有 App”。管不到的流量需要另想办法。
怎么自己确认和修复
先打开系统的代理设置页,看里面有没有指向本机端口的条目;如果客户端已退出而条目还在,手动关闭它。完整的处理步骤见关掉梯子后上不了网,而某个程序始终不走代理的排查,见某个 App 不走代理怎么办。