先分清:下载失败、解析失败,还是配置加载失败
Clash 客户端显示“订阅失败”,不代表订阅链接一定过期。一次导入通常会经过请求链接、接收内容、解析配置、交给内核加载几个步骤。错误发生在哪一步,决定下一步该检查网络、文本格式,还是内核兼容性。
- 先保留可用配置。不要删除旧订阅,也不要覆盖唯一的本地备份。更新失败时,已有配置可能仍能正常使用。
- 记录完整错误。在客户端的日志或导入提示里,查看失败时间、HTTP 状态码、错误字段及行号。只截取“失败”两个字没有定位价值。
- 确认客户端与内核。记录客户端名称、版本,以及内核是否为 Clash Meta(现名 mihomo)。界面版本与内核版本不是同一个概念。
- 一次只改一项。先排查链接和响应,再检查 YAML,最后处理代理组与规则。每次修改后手动更新一次,避免同时调整多项设置。
按报错提示确定检查顺序
不同客户端的提示文字会有差异,但底层错误通常可以归到下表。状态码只说明服务器如何响应,不能单独证明账号余额、订阅期限或设备数量的具体情况。
| 错误或现象 | 优先判断 | 下一步操作 |
|---|---|---|
401、403 |
认证失败、访问限制或防护拦截 | 重新复制订阅,核对账号状态与服务方提示 |
404、410 |
地址失效、路径变更或资源撤销 | 从后台获取当前入口,不沿用旧收藏 |
429 |
请求过于频繁 | 停止连续刷新,按服务端提示等待后重试 |
timeout、no such host |
连接超时或域名解析失败 | 更换网络,对照直连与代理更新结果 |
x509、证书错误 |
系统时间、证书链或 HTTPS 拦截异常 | 校准时间,检查网络认证和证书环境 |
yaml: line … |
文本语法错误,或响应并非配置 | 查看返回内容与对应行的上下文 |
unsupported proxy type |
内核不支持节点协议或字段组合 | 核对配置要求与实际运行内核 |
| 代理组或规则引用不存在 | 名称不一致、节点被过滤或配置不完整 | 沿引用关系核对节点、代理组和规则 |
检查订阅链接:复制完整地址,再确认账号状态
排除复制错误和入口选错
回到服务方后台,使用订阅入口的复制按钮。检查链接开头是否为 https://,末尾是否混入换行、空格或中文标点。不要手动删除问号后的参数,也不要把聊天软件显示的省略文本当作完整地址。
- 区分后台网页与订阅接口:能打开账号页面,不等于拿到了供客户端读取的配置地址。
- 区分单节点与订阅:
ss://、vmess://等可能是节点分享 URI,不是可直接更新的完整 Clash 配置。 - 检查链接是否已重置:修改密码、重置订阅令牌或迁移服务后,旧链接可能失效。
- 核对服务状态:查看后台是否明确提示到期、流量耗尽或暂停服务,不要仅凭客户端报错推断。
浏览器能打开,为什么客户端仍然失败?
浏览器可能带着登录 Cookie,也可能自动通过了网页验证;客户端请求通常没有同样的登录状态。浏览器显示“访问成功”,实际内容却可能是登录页、验证码或订阅说明页。应检查响应是否为配置文本,而不是只看页面是否打开。
即使状态码为 200,返回内容仍可能以 <!DOCTYPE html> 开头,或者是带有错误说明的 JSON。此时 YAML 报错只是后续表现,真正需要处理的是接口访问或账号认证。
检查订阅格式:Clash 配置与节点列表不是一回事
完整 Clash 配置通常是 YAML 映射,可能包含 proxies、proxy-groups、rules 等顶层字段。另一些订阅返回 Base64 编码的节点列表,或者专供其他客户端使用的配置。它们都可能被称为“订阅”,但不能假定导入方式相同。
完整配置、节点提供者和单节点的区别
- 完整配置:通常在客户端的配置或订阅管理中导入,提供代理组、规则等运行设置。
- 节点提供者文件:供
proxy-providers引用,通常主要包含proxies列表,不等同于一份完整的使用方案。 - 单节点 URI 或编码列表:需要客户端明确支持相应导入方式;不支持时,应向服务方获取匹配的 Clash 或 mihomo 格式。
优先使用服务方明确标注适配当前客户端或内核的入口。部分服务会根据请求的 User-Agent 返回不同格式,因此同一地址在浏览器与客户端中的响应不一定一致。不要随意伪造请求头来碰运气,先核对服务方的接入说明。
检查 YAML:先看行号,再检查上一行
只有确认响应确实是配置后,才进入 YAML 排查。将配置保存在本地,用能显示行号、空格和制表符的编辑器打开。解析器标出的行号是“发现无法继续解析的位置”,真正错误可能出现在上一行的引号、冒号或缩进中。
常见语法错误与正确写法
- 用空格缩进。建议每层使用 2 个空格;不要用 Tab 做层级缩进。同级字段必须对齐。
- 冒号后留空格。
mixed-port: 7890是键值写法,mixed-port:7890不能表达同样的映射结构。 - 使用英文标点。中文冒号、弯引号与全角空格会改变语法,不要通过富文本编辑器修改配置。
- 检查列表短横线。
rules等列表的条目前需要-;短横线后的空格不能漏。 - 避免重复顶层键。不要追加第二段同名
dns或rules;不同解析器对重复键的处理可能不同。
下面只是基础字段的语法示例,不包含远程节点,也不是订阅替代品。它展示了端口、模式、嵌套字段与规则列表的层级:
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
dns:
enable: true
nameserver:
- 1.1.1.1
- 8.8.8.8
rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- MATCH,DIRECT
这里的 7890 是示例监听端口,不是订阅下载端口;修改它通常不能修复远程订阅解析错误。示例中的 DNS 地址也不保证在所有网络可达,正式配置应结合网络环境选择,不要为了修复缩进而整段覆盖现有 DNS 设置。
语法通过后,仍要检查名称引用
YAML 能读出来,不代表内核一定能加载。假设规则写成 MATCH,Proxy,配置中就必须存在名为 Proxy 的有效出站目标,例如代理组。组名大小写、空格和符号都应保持一致。若节点过滤条件把所有候选节点排除了,也要检查代理组是否仍能形成有效选择。
本地修改订阅生成的文件可能在下次更新时被覆盖。需要长期保留的调整,应使用客户端支持的覆写、合并或扩展配置机制,并先确认其作用范围。
检查网络:把订阅下载与节点连接分开测试
节点能连通,不代表订阅域名可访问;订阅能下载,也不代表每个节点都可用。如果日志是超时、域名解析或 TLS 错误,应先解决请求链路,不要立即修改节点协议和分流规则。
- 确认普通网页可访问。公共 Wi-Fi 可能要求先在浏览器完成认证。系统日期与时区错误也可能导致 HTTPS 证书校验失败。
- 切换网络做对照。例如从家庭宽带切到手机热点,在同一客户端手动更新一次。只改变网络,保留其余设置,便于判断是否为当前网络限制。
- 区分直连更新与代理更新。若客户端支持为订阅更新选择访问方式,分别测试。某些客户端的更新请求并不遵循系统代理,不能仅凭系统代理开关推断实际路径。
- 检查失效的本地代理。Windows 11 可在「设置」→「网络和 Internet」→「代理」查看手动代理地址。若仍指向已关闭的
127.0.0.1:7890,遵循该设置的请求可能失败;实际端口以客户端为准。 - 避免形成更新死循环。若必须依靠现有代理才能下载订阅,先保留一份可用配置,再执行更新。删除旧配置可能让订阅请求也失去可用出口。
遇到 429 时停止高频点击更新;若服务端提供 Retry-After,按其要求等待。遇到 5xx 时,记录时间与状态码再联系服务方。连续刷新通常不能修复服务端错误,还可能触发额外限制。
导入成功后的验证与求助清单
导入成功只代表配置被接受,不代表流量已经由它接管。先确认当前选中的配置,再检查代理组、规则模式和系统代理或 TUN 状态。TUN 用于接管流量,不是修复订阅文本格式的开关。
按三个层次验证结果
- 配置层:确认更新时间变化,节点与代理组正常显示,日志不再报告语法或引用错误。
- 连接层:选择一个节点测试连通性。延迟测试失败与订阅解析失败属于不同阶段,应分别记录。
- 流量层:访问一个预期走代理的站点,在连接记录中确认匹配规则和实际出站。规则模式下,部分请求走直连属于正常配置行为。
仍然失败时,提供这些信息
向服务方或客户端维护者求助时,提供客户端版本、内核版本、系统版本、失败时间、HTTP 状态码和脱敏后的完整错误。若提示 YAML 行号,附上该行及前后各 3 行的脱敏内容;若是网络问题,说明直连、代理和手机热点测试各自的结果。
不要只发送“Clash 用不了”,也不要公开整份订阅文件。清晰区分“请求失败”“解析失败”“加载失败”“连接失败”,通常能减少来回确认。需要核对接管设置,可继续查看系统代理入门步骤;配置字段和断网问题可到疑难手册的 config.yaml 章节继续检查。