访问验证

Mihomo 订阅配置导入失败怎么办?先看状态码和解析报错

更新于 2026-10-24 · liuheng2024.store

简答:先判断失败发生在订阅下载、返回内容、YAML 解析还是 Mihomo 配置校验;保留旧配置后,用状态码、响应前几行和 mihomo -t 逐层验证,再处理 Provider、策略组或启用状态。

定义:Mihomo 订阅配置导入失败,是指客户端无法取得订阅内容、无法解析配置文本,或因字段、Provider、策略组引用不符合当前核心要求而拒绝加载。

先看速查卡:报错对应哪一步

导入失败只会优先卡在四层:下载请求、返回内容、YAML 解析、Mihomo 配置校验。先看下面一行最接近你的现象,再执行对应动作。本文与 Mihomo 项目及开发者无隶属关系;不要先删除旧配置,也不要连续刷新订阅。

现象或报错优先判断下一步动作正常判定
401、403、404、超时、DNS 失败订阅下载层重新复制完整 URL,记录状态码,再排查网络、代理和 DNS取得非空响应,并能确认 HTTP 状态
429请求频率受限停止连续刷新;查看 Retry-After,没有时稍后再试下一次请求不再返回 429
浏览器打开后是登录页、验证码或 HTML返回内容不对确认复制的是订阅 URL,不是网页入口或登录地址响应开头是配置文本,而非 <html>
YAML parse error、缩进或 mapping 错误文本格式层保存响应副本,检查报错行附近的缩进、冒号和引号文件能通过 YAML 解析和核心校验
proxy group not found、字段不支持语义校验层核对策略组名称、Provider 名称、字段拼写和核心版本被引用的组名存在,配置可加载
导入成功但节点为空或仍是旧节点Provider、Profile 或启用状态分别检查更新时间、文件大小、节点数和当前配置Provider 有节点,当前 Profile 已切换

关键结论:“保存了订阅地址”“下载了响应”“加载了配置”“启用了当前配置”不是同一个动作。Mihomo 官方文档把远程代理集合的 url、path、interval、header、proxy 和健康检查分开配置,具体字段可查看Mihomo 官方代理集合配置文档。

第一步:先分清订阅 URL、本地 YAML 和 Provider

  1. 订阅 URL:客户端需要请求远程地址,再保存并解析返回内容。先把链接复制到纯文本编辑器,检查是否被截断、换行、增加空格或混入中文标点。完整 URL 可能包含 token,不要发到公开群聊、工单或截图中。
  2. 本地 YAML:如果你导入的是文件,先复制一份副本,再检查文件编码、缩进、顶层键和报错行附近内容,不要继续修改订阅地址。
  3. Proxy Provider:配置主体可能已经加载,但 Provider 单独更新失败。官方文档将 Provider 分为 http、file 和 inline 类型;HTTP 类型需要 url,下载内容还要符合 Provider 支持的内容格式。

Provider 内容不一定只有完整 YAML。Mihomo 官方内容说明同时列出 YAML、URI 列表和 Base64 内容,并说明 URI 或 Base64 形式不需要写 proxies: 字段,可查看Mihomo 官方代理集合内容说明。因此,看到内容不是 YAML 时,不要直接判断订阅失效;先确认它是否属于当前 Provider 支持的格式。

导入前建议复制旧 YAML、旧 Profile 或配置目录,使用新名称导入新内容。新配置先验证,再切换为当前配置;旧配置仍能加载时,不要为了排查而覆盖它。

第二步:用 curl 查看状态码和响应前几行

这一步适合 Windows PowerShell、macOS 或 Linux 的命令行环境。命令中的示例地址必须替换为你的订阅链接;完整链接可能含 token,只在自己的设备本地执行,不要把终端记录或输出公开。

macOS 或 Linux:

URL='替换为你的订阅链接'; curl -sS -L --max-time 15 -D /tmp/mihomo-head.txt -o /tmp/mihomo-body.txt -w 'HTTP %{http_code} ' "$URL"

sed -n '1,8p' /tmp/mihomo-head.txt; sed -n '1,8p' /tmp/mihomo-body.txt

Windows PowerShell:

$u='替换为你的订阅链接'; curl.exe -sS -L --max-time 15 -D mihomo-head.txt -o mihomo-body.txt -w 'HTTP %{http_code}`n' $u; Get-Content mihomo-head.txt -TotalCount 8; Get-Content mihomo-body.txt -TotalCount 8

-L用于跟随重定向,--max-time 15用于限制单次传输时间,-D保存响应头,-o保存正文。curl 官方文档说明,-I只发 HEAD 请求,但有些服务器会拒绝 HEAD,所以这里用受限的 GET 更适合检查实际返回内容;相关选项见curl 官方 HTTP 请求说明和curl 官方命令手册。

看到的结果判断处理方式
200,正文是配置文本下载基本成功继续检查 YAML、Provider 内容和当前 Profile
200,正文是 HTML可能是登录页、验证页或错误页回到提供链接的页面重新复制订阅地址
401认证凭据缺失或失效重新生成或复制最新链接;需要请求头时只按公开说明配置
403服务器拒绝当前请求换普通网络测试,并检查客户端代理和请求头设置
404资源不存在或链接路径失效重新获取完整链接,不要只改 URL 尾部字符
429单位时间内请求过多查看 Retry-After 后等待;没有该字段时停止连续刷新

401、403 和 404 可对照RFC 9110 HTTP 语义规范;429 Too Many Requests属于RFC 6585 附加 HTTP 状态码,不能和 RFC 9110 混用。

第三步:YAML 解析失败时,只改格式不改线路

报错原文以客户端日志为准,不同客户端和核心版本的提示文字可能不同。若提示包含 YAML、parse、mapping、indentation 或行号,先复制原文件,再检查报错行前后约 5 至 10 行。

  1. 确认文件开头不是 <html>、登录提示、验证码文本或 JSON 错误对象。
  2. 统一使用空格缩进,不要在同一层级混用 Tab 和空格。
  3. 检查冒号后是否缺少空格,字符串中的 :、#、引号和特殊字符是否需要加引号。
  4. 不要为了消除报错而删除未知字段;先确认该字段是否属于 Mihomo 或其他客户端格式。
  5. 用核心校验命令验证,而不是只看编辑器是否有语法高亮。

命令行 Mihomo:先确认已安装与配置文件同平台、同架构可运行的 Mihomo,并在终端执行:

mihomo -t -f '替换为本地配置文件路径'

Windows PowerShell 可写为:

.\mihomo.exe -t -f '替换为本地配置文件路径'

官方 Mihomo 源码将 -t定义为“测试配置并退出”;返回成功后,才继续检查节点、策略组和 Provider。若命令不存在,先把命令替换为实际可执行文件路径,不能把客户端界面名称当成命令。参数定义可核对Mihomo 官方源码中的命令行参数。

第四步:节点为空、Provider 不刷新或策略组报错

  1. 检查 Provider 更新记录:查看更新时间、文件大小和节点数量。时间没有变化或文件大小为零,优先回到下载层;不要先改规则。
  2. 检查 Provider 内容:YAML 形式通常包含 proxies;URI 或 Base64 形式可以直接作为 Provider 内容。内容支持范围以官方内容说明为准。
  3. 检查策略组引用:如果提示策略组不存在,逐字核对名称、大小写、空格和标点,并确认对应 Provider 或代理组没有被删除。提示文本可能因客户端不同而变化,最终以日志为准。
  4. 检查当前 Profile:“导入成功”不等于“已经启用”。在配置列表中选中刚更新的 Profile,再确认系统代理、TUN 或其他入站开关是否按客户端提示开启。
  5. 不要临时添加 MATCH:排查时不要把 MATCH 规则插入规则前部或订阅前置内容。它可能提前匹配所有流量,导致原有分流规则无法继续执行。验证应查看实际加载的规则顺序,而不是添加会改变配置行为的兜底规则。

如果更新后仍显示旧节点,先关闭旧连接或重新加载当前 Profile,再观察 Provider 更新时间和节点数量。Mihomo 官方 API 文档提供了查看代理集合及其节点信息的接口说明,可参考Mihomo 官方 API 文档;是否能直接使用该接口,取决于客户端是否启用了外部控制器。

不同使用场景怎么找入口和日志

使用场景导入入口日志或错误位置配置校验方式
Clash Verge RevProfiles 中添加远程配置,或导入本地配置应用日志、service-logs 或界面中的核心错误更新后看配置是否被接受;必要时取出文件,用 mihomo -t -f复核
OpenClashOpenWrt LuCI 的“服务 → OpenClash”中导入订阅或上传配置插件日志、核心日志和调试日志先更新订阅,再确认生成配置、节点和当前启用配置
命令行 Mihomo把订阅内容保存为本地文件,或在配置中使用 Provider 的 url终端标准输出、服务管理器日志或启动日志mihomo -t -f '替换为本地配置文件路径'

Clash Verge Rev 官方项目资料说明,配置、订阅和日志保存在本地数据目录;OpenClash 官方仓库说明其在 LuCI 的 OpenClash 页面导入订阅或配置,并支持订阅管理。不同平台的菜单名称、文件目录和日志位置可能变化,不能直接照搬另一客户端的路径。可核对Clash Verge Rev 官方项目资料和OpenClash 官方仓库。

最后再做一次安全恢复检查

  1. 保留一份旧配置副本,文件名写明日期和“可用”。
  2. 新订阅使用新 Profile 或新文件名,不要直接覆盖旧配置。
  3. 先验证 HTTP 状态、响应内容、YAML、Provider 和策略组,再启用系统代理或 TUN。
  4. 如果新配置失败,切回旧 Profile;旧配置能正常加载时,问题通常集中在新链接、新响应或新配置格式。
  5. 提交日志前删除订阅 token、UUID、密码、私钥、完整节点地址和控制器密钥,只保留错误类型、状态码、系统、客户端和脱敏后的几行内容。

如果你无法确认某个配置文件是否正在被客户端使用,不要直接删除配置目录。先导出或复制,再进行下一次导入测试。

常见问题

Mihomo 订阅链接在浏览器能打开,为什么客户端仍然导入失败?

浏览器拿到的可能是登录页、验证页或重定向后的 HTML,也可能与客户端发送的 User-Agent、Authorization、代理和 TLS 请求不同。先用 curl 查看 HTTP 状态和响应前几行,确认返回的是配置内容。

Mihomo 返回 429 时应该一直点击更新吗?

不应该。429 表示一段时间内请求过多,先停止连续刷新,检查响应中的 Retry-After;没有该字段时等待后再试,避免继续触发限制。

Provider 不是 YAML,是否一定说明订阅失效?

不一定。Mihomo 官方内容说明还支持 URI 列表和 Base64 形式。先确认内容类型是否属于当前 Provider 支持范围,再检查节点数量和配置校验结果。

出现 proxy group not found 应该怎么改?

先核对策略组引用的名称,包括大小写、空格和标点,再确认对应 Provider 或代理组没有被删除。不要为了测试临时添加 MATCH 规则,否则可能改变原有分流顺序。

命令行 mihomo -t 检查什么?

它用于测试指定配置并退出,主要验证配置能否被当前 Mihomo 核心接受。命令通过后,还要继续检查 Provider 是否有节点、策略组是否引用正确,以及当前配置是否已启用。

排查时可以直接把完整订阅链接和日志发出来吗?

不建议。订阅 URL 可能包含 token,配置和日志还可能包含 UUID、密码、私钥、节点地址和访问记录。分享前应删除凭据,只保留错误原文、状态码和脱敏片段。

相关阅读

参考资料

  1. Mihomo 官方代理集合配置文档
  2. Mihomo 官方代理集合内容说明
  3. Mihomo 官方 API 文档
  4. RFC 9110:HTTP 语义规范
  5. curl 官方 HTTP 请求说明(curl.se)
  6. curl 官方命令手册(curl.se)
  7. Clash Verge Rev 官方项目资料
  8. OpenClash 官方仓库