订阅失败的提示只有一句「可能是订阅地址无效,或是网络问题,请诊断」,但真正的原因有八种,而且大多和「订阅地址」本身无关。最常见的是:更新订阅时客户端是直连状态,而订阅域名在你的网络里被拦了;其次是链接确实过期或流量用完了;再往后是格式不匹配、User-Agent 被机场拒绝、DNS 污染和客户端版本。按下面的顺序排查,十分钟内基本能定位。
先做一件事:用浏览器打开订阅链接
把订阅链接粘到浏览器地址栏打开。会出现四种情况,各对应不同的问题:
- 打不开,一直转圈或超时:网络层面到不了订阅服务器。跳到原因 1、6。
- 打开是一大段 base64 字符或 YAML 文本:链接有效、服务器正常,问题在客户端。跳到原因 3、4、7。
- 打开显示 404、403 或「订阅已过期」:链接失效、账号到期或流量用完。跳到原因 2、5。
- 打开是空白页或机场的登录页:链接被重置过,去后台重新复制。
这一步排除一半的可能性。
原因 1:更新订阅时是直连状态,订阅域名被拦
最常见。订阅服务器的域名在某些网络里被污染或拦截,客户端在没有代理的状态下去拉取,自然失败。解决:先用任意一个还能用的节点连上,再更新订阅;Clash 系客户端可以在设置里勾选「通过代理更新订阅」。如果一个节点都没有,用手机流量试一次,或者让朋友把订阅内容导出发你。
原因 2:账号到期或订阅被重置
机场后台看一眼:到期时间、剩余流量、订阅链接是否被重置过(很多机场有「重置订阅」按钮,点过之后旧链接立刻失效)。链接不对就重新复制,注意复制完整,末尾的 token 少一个字符都不行。
原因 3:格式不匹配
机场通常提供多种格式的链接:Clash(YAML)、V2Ray/通用(base64)、Sing-box(JSON)、Surge。v2rayN 拿到 Clash 格式会报错,Clash 拿到 base64 有时能转换有时不能。解决:在机场后台选择与你的客户端对应的那个链接,或者用带 &flag=clash 这类参数的转换地址。不确定时,Clash 系用 Clash 链接,v2rayN/v2rayNG/Shadowrocket 用通用链接。
原因 4:User-Agent 被拒绝
有些机场按客户端的 User-Agent 返回不同格式,遇到不认识的 UA 直接拒绝。表现为浏览器能打开、客户端更新失败。解决:在客户端订阅设置里把 User-Agent 改成 clash 或 v2rayN 等机场支持的值;Clash Verge 在订阅编辑里有这一项。
原因 5:流量用完了
流量用尽后很多机场会让订阅返回空列表或错误,看起来像链接失效。后台确认剩余流量;有的机场按月重置,等一天再试。
原因 6:DNS 污染或劫持
订阅域名解析到了错误的地址,浏览器打开显示的是别的页面或直接超时。解决:把系统 DNS 改成加密 DNS(DoH),或者在客户端里把订阅更新走代理。原理见 DNS 泄露是什么意思里关于 DNS 的部分。
原因 7:客户端版本太旧
新的节点类型(VLESS + Reality、Hysteria 2)需要新版内核。旧版客户端解析到不认识的节点会整份订阅报错。解决:升级客户端或内核;Clash Verge 需要 Mihomo 内核,v2rayN 需要 Xray 内核。哪些协议需要什么内核,VLESS 与 Reality里有说明。
原因 8:机场停服或跑路
订阅服务器整个不见了,官网也打不开。这种情况没有技术解法。判断标准和备选方案在机场安全吗里。
各客户端的更新入口
- Clash Verge / Mihomo Party:订阅 → 右键 → 更新;设置里可开「使用代理更新」。
- v2rayN:订阅 → 更新订阅(可选「通过代理更新」)。
- v2rayNG(安卓):右上角菜单 → 更新订阅。
- Shadowrocket(iOS):首页下拉刷新,或订阅 → 更新;设置里可开「更新时使用代理」。
- Hiddify:配置 → 刷新。
排查清单
- 浏览器打开链接,看四种结果。
- 先连上任意节点再更新,或开「通过代理更新」。
- 后台确认到期、流量、链接是否重置。
- 换成客户端对应的格式。
- User-Agent 改为机场支持的值。
- DNS 换成加密 DNS。
- 升级客户端和内核。
- 以上都不行,机场可能停服,换方案。
订阅失败本质上是「拿不到配置」,和节点能不能用是两回事。如果厌倦了每月一次的排查,商业 VPN 的客户端会把节点列表内置在账号里,登录即用,不需要维护订阅。404 VPN 的客户端就是这样工作的,同样使用 VLESS + Reality 和 WireGuard,也可以导出配置给通用客户端使用。了解方式见工作原理,开始使用请到首页。