先判断:是 UWP 回环限制,还是代理本身不可用
浏览器可以联网,Microsoft Store 或某个商店应用却一直加载,是排查 UWP 回环限制的常见入口。Clash 的系统代理通常指向本机地址,例如 127.0.0.1:7890。运行在 AppContainer 隔离环境中的应用,默认不能像普通桌面程序一样访问本机回环服务,因此可能无法连接这个代理入口。
但“从商店安装”不等于“受到同一种 UWP 限制”。Microsoft Store 也分发传统桌面程序,打包桌面应用的网络行为同样可能不同。本文的回环豁免方法主要针对受 AppContainer 网络隔离约束的应用,不能把所有商店下载失败都归因于这一点。
先完成三项基础检查
- 确认代理端口。在客户端的端口设置中查看 HTTP 端口或混合端口。本文使用
7890举例;若实际是7897,下面的测试也必须改成7897。 - 确认 Windows 的代理地址。Windows 11 打开「设置」→「网络和 Internet」→「代理」→「手动设置代理」→「编辑」,检查地址与端口是否对应客户端。使用客户端系统代理开关时,应由客户端维护这组值,避免两边反复覆盖。
- 确认代理出口可用。浏览器访问目标服务,并在 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 内置命令即可。
- 保持 Clash 正常运行,确认系统代理已经开启,记下当前监听端口。
- 在客户端设置中查找 UWP 或 Loopback 相关入口,打开工具;若 Windows 请求管理员授权,确认程序来源后再允许。
- 在应用列表中找到目标应用,例如 Microsoft Store。若列表同时显示名称与包标识,应结合包标识确认对象,而不是只看相似图标。
- 只勾选需要使用本机代理的应用,点击工具提供的保存或应用按钮。按钮名称取决于具体工具。
- 完全关闭目标应用后重新打开。若后台进程仍在运行,可在任务管理器中结束该应用的任务,再进行测试。
列表没有目标应用怎么办
先确认应用已经安装到当前 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。
- 确认内核与权限。在客户端的内核信息中确认当前使用的内核支持 TUN。若客户端要求安装服务模式,按其界面完成安装并确认服务运行;有些实现需要管理员权限启动。
- 建立单一测试条件。先记录系统代理状态,再暂时关闭系统代理,仅开启 TUN 测试,避免无法判断究竟是哪条路径生效。
- 启用路由与 DNS 接管。检查客户端 TUN 设置中的自动路由和 DNS 相关选项。mihomo 配置中常见字段有
tun.enable、auto-route与dns-hijack,但不能只复制一个片段就假定所有客户端都会采用它。 - 重启目标应用并观察连接。确认请求出现在客户端连接列表中,再查看命中的规则、策略组与实际出口。
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。这样能够把端口、权限、路由和分流问题分开处理,也方便在修改后准确判断是哪一步生效。