网络诊断 客户端与订阅

系统代理不生效、部分软件不走代理怎么办

客户端显示已开启系统代理,但浏览器打不开、终端和 Git 不走代理、部分桌面应用仍然直连怎么办?本文讲清系统代理的生效范围,给出 Windows 注册表、WinHTTP、macOS scutil 检查命令,以及环境变量、应用单独配置和 TUN 模式三种解决思路。

系统代理不生效、部分软件不走代理怎么办

核心结论

系统代理只是一条“建议”,只有主动读取这项设置的程序才会走代理。浏览器一般会遵守,但终端、Git、npm、很多游戏和部分桌面应用不会。排查时先确认系统代理确实被写入并指向正确端口,再按程序类型处理:终端设置环境变量,个别工具单独配置代理,无法配置的程序开启 TUN 模式统一接管。

文章目录 8 个章节
  1. 问题现象
  2. 可能原因
  3. 各类程序读取代理的方式
  4. 浏览器也不走代理时
  5. 环境变量的几个细节
  6. 快速自查
  7. 逐步排查
  8. 常见误区
  9. 仍然无法解决
  10. 相关问题
  11. 常见问题

问题现象

客户端界面上“系统代理”开关已经打开,但实际表现并不符合预期:

  • 浏览器能正常访问,终端里的 curl、git clone、npm install 却超时或被重置;
  • Claude Code、Codex 等命令行 AI 工具提示连接失败,而网页版正常;
  • 部分桌面应用、游戏启动器、Windows 应用商店中的应用仍然直连;
  • 浏览器本身也打不开,提示无法连接到代理服务器;
  • 关闭客户端后,系统代理设置没有被清除,导致完全无法上网。

系统代理不是“强制所有流量走代理”,而是在系统里写下一个代理地址,由各个程序自行决定是否使用。理解这一点,大部分问题就有了方向。

可能原因

原因 判断方法 解决方法
程序本身不读取系统代理 浏览器正常,终端、游戏等不正常 设置环境变量、单独配置代理,或开启 TUN 模式
系统代理端口与客户端不一致 查询到的代理端口与客户端设置不同 在客户端中重新开关系统代理,或修正端口
浏览器有独立代理或扩展 浏览器设置或扩展中另有代理配置 关闭扩展,改为“使用系统代理设置”
WinHTTP 代理未同步 部分系统服务与程序不走代理 按需导入或重置 WinHTTP 代理
应用商店应用无法访问回环地址 只有商店应用失败 使用回环豁免工具或 TUN 模式
绕过列表包含目标地址 目标域名或网段在“不使用代理”的列表中 从绕过列表中移除

各类程序读取代理的方式

程序类型 读取方式 是否默认跟随系统代理
Chrome、Edge 等浏览器 系统代理设置 是
Firefox 默认使用系统代理,也可单独设置 取决于浏览器设置
PowerShell、终端、curl HTTP_PROXY / HTTPS_PROXY 环境变量 否
Git、npm、pip 环境变量或各自的配置文件 否
部分系统服务 WinHTTP 代理设置(Windows) 否
游戏、部分桌面应用 各自实现,很多完全不读代理 否

表中情况以各程序实际版本为准。结论是:凡是“否”的那一类,单靠系统代理解决不了。

浏览器也不走代理时

如果连浏览器都不正常,问题通常不在“程序不读代理”,而在代理设置本身。第一种情况是端口不一致:客户端改过端口,或者重装后端口变化,而系统里写的仍是旧端口,浏览器会提示无法连接到代理服务器。第二种情况是 PAC 模式:部分客户端使用自动配置脚本,脚本地址失效时浏览器会直接连接失败。第三种情况是浏览器被扩展接管:代理切换类扩展会覆盖系统设置,客户端怎么开关都不影响浏览器。第四种情况是目标地址被写进了绕过列表,例如整段局域网网段或某些域名后缀,访问它们时浏览器会跳过代理。

环境变量的几个细节

终端环境变量除了 HTTP_PROXY、HTTPS_PROXY,还有一个 NO_PROXY,用来指定不走代理的地址,例如本机地址和公司内网域名。不同工具对大小写、通配写法的支持不完全一致,部分工具只读取小写变量;设置后只对当前窗口以及从该窗口启动的程序有效,已经打开的编辑器或终端需要重新启动才会读到新变量。

快速自查

  1. 在客户端中确认混合端口或 HTTP 端口号,记下来;
  2. 用下文命令查看系统代理实际指向的地址,与客户端端口比较;
  3. 检查浏览器是否装有代理类扩展;
  4. 确认只运行了一个代理客户端;
  5. 分清出问题的是浏览器、终端还是某个应用,分别处理。

逐步排查

  1. 查看系统代理是否写入正确。

    # Windows:查看当前用户的系统代理设置
    Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | Select-Object ProxyEnable, ProxyServer, ProxyOverride, AutoConfigURL
    # 查看 WinHTTP 代理(部分系统组件使用)
    netsh winhttp show proxy
    # macOS:查看系统代理
    scutil --proxy
    networksetup -getwebproxy "Wi-Fi"
    networksetup -getsecurewebproxy "Wi-Fi"
    # Linux(GNOME 桌面)
    gsettings get org.gnome.system.proxy mode

    ProxyEnable 为 1、ProxyServer 为 127.0.0.1:端口 才表示已写入;ProxyOverride 是绕过列表。macOS 中网络服务名称以 networksetup -listallnetworkservices 的输出为准。

  2. 确认代理端口能用。

    curl.exe -I -x http://127.0.0.1:7897 https://www.google.com --max-time 10
    curl -I -x http://127.0.0.1:7897 https://www.google.com --max-time 10

    端口以客户端设置为准。能返回状态码,说明代理本身正常,问题只在于程序没有使用它。

  3. 为终端设置代理环境变量。 只对当前窗口有效:

    $env:HTTP_PROXY = "http://127.0.0.1:7897"
    $env:HTTPS_PROXY = "http://127.0.0.1:7897"
    curl.exe -s https://www.cloudflare.com/cdn-cgi/trace
    export HTTP_PROXY=http://127.0.0.1:7897
    export HTTPS_PROXY=http://127.0.0.1:7897
    curl -s https://www.cloudflare.com/cdn-cgi/trace

    返回的 loc= 变成节点地区,说明终端已经走代理。长期生效需要写入 PowerShell 配置文件或 shell 配置文件;AI 编程工具的完整设置见 Claude Code 在 WSL 与 Windows 中的代理设置。

  4. 为个别工具单独配置。 Git 可以执行 git config --global http.proxy http://127.0.0.1:7897,npm 可以执行 npm config set proxy http://127.0.0.1:7897 与 npm config set https-proxy http://127.0.0.1:7897。不再需要时记得用 git config --global --unset http.proxy 等命令撤销,参数以各工具官方文档为准。

  5. 处理 WinHTTP 与应用商店应用。 需要让使用 WinHTTP 的程序走代理时,可以在管理员 PowerShell 中执行 netsh winhttp import proxy source=ie 导入当前系统代理,恢复时执行 netsh winhttp reset proxy。应用商店应用则在客户端提供的回环豁免工具(如 Clash Verge Rev 设置中的 UWP 工具,名称以实际版本为准)里勾选对应应用。

  6. 无法配置的程序开启 TUN 模式。 游戏和不提供代理设置的应用,只能通过 TUN 模式在网卡层面接管,开启方法见 Clash Verge Rev TUN 模式设置。

常见误区

  • 以为开了系统代理就是全局接管:系统代理与 TUN 模式的覆盖范围完全不同,区别见系统代理和 TUN 模式区别;
  • 环境变量写错大小写或协议:部分工具只认小写的 https_proxy,两种都设置更稳妥;
  • 随意修改 WinHTTP 后忘记恢复:关闭客户端后 WinHTTP 仍指向本地端口,会导致部分系统功能无法联网;
  • 同时开两个代理客户端:两者都会改写系统代理,最后生效的是哪一个很难判断。

仍然无法解决

  1. 在客户端中关闭再重新开启系统代理,让它重新写入设置;
  2. 如果关闭客户端后出现完全无法上网,参考开了代理客户端后完全没网怎么办;
  3. 开启 TUN 后仍有个别程序不走代理,查看客户端连接面板中是否出现该程序的连接,没有出现的话检查其是否使用了独立的网络栈或内置代理设置。

请遵守当地法律法规与服务条款,合理使用网络工具。

相关问题

常见问题

为什么浏览器能用,终端里的命令却连不上?

终端程序一般不读取系统代理设置,而是读取 HTTP_PROXY、HTTPS_PROXY 等环境变量。在终端中设置这些变量,或者开启 TUN 模式,终端流量才会经过代理。

开了系统代理,浏览器也打不开是怎么回事?

常见原因是系统代理指向的端口与客户端实际监听的端口不一致,或者浏览器装了代理扩展、设置了独立代理,覆盖了系统设置。用文中的命令查看系统代理地址并与客户端端口对比即可。

TUN 模式和系统代理可以同时开吗?

可以,多数客户端允许同时开启,TUN 会接管不读取系统代理的程序。但要确保只有一个代理客户端在运行,否则两个程序可能互相争抢流量。

Windows 应用商店里的应用为什么不走代理?

这类应用默认不允许访问本机回环地址,无法连接 127.0.0.1 上的代理端口。可以在客户端提供的回环豁免工具中勾选对应应用,或者使用 TUN 模式。

本文最后更新于 。网络服务与 AI 平台政策变化较快,如发现信息过时,欢迎通过联系我们反馈。