F · 系统代理

系统代理不生效:客户端已开启但浏览器仍然直连的排查

客户端显示系统代理已开启,浏览器却仍然直连,常见原因是多个代理软件互相覆盖、浏览器扩展接管、程序不遵循系统代理或注册表残留。本文给出 Windows 下的定位与修复方法。

  • 浏览器仍然直连,访问不到境外网站
  • 浏览器正常,但命令行或个别软件不走代理
  • 重启后系统代理被自动关闭
作者
分类
系统代理
发布
更新

问题描述

客户端已开启系统代理,但浏览器或其它程序的流量没有经过代理客户端。

可能原因

  1. 可能性 · 高

    多个代理客户端互相覆盖

    后启动或后切换的客户端会改写系统代理端口,前一个客户端界面显示“已开启”但实际无效。

  2. 可能性 · 中

    浏览器扩展接管代理

    SwitchyOmega 等扩展会让浏览器忽略系统代理设置。

  3. 可能性 · 中

    程序不遵循系统代理

    命令行工具(git、curl、npm)、部分游戏与 UWP 应用默认不读取系统代理。

  4. 可能性 · 低

    客户端异常退出留下残留

    客户端崩溃后系统代理仍指向已关闭的端口,表现为完全无法上网。

检查方法

  1. CHK-01

    查看 Windows 代理设置

    打开“设置 → 网络和 Internet → 代理 → 手动设置代理”,记录地址与端口。

  2. CHK-02

    对比客户端端口

    在 v2rayN“参数设置”或 Clash Verge Rev“设置”中的端口设置(默认混合端口 7897,以实际界面为准)中查看本地监听端口,两者应一致。

  3. CHK-03

    用命令行验证

    在 PowerShell 中通过客户端端口请求测试地址,能返回结果说明客户端本身工作正常。

    curl.exe -x http://127.0.0.1:10808 -I https://www.google.com

解决步骤

  1. 01

    只保留一个客户端管理系统代理

    在不使用的客户端里关闭“系统代理”或设为“不改变系统代理”,然后在当前客户端重新开启。

  2. 02

    检查浏览器扩展

    暂停代理类扩展,或把扩展切换到“系统代理”模式。

  3. 03

    为命令行单独设置代理

    在 PowerShell 中执行 $env:HTTP_PROXY="http://127.0.0.1:10808" 和 $env:HTTPS_PROXY="http://127.0.0.1:10808"(v2rayN 默认 10808,Clash Verge Rev 默认 7897,按实际端口修改),只对当前窗口生效;或在客户端中改用 TUN 模式。

  4. 04

    清除残留设置

    如果客户端已退出但仍无法上网,在 Windows 代理设置中关闭“使用代理服务器”。

验证方式

  • Windows 代理设置中的端口与当前客户端监听端口一致。
  • 客户端的连接 / 日志页面能看到浏览器发起的连接。

系统代理到底是什么

在 Windows 中,“系统代理”只是一项设置:它告诉愿意读取这项设置的程序,“请把网络请求发给 127.0.0.1 的某个端口”。代理客户端正是在这个端口上监听。它不是强制性的,程序可以选择忽略,这就是为什么浏览器能用而命令行不能用。

TUN 模式则不同,它在网络层创建虚拟网卡,所有程序的流量都会经过客户端,因此能覆盖不遵循系统代理的程序,但对权限和兼容性的要求也更高。

参考资料

  1. v2rayN Wiki · Description of system proxy routing · GitHub Wiki · 访问于 2026.10.24

更新记录

  1. 补充 Clash Verge Rev 默认端口与 HTTP_PROXY 环境变量。
  2. 首次发布。