先看订阅返回的到底是什么
更新转完变成成功,说明客户端确实从服务器拿回了内容。拉不下来是另一回事,日志里会留下 timeout、403 这类字样,更新根本走不完。现在是东西拿到了,内核看不懂。把订阅链接原样贴进浏览器地址栏,看头几行。
- 满屏没有换行的字母数字、末尾可能带等号:base64 编码的分享链接列表,v2rayN 那一类客户端吃的格式,里面没有
proxies。 - 大括号开头的 JSON,字段里有
outbounds:sing-box 的配置,和 Clash 不通用。 - 一段 HTML、登录页或者人机验证页:你拿到的是网页。地址填错、token 过期、机场前面套了防护,都长这样。
Clash 配置一定是纯文本 YAML,开头看得到 mixed-port、proxies 这些字段。解析不出节点时,多数客户端只判断 HTTP 请求成没成功,界面照样写「更新成功」,proxies 却是空的。
同一个地址,机场按 User-Agent 发不同格式
机场普遍按请求头里的 User-Agent 分发:带 clash 或 mihomo 字样的给 YAML,带 v2rayN 的给 base64,浏览器 UA 或者没有 UA 就给默认那份。所以浏览器里打开是一堆乱码,不能说明订阅坏了,只说明它把你当成了另一类客户端。换个 UA 请求两次对比一下:
curl -sS -A "clash-verge/1.0" https://sub.host/link -o a.yaml
curl -sS -A "v2rayN/6.0" https://sub.host/link -o b.txt
地址换成你自己的。两个文件头几行不一样,问题就定位了。客户端里改 UA 的地方一般在订阅的编辑对话框,字段名多半就叫 User Agent。
节点在配置里,只是组里看不到
另一种情形是 proxies 有几十项,代理页面却空着。这时候要翻策略组,尤其是从别处抄来的那份覆写:
proxy-groups:
- name: Auto
type: url-test
include-all: true
filter: "(?i)(HK|香港)"
url: http://www.gstatic.com/generate_204
filter 是正则,只有名字匹配的节点才进这个组。机场把「香港 01」改成「HK-01」,或者你抄的 filter 本来是照着别家命名写的,组里立刻空掉。删掉那一行重载,节点回来就是它。exclude-filter 反过来一样会误伤。
少了几个,不是全没有
- 日志里出现
unsupported、skip这类字样:内核不认识那几个节点的协议,跳过了。升级内核通常能补回来。 - 只剩一个节点,名字写着套餐已到期、请续费之类:这不是故障,是账单。
proxies里名字重复的节点,后面的顶掉前面的,界面上看着就是凭空少了几条。
如果本地配置里
proxies 齐全、策略组里也点得到,上面这些就都排除了。剩下的症状是有节点但连不上,该去看延迟测试和日志,别再反复删配置重导。