Clash 订阅更新失败排查:常见报错原因与自动更新间隔设置
梳理订阅拉取超时、证书错误、返回内容非 YAML 等常见失败原因,并说明 interval 自动更新间隔与手动刷新的正确设置方式。
先分清失败位置:下载、解析还是启用
订阅更新通常经过三个步骤:客户端请求订阅地址,检查返回内容,再保存或加载配置。提示“更新失败”不一定表示节点失效;节点仍能连接,也不代表订阅地址仍然有效。排查时先保留当前可用配置,不要删除后重新导入,更不要连续点击刷新。
- 记录对象:是“配置 / Profiles”里的整份远程配置,还是“代理集合 / Proxy Providers”中的某个节点集合。
- 记录原文:打开客户端“日志 / Logs”,手动更新一次,保存同一时间附近的错误、HTTP 状态码和配置名称。不同客户端的入口名称可能不同。
- 检查现状:确认旧配置是否还能使用、最后成功更新时间是否变化,以及更新后是否仍选中了目标配置。
| 日志或状态 | 优先检查 | 下一步 |
|---|---|---|
no such host | 订阅域名解析 | 检查域名拼写与当前网络 DNS |
i/o timeout | 连接或读取超时 | 换网络,对比直连与代理下载 |
x509 | 时间与证书链 | 同步系统时间,核对证书错误全文 |
401 / 403 | 授权、令牌或访问策略 | 在服务商账户页核对订阅状态 |
429 | 刷新频率限制 | 停止重试,遵循服务端等待时间 |
yaml: unmarshal errors | 格式或字段类型 | 检查响应正文、订阅类型与内核兼容性 |
拉取超时:分别检查域名、网络与下载路径
先换网络,再改配置
context deadline exceeded 表示操作超出期限,但不能仅凭这一句确定是 DNS、TCP 连接、TLS 握手还是响应读取变慢。先对照日志中的具体阶段,再让同一设备从 Wi-Fi 切到手机热点,使用同一订阅地址手动更新一次。一次只改一个条件,才能判断是否与原网络有关。
- 域名解析失败:检查链接是否多了空格、换行或缺少字符。网页能打开其他网站,不能证明订阅域名一定能解析。
- 连接被拒绝:
connection refused通常说明目标端口拒绝连接,应检查服务端地址或本地代理监听状态。 - 读取超时:服务器可能已接收连接,但响应迟迟没有完成。记录发生时间与网络环境,再向服务商反馈。
系统代理、TUN 与订阅下载不是同一个开关
整份配置可能由客户端界面进程下载,也可能由其他组件处理;proxy-providers 的远程资源则通常由内核获取。因此,“浏览器已经走代理”并不能证明订阅请求使用了相同路径。TUN 能接管哪些连接,还受路由、进程排除和客户端实现影响。
如果客户端提供“通过代理更新”之类的选项,先确认已有可用节点,再切换该选项对比一次。旧节点全部失效时,强制依赖旧节点下载新订阅可能形成循环依赖,应尝试直连或更换可访问订阅地址的网络。
证书错误:先修正时间与信任链
HTTPS 订阅需要验证服务器身份。遇到证书错误时,先看完整提示,不要直接关闭验证。节点配置中的 skip-cert-verify 主要影响相应代理节点的 TLS 验证,并不是客户端订阅下载器的通用修复开关。
- 同步系统时间:开启操作系统的自动日期与时间,检查年份、时区和同步状态。系统时钟偏差可能让有效证书被判断为尚未生效或已经过期。
- 核对域名:
certificate is valid for一类错误常涉及主机名不匹配。不要把订阅域名擅自替换成 IP 地址,这可能同时破坏证书验证与虚拟主机选择。 - 排除网络认证:公共 Wi-Fi 可能需要先打开认证页面;完成登录后再更新。单位网络中的 HTTPS 检查也可能改变证书链,应联系网络管理员确认。
- 检查信任环境:
certificate signed by unknown authority可能来自服务器证书链不完整,也可能来自设备信任库或网络拦截。换到个人热点复测,有助于缩小范围。
如果设备时间正常、不同网络均报告同一订阅域名证书过期,应交由服务商修复。不要把 HTTPS 地址改成 HTTP,也不要通过安装陌生根证书来绕过提示。
返回内容非 YAML:检查状态码与订阅类型
HTTP 请求成功不等于拿到了可用配置。状态码为 200 时,正文仍可能是登录页面、访问验证页或账户到期通知。反过来,Content-Type 写成 text/plain 也不能直接判定失败,部分服务会用它返回有效 YAML;最终要检查正文结构。
常见响应分别怎样处理
- 正文以
<!DOCTYPE html>开头:拿到的是网页。确认复制的是客户端订阅地址,而不是账户后台地址;不要把网页内容保存为配置后强行加载。 - 正文是
vmess://等链接或一长串编码文本:可能选择了通用节点订阅,而非适合当前客户端的配置格式。回到服务商的订阅导出入口选择对应类型。 - 正文是 JSON 错误信息:先读服务端错误说明。修改 YAML 缩进不能修复账户失效或令牌错误。
- 正文确实是 YAML:继续检查字段层级、数据类型和内核支持情况。YAML 语法能解析,不代表它一定符合 Clash 或 mihomo 的配置结构。
整份配置与节点集合不要混用
整份配置可以包含 proxies、proxy-groups、rules,也可以通过 proxy-providers 引用节点集合。常见的 provider YAML 则以 proxies: 列出节点;它不等同于完整的策略组与规则配置。将整份配置地址填进只接受节点集合的入口,或把节点集合当完整配置导入,都可能产生解析或运行问题。
如果日志明确提示不支持某种节点类型或字段,核对客户端“关于”页面显示的内核名称与版本。传统 Clash 与 Clash Meta(现称 mihomo)的支持范围存在差异,不能只看应用名称中是否含有 Clash。字段层级可对照配置文件结构说明,格式转换边界可参考订阅转换说明。
自动更新间隔:区分三种 interval
“每小时更新订阅”不是在 YAML 任意位置写入 interval: 3600。整份远程配置的定时刷新通常属于客户端配置管理功能;provider 下载与节点健康检查则有各自的字段。把三者混用,往往会出现延迟测试一直运行、节点列表却没有变化的情况。
| 设置位置 | 实际作用 | 单位与示例 |
|---|---|---|
| 客户端远程配置编辑页 | 重新下载整份订阅配置 | 依界面标注;60 分钟等于 1 小时 |
proxy-providers.名称.interval | 刷新 HTTP 节点集合 | 秒;3600 等于 1 小时 |
health-check.interval | 检测集合中的节点可用性 | 秒;300 等于 5 分钟 |
url-test 策略组的 interval | 按周期进行延迟测试 | 秒;不负责下载订阅 |
整份订阅:在远程配置条目里设置
常见入口是“配置 / Profiles”→目标远程配置的菜单→“编辑 / Edit”→自动更新或更新间隔;这是一类入口的描述,具体名称以客户端界面为准。若输入框单位是分钟,填 60 才是一小时;若单位是秒,则应填 3600。不要跨客户端照抄同一个数字。
建议先以每 6 小时或每天更新一次作为起点,再根据服务商要求调整。订阅地址稳定、节点很少变更时,过密刷新通常没有帮助。也不要假定填 0 一定代表关闭;应优先使用明确的关闭开关,并查看当前客户端说明。
HTTP provider:在对应集合里设置
下面是 mihomo 常见 HTTP provider 的配置片段,不是完整可运行配置。example.com 是文档示例域名,不能提供实际节点;使用时需要填写账户提供的节点集合地址,并让策略组通过 use 引用集合名称。
proxy-providers:
daily-nodes:
type: http
url: "https://example.com/subscription.yaml"
path: ./providers/daily-nodes.yaml
interval: 21600
health-check:
enable: true
url: "https://www.gstatic.com/generate_204"
interval: 300
这里 21600 秒是 6 小时,控制节点集合下载周期;300 秒是健康检查间隔,不会刷新节点清单。健康检查地址还应能被当前节点正常访问。多个 provider 应使用不同的缓存文件路径,避免写到同一文件。
手动刷新:一次验证与结果确认
手动刷新适合验证修复是否有效,不适合用来反复碰运气。尤其遇到 429 时,应停止连点;若响应带有 Retry-After,按服务端指定时间等待。出现 500、502、503 等服务端错误时,先保留旧配置,稍后重试或查询服务状态。
- 保留备份:通过客户端支持的导出功能保存当前可用配置,单独记录本地覆写、策略选择与订阅来源。
- 确认目标:在远程配置条目上执行更新,不要误点策略组的延迟测试按钮;更新 provider 时也要确认集合名称。
- 只改一项:例如仅切换网络或修正系统时间,然后手动刷新一次,记录错误是否变化。
- 检查保存与加载:确认更新时间已变化、日志没有后续解析错误,并核对当前启用的配置。部分客户端在更新非当前配置后不会自动切换。
- 验证实际连接:确认策略组仍选择了有效节点,再访问常用目标服务;“下载成功”与“业务访问正常”是两个验收步骤。
如果更新后节点恢复了,但自定义规则消失,通常需要检查修改是否直接写进了远程配置。后续下载可能替换该文件,长期规则应放入客户端明确支持的覆写、合并或扩展功能,并验证最终生成配置。导入与切换步骤见订阅导入教程。
向服务商或客户端维护者反馈时,提供发生时间、系统与客户端版本、内核版本、脱敏状态码,以及“同一地址换网络是否成功”的对照结果。这些信息比重复发送“更新失败”更有助于定位;订阅令牌、完整节点凭据与账户页面截图中的敏感内容应先移除。