Skip to content

浏览器能访问,为什么应用程序连接失败 ​

结论先说:系统代理只是一个“建议”,浏览器会遵守,但很多应用不会。命令行工具、开发工具、部分桌面应用和游戏会绕过系统代理直接联网,所以浏览器正常、应用失败。最直接的处理方法是开启客户端的 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 配置文件中永久写入代理环境变量后,一旦关闭客户端,这些工具会全部连不上网。临时使用时只在当前终端窗口中设置更稳妥。

恢复验证 ​

  1. 重启出问题的应用(很多应用只在启动时读取代理设置),确认能正常联网;
  2. 在客户端的连接记录里能看到该应用的请求,并且走的是代理规则;
  3. 命令行工具可以执行一次简单的联网命令(例如拉取一个公开仓库)确认;
  4. 关闭 TUN 或客户端后,确认应用能恢复直连,没有留下失效的代理配置。

相关阅读 ​