先判断:是 UWP 回环限制,还是代理本身不可用

浏览器可以联网,Microsoft Store 或某个商店应用却一直加载,是排查 UWP 回环限制的常见入口。Clash 的系统代理通常指向本机地址,例如 127.0.0.1:7890。运行在 AppContainer 隔离环境中的应用,默认不能像普通桌面程序一样访问本机回环服务,因此可能无法连接这个代理入口。

但“从商店安装”不等于“受到同一种 UWP 限制”。Microsoft Store 也分发传统桌面程序,打包桌面应用的网络行为同样可能不同。本文的回环豁免方法主要针对受 AppContainer 网络隔离约束的应用,不能把所有商店下载失败都归因于这一点。

先完成三项基础检查

  1. 确认代理端口。在客户端的端口设置中查看 HTTP 端口或混合端口。本文使用 7890 举例;若实际是 7897,下面的测试也必须改成 7897。
  2. 确认 Windows 的代理地址。Windows 11 打开「设置」→「网络和 Internet」→「代理」→「手动设置代理」→「编辑」,检查地址与端口是否对应客户端。使用客户端系统代理开关时,应由客户端维护这组值,避免两边反复覆盖。
  3. 确认代理出口可用。浏览器访问目标服务,并在 Clash 的连接或日志面板中查看请求。浏览器也失败时,先检查订阅、所选节点与分流规则,不要直接批量添加回环豁免。

在 PowerShell 中可用下面两条命令分别检查本地端口和显式 HTTP 代理。第二条命令中的地址用于测试 HTTP 端口或支持 HTTP 的混合端口,不适用于仅提供 SOCKS 的端口。

Test-NetConnection -ComputerName 127.0.0.1 -Port 7890
curl.exe --proxy http://127.0.0.1:7890 --head --max-time 20 https://www.microsoft.com/

三种方法怎么选:单个应用优先回环豁免

前两种方法都在修改 Windows 的回环豁免列表:图形工具便于点选,命令行便于确认包名和撤销。第三种方法使用 TUN 接管网络流量,不依赖应用主动连接本机 HTTP 代理;它属于替代流量路径,并不是给应用添加了回环权限。

方法 适合情况 操作影响
客户端内置回环工具 客户端提供 UWP 或 Loopback 入口,且只需处理少数应用 为勾选的应用添加回环豁免
CheckNetIsolation 命令 需要明确包名、查看现状或精确撤销 按包系列名称管理豁免列表
TUN 虚拟网卡 应用不遵循系统代理,或需要接管更多网络流量 改变流量接管方式,需要额外检查路由与 DNS

建议先尝试前两种方法中的一种。添加豁免后仍然失败,再判断应用是否读取系统代理、目标域名是否被分流为直连,以及是否需要 TUN。排查过程中每次只改一个变量,保留前后的日志记录。

方法一:使用客户端内置 UWP 回环工具

部分 Windows 客户端集成了回环豁免工具,入口可能标注为「UWP 回环」「UWP Loopback」或「Loopback Exemption」。不同客户端及版本的位置不一致,不能假设所有 Clash 客户端都有同一个菜单。若设置页没有这个入口,直接使用下一节的 Windows 内置命令即可。

  1. 保持 Clash 正常运行,确认系统代理已经开启,记下当前监听端口。
  2. 在客户端设置中查找 UWP 或 Loopback 相关入口,打开工具;若 Windows 请求管理员授权,确认程序来源后再允许。
  3. 在应用列表中找到目标应用,例如 Microsoft Store。若列表同时显示名称与包标识,应结合包标识确认对象,而不是只看相似图标。
  4. 只勾选需要使用本机代理的应用,点击工具提供的保存或应用按钮。按钮名称取决于具体工具。
  5. 完全关闭目标应用后重新打开。若后台进程仍在运行,可在任务管理器中结束该应用的任务,再进行测试。

列表没有目标应用怎么办

先确认应用已经安装到当前 Windows 用户,而不是仅安装在另一个账户下。刷新列表后仍找不到,就通过 PowerShell 查询包名。传统 Win32 应用可能根本不属于这个工具管理的对象,不能通过“勾选一个名字相近的包”解决。

方法二:用 CheckNetIsolation 精确添加和撤销豁免

Windows 10 与 Windows 11 提供 CheckNetIsolation.exe,无需另装回环工具。打开「开始」,搜索 PowerShell,右键选择「以管理员身份运行」。以下查询以当前登录用户已安装的 Microsoft Store 为例,不需要先查询所有用户的软件包。

第一步:查询 PackageFamilyName

Get-AppxPackage -Name Microsoft.WindowsStore |
  Select-Object Name, PackageFamilyName

常见的 Microsoft Store 包系列名称为 Microsoft.WindowsStore_8wekyb3d8bbwe。应以本机输出为准。参数需要的是 PackageFamilyName,不是包含版本号与处理器架构的 PackageFullName。

若要查找其他应用,可以先列出当前用户的包,再根据名称筛选。下面的命令会按名称排序,便于定位目标:

Get-AppxPackage |
  Sort-Object Name |
  Select-Object Name, PackageFamilyName

第二步:查看现有列表并添加目标包

CheckNetIsolation.exe LoopbackExempt -s
CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation.exe LoopbackExempt -s

-s 显示现有豁免,-a 添加一项,-n 指定包系列名称。最后再次查询,确认目标包已出现在列表中。工具成功执行只是权限设置成功,接下来仍要重启应用并验证实际请求。

第三步:用变量处理其他应用,避免抄错包名

下面同样以 Microsoft Store 示范:先保存查询结果,再传给命令。处理其他应用时,应先从上一步的列表确认准确的 Name,再替换查询条件;不要把应用的中文显示名称直接当成包名。

$app = Get-AppxPackage -Name Microsoft.WindowsStore
if ($null -ne $app) {
    CheckNetIsolation.exe LoopbackExempt -a "-n=$($app.PackageFamilyName)"
} else {
    Write-Output "当前用户未找到 Microsoft Store 包。"
}

撤销时只删除本次添加的条目

CheckNetIsolation.exe LoopbackExempt -d -n="Microsoft.WindowsStore_8wekyb3d8bbwe"
CheckNetIsolation.exe LoopbackExempt -s

-d 删除指定豁免。无需为一次排查清空整个列表,以免影响其他已配置的应用。遇到拒绝访问,先检查终端是否提升为管理员;遇到找不到包,重新查询当前用户的安装状态和包系列名称,不要继续猜测标识。

方法三:使用 TUN 接管不遵循系统代理的应用

如果应用不读取 Windows 系统代理,即使添加回环豁免,也不会自动把它的请求送进 Clash。此时可考虑支持 TUN 的客户端与内核,例如基于 mihomo 的客户端。TUN 通过虚拟网络接口和路由接管符合条件的 IP 流量,让应用不必主动访问 127.0.0.1:7890。

  1. 确认内核与权限。在客户端的内核信息中确认当前使用的内核支持 TUN。若客户端要求安装服务模式,按其界面完成安装并确认服务运行;有些实现需要管理员权限启动。
  2. 建立单一测试条件。先记录系统代理状态,再暂时关闭系统代理,仅开启 TUN 测试,避免无法判断究竟是哪条路径生效。
  3. 启用路由与 DNS 接管。检查客户端 TUN 设置中的自动路由和 DNS 相关选项。mihomo 配置中常见字段有 tun.enable、auto-route 与 dns-hijack,但不能只复制一个片段就假定所有客户端都会采用它。
  4. 重启目标应用并观察连接。确认请求出现在客户端连接列表中,再查看命中的规则、策略组与实际出口。

TUN 接管不等于所有流量都通过代理节点。Clash 处于 Rule 模式时,请求仍按规则匹配,可能命中 DIRECT,也可能进入代理策略组。若商店相关域名被设为直连,而当前网络的直连路径不可用,仍然可能出现加载失败。

添加豁免后仍失败:按日志区分四类问题

1. 完全看不到目标请求

先确保应用已经退出并重启,再检查 Windows 系统代理是否仍指向客户端实际端口。如果回环列表正确、浏览器显式代理测试也成功,而该应用始终没有请求记录,可能是它不使用系统代理,或请求由其他组件发出。可改用 TUN 做对照测试,而不是重复添加同一个包。

2. 请求出现,但规则命中 DIRECT

这说明请求已经进入内核,应转向分流检查。查看连接详情中的目标域名、规则类型和出口。Microsoft Store 的登录、页面内容与下载可能使用不同域名或不同系统组件,修复一个入口不一定覆盖全部下载流程;不要仅凭页面打开就认定后台下载也已走同一路径。

3. 连接到代理后超时,或出现 DNS 错误

检查所选节点是否能访问同一目标,查看日志中是否存在域名解析失败。使用 TUN 时,还要确认 DNS 请求是否被预期的配置接管。企业网络中的内网域名、其他 VPN 的 DNS 和客户端的 DNS 设置可能冲突,应逐项测试,不要同时更换解析服务器、节点和路由。

4. 页面能打开,下载任务仍停滞

下载可能由系统服务或其他进程参与,单个应用的回环豁免不等于整台电脑的所有服务都使用用户代理。不要直接执行修改 WinHTTP 全局代理的命令,也不要反复重置商店缓存来替代网络定位。先观察下载发生时是否有新连接、连接由什么进程产生,再决定是否需要 TUN 或修正规则。

验证结果与回退:保留可复现的配置

  • 验证应用功能:分别测试启动、登录、内容加载与下载,不把一个按钮恢复当成全部完成。
  • 验证代理路径:查看连接记录中的规则和出口;测试完成后从临时测试状态恢复到日常使用的 Rule 模式。
  • 记录修改:保存应用包系列名称、实际端口和新增豁免,便于以后迁移或撤销。
  • 需要回退时:图形工具取消对应勾选,或用 LoopbackExempt -d 删除指定包;若测试了 TUN,再恢复原来的 TUN 与系统代理状态。

最短排查顺序是:先验证本地代理可用,再给受限制的目标应用添加回环豁免;应用不读取系统代理时,再考虑 TUN。这样能够把端口、权限、路由和分流问题分开处理,也方便在修改后准确判断是哪一步生效。