先确认失败位置:订阅下载还是配置加载

“订阅更新失败”可能发生在三个位置:客户端没有下载到内容;服务器返回了内容,但不是可用的配置;文件已经保存,内核加载时发现字段或引用错误。三者需要不同的处理步骤。节点仍能连接,只能说明本地旧配置还可用,不能证明订阅地址仍有效。

先保留当前可用配置,不要立即删除订阅条目。记录客户端名称、内核类型、更新时间和完整报错。提交日志前隐藏订阅 URL 的路径密钥、查询参数、节点密码及服务器地址;订阅链接通常具有访问凭据的作用。

日志或现象优先检查下一步
401、403鉴权、账户状态、访问策略从服务方后台重新复制订阅地址
404、410旧路径、地址撤销、复制截断核对最新地址,不反复刷新旧地址
429请求过于频繁停止连续重试,按服务方限制等待
timeout、no such host连接路径、DNS、网络状态分别测试当前网络与另一条网络
yaml、unmarshal返回内容与字段结构检查是否下载了网页或错误格式

链接失效:核对地址、账户与 HTTP 状态码

重新复制订阅地址,不复制账户页面

  1. 登录服务方后台,查看订阅状态、到期时间和剩余用量。账户可登录不等于订阅仍可下载。
  2. 选择明确标注为 Clash 或 Mihomo 的订阅入口。浏览器地址栏中的后台页面地址不能代替订阅地址。
  3. 完整复制链接,保留 ? 后的查询参数。清除复制时混入的空格、换行和中文标点。
  4. 在原订阅条目的编辑界面替换 URL,保存后手动更新一次。若此前重置过订阅密钥,其他设备保存的旧链接也要同步替换。

401 通常指向身份验证;403 还可能来自访问控制、地区限制或防护页面,不能只凭状态码断定账户过期。404 可能是路径错误,也可能是服务方隐藏了无效凭据。应结合后台状态和响应内容判断。

200 状态也可能返回错误页面

服务器返回 200,仅表示 HTTP 请求得到了成功响应。若正文以 <!DOCTYPE html> 或 <html> 开头,下载到的可能是登录页、验证码页或维护页。此时继续修改 YAML 缩进没有意义,应先取得真正的订阅响应。

不要把带密钥的订阅地址粘贴到公开检测网站。需要服务方排查时,提供状态码、发生时间与脱敏错误即可;完整链接只应通过可信的私密支持渠道传递。

请求超时:区分 DNS、TLS 与代理路径

订阅请求可能由客户端自身发起,也可能由内核的 proxy-providers 发起。它们不一定使用相同的网络路径。打开系统代理或 TUN 模式后浏览器能访问网站,并不代表客户端的订阅更新请求一定经过同一出口。

按错误阶段逐项检查

  • 域名解析失败:no such host 优先检查订阅域名拼写、系统 DNS 和当前网络。不要直接把订阅域名替换成 IP,这可能破坏 HTTPS 的证书验证与虚拟主机路由。
  • 连接超时:dial tcp 后伴随超时,说明连接阶段没有正常完成。换用手机热点测试,有助于区分当前网络限制与服务端故障。
  • 等待响应超时:context deadline exceeded 可能涉及多种阶段。若同时出现等待响应头的提示,应检查服务端负载和出口路径,而不是只修改 DNS。
  • TLS 错误:x509、证书过期或主机名不匹配,先检查设备日期、时间和时区,再联系服务方处理证书。不要通过关闭证书验证掩盖问题。

用两次对照更新定位路径

如果客户端提供订阅更新的直连或代理选项,可先使用直连手动更新,再选一个当前可用的代理节点更新。每次只改变一个条件。直连成功、代理失败,应检查所选节点和代理出口;代理成功、直连失败,则应检查本地网络对订阅域名的可达性。

若当前配置的全部节点都已失效,而更新又被设置为必须经过其中某个节点,就可能形成依赖循环。此时应切回可用的更新路径,或临时使用另一条可信网络取得配置。不要先删除唯一保存的本地配置。

格式不兼容:检查完整配置与节点提供者

Clash YAML、Base64 编码的节点链接和单节点 URI 不是同一种输入。把一段 ss://、vmess:// 或 vless:// 链接列表直接当作完整 YAML 订阅导入,可能出现解析错误。文件后缀叫 .yaml 也不能证明正文格式正确。

内容类型常见结构用途
完整 Clash 配置proxies 或 proxy-providers,以及策略组、规则等配置作为客户端配置加载
节点提供者文件顶层 proxies: 节点列表由 proxy-providers 引用
规则提供者文件常见为顶层 payload:由 rule-providers 引用
节点链接列表URI 文本,或其 Base64 编码需要客户端支持导入,或转换后使用

下载成功后加载失败,检查内核能力

Clash 与 Clash Meta(现称 mihomo)的字段和协议支持范围并不完全相同。日志若提示未知代理类型,应核对订阅输出目标与当前内核,而不是把所有问题归为链接失效。优先让服务方提供适配当前内核的格式;确需更换客户端时,先确认客户端使用的内核类型。

如果日志指向 YAML 行号,查看该行及其前后的缩进、引号和列表符号。若提示策略组或规则引用的名称不存在,则检查 proxy-groups、rules 与节点名称是否一致。远程订阅每次更新都可能覆盖手动编辑,长期修改应放到客户端支持的覆写或合并配置中。

需要转换格式时,优先使用服务方提供的目标格式。第三方在线转换通常需要接收原始订阅链接,意味着它可能获取订阅内容和访问凭据,不宜随意提交。

自动更新间隔:客户端设置与 interval 字段

自动更新有两层:客户端定时下载整份订阅;内核定时刷新配置中的节点提供者。前者通常保存在客户端自己的订阅元数据里,后者对应 proxy-providers 下的 interval。它们不能互相替代。

在客户端订阅编辑界面设置

以 Clash Verge Rev 的常见界面为例,进入「订阅」→ 目标订阅卡片右键菜单 →「编辑」,查找「更新间隔」字段;不同发行版本的菜单措辞可能变化,应以实际编辑界面为准。该界面常以分钟为单位,填写前必须查看输入框的单位提示,不要把内核的秒数直接照填。

  1. 先手动更新成功,再设置自动更新。可从 360 分钟,即 6 小时开始,并遵守服务方的频率要求。
  2. 保存编辑结果,检查客户端是否需要开启对应的自动更新选项。不要把延迟测试间隔当作订阅更新间隔。
  3. 保持客户端运行,观察下一次更新记录。退出应用、设备休眠或系统后台限制,都可能使定时任务延后。

mihomo 节点提供者的 interval 使用秒

下面是节点提供者示例,不是完整配置。示例域名仅用于说明结构,不能下载实际节点;应用时应使用自己的有效地址,并让策略组通过 use 引用提供者。

proxy-providers:
  remote-nodes:
    type: http
    url: "https://subscription.example.com/nodes.yaml"
    path: ./providers/remote-nodes.yaml
    interval: 21600

这里的 21600 表示 21600 秒,即 6 小时。path 指向本地缓存文件,应保证内核运行用户对该目录有写入权限。若 URL 返回的是完整配置而非兼容的节点提供者内容,修改刷新间隔也不能解决格式错误。

不要把 url-test 策略组的 interval 或提供者健康检查的间隔当成订阅刷新间隔。这些字段控制节点可用性或延迟探测,不负责下载整份订阅。若日志出现 429,应按服务方要求延长刷新周期,而不是每隔 60 秒持续请求。

更新后的验证:确认文件、节点与规则都已生效

  1. 看更新结果:确认目标订阅的更新时间发生变化,日志没有继续报告下载或解析失败。仅弹出“请求已发送”不能视为更新完成。
  2. 看当前配置:确认正在使用的就是刚更新的订阅。更新一个未激活的配置,不一定改变当前连接使用的节点列表。
  3. 看节点和策略组:核对节点数量、名称及策略组引用。节点可测试但访问失败时,还要检查规则匹配与出站选择。
  4. 看后续任务:记录下一次自动更新是否发生。手动成功、自动失败时,优先检查应用运行状态、定时设置与当时网络,而不是重新生成链接。

若仍失败,向服务方或客户端维护者提交脱敏记录:客户端名称、内核类型、错误时间、HTTP 状态码或错误原文,以及直连和代理两种路径的结果。网络请求失败、配置格式错误和定时任务未触发,应分别描述。

需要核对字段可查看配置参考;首次导入订阅可按快速上手操作。更换客户端之前先备份配置,避免把订阅失效问题与迁移问题叠在一起。