外观
浏览器能访问,为什么应用程序连接失败
结论先说:系统代理只是一个“建议”,浏览器会遵守,但很多应用不会。命令行工具、开发工具、部分桌面应用和游戏会绕过系统代理直接联网,所以浏览器正常、应用失败。最直接的处理方法是开启客户端的 TUN 模式,让所有流量都经过代理;或者在应用里单独填写代理地址。
故障表现
- 浏览器能打开某服务的网页版,但同一服务的桌面客户端提示“网络错误”“无法连接”;
- 终端里的 git、npm、pip、curl 等命令超时,浏览器却一切正常;
- 某个应用之前能用,换了客户端或重装系统后不能用了;
- 应用能登录,但部分功能(如同步、更新、插件市场)失败。
适用环境
- 电脑端:Windows 11、macOS 15 及更新版本,使用 Clash Verge Rev、v2rayN 或其他支持系统代理和 TUN 的客户端;
- 手机端:Android 和 iOS 的代理客户端通常以 VPN 方式接管全部流量,较少出现这个问题;如果手机上也出现,多半是分流规则或应用本身的限制,见检查步骤第 5 步。
系统代理与 TUN 的区别可以参考 系统代理、TUN、规则和全局是什么关系。
检查步骤
1. 确认当前使用的是系统代理还是 TUN
打开客户端,看“系统代理”和“TUN(虚拟网卡)”哪个处于开启状态。只开了系统代理时,不读取系统代理的应用就会直连,这是最常见的原因。
2. 判断应用是否读取系统代理
| 应用类型 | 是否通常读取系统代理 |
|---|---|
| 主流浏览器 | 通常读取(除非装了代理扩展或单独设置) |
| 基于 Chromium/Electron 的桌面应用 | 多数读取,但部分应用有自己的代理设置 |
| 命令行工具(git、npm、pip、curl 等) | 通常不读取,需要环境变量或单独配置 |
| 游戏、部分即时通讯软件 | 通常不读取,或只支持特定代理类型 |
| 使用 UDP 的应用(语音、部分游戏) | 系统代理一般不处理 UDP |
3. 看客户端的连接记录
大多数电脑端客户端有“连接”或“日志”页面。打开出问题的应用后观察:
- 连接记录里没有该应用的请求:说明应用没有走代理(直连了);
- 有请求但走了“直连(DIRECT)”规则:说明是分流规则把它分到了直连;
- 有请求、走了代理但失败:可能是节点不支持该应用的服务,或该服务限制了节点所在地区。
4. 检查应用自身的代理设置
部分应用在设置里有独立的“代理”或“网络”选项,默认值可能是“不使用代理”,此时即使开了系统代理也不会生效。也要检查是否残留了一个已失效的旧代理地址(例如更换客户端后端口变了)。
5. 检查分流规则与服务的地区限制
切到全局模式再试应用:全局可用、规则不可用,就是规则把它分到了直连;全局也不可用,可能是该服务不支持当前节点地区,换一个该服务支持的地区节点。AI 类应用较常见这种情况。
对应处理
| 检查结果 | 处理方法 |
|---|---|
| 只开了系统代理,应用不读取 | 在客户端开启 TUN 模式(首次需要管理员权限或安装服务模式),然后重启应用 |
| 命令行工具不走代理 | 在终端设置 HTTP_PROXY、HTTPS_PROXY 环境变量,或为 git、npm 等单独配置代理,地址使用客户端显示的本地端口 |
| 应用有独立代理设置 | 在应用设置中填入 127.0.0.1 和客户端的本地端口,或选择“使用系统代理” |
| 应用里残留旧代理地址 | 改为当前客户端的端口,或改回“使用系统代理” |
| 规则把应用分到直连 | 全局模式确认后,在规则中把该服务域名加入代理,见 规则与分流怎么设置 |
| 全局模式也失败 | 换该服务支持地区的节点;清除应用登录状态后重新登录 |
| 开启 TUN 后其他网络异常 | 关闭其他 VPN 或加速器;仍有问题时关闭 TUN,改用应用单独设置代理 |
本地端口在哪里看
客户端的设置页面会显示本地代理端口(有的客户端叫“混合端口”或“HTTP 端口”)。不同客户端默认值不同,以你客户端里显示的数字为准。
环境变量用完要记得清理
在系统级或 shell 配置文件中永久写入代理环境变量后,一旦关闭客户端,这些工具会全部连不上网。临时使用时只在当前终端窗口中设置更稳妥。
恢复验证
- 重启出问题的应用(很多应用只在启动时读取代理设置),确认能正常联网;
- 在客户端的连接记录里能看到该应用的请求,并且走的是代理规则;
- 命令行工具可以执行一次简单的联网命令(例如拉取一个公开仓库)确认;
- 关闭 TUN 或客户端后,确认应用能恢复直连,没有留下失效的代理配置。