导入只有三步,卡住的时候看弹出来的是哪一句
机场节点导入是三步,在机场面板里复制订阅地址,贴进客户端的订阅栏,点导入。导不进去时弹出来的那句话,我 2026-10-30 对着 Clash Verge Rev 2.5.8、v2rayN 7.25.6 和 Clash Meta for Android 2.11.36 的源码一句句核过,能归成五种。
三个客户端放地址的位置不一样。Clash Verge Rev 的“订阅”页上,输入框里灰着“订阅文件链接”几个字,贴进去点“导入”,再在列表里选中它 [1]。v2rayN 先在“订阅分组设置”里添加一条,然后执行一次“更新全部订阅 (不通过代理)”,把内容取回来 [2]。Clash Meta for Android 点“从 URL 导入”,名称和地址都填上再保存 [3]。各平台装哪个客户端,我在代理软件那页按内核挑过,这页只管导入。
点下导入,客户端拿这个地址去面板取回一段文字,请求头里报上自己的名字。Clash Verge Rev 报的是 clash-verge/v2.5.8,v2rayN 是 v2rayN/7.25.6,Clash Meta for Android 在 ClashMetaForAndroid/ 后面接版本号 [4][5][3]。面板看这个名字决定给哪种格式。我能读到源码的面板只有 Xboard,它在名字里认出 verge、meta 这类字样就给 Clash Meta 用的 YAML,认出 v2rayn 就给一整串 base64 编码的分享链接,什么都认不出,也给 base64 [6]。我测过速的那 8 家机场背后跑的是哪种面板,我没一家家去核。
地址末尾那串 token 就是你的账号。Xboard 只凭它认人,要求是 32 位十六进制字符,少一位、错一位,或者对不上任何账号,都回 403 和一句 token is error [7]。
Clash Verge Rev 的提示分两下弹。地址格式不对,它当场拦下,弹一句中文。格式没问题、后台却没导成,它先提示一句要改用 Clash 代理导入,自己经内核代理再试一次,还不行才弹报错,中文开头,后面跟一段英文,下表 Clash Verge Rev 那一列的英文都出自这一段 [8]。这条报错默认停 8 秒就收起,没看清就再点一次导入。
| 我归的类 | Clash Verge Rev 2.5.8 弹出的 | v2rayN 7.25.6 显示的 | 我先看的地方 |
|---|---|---|---|
| 地址无效 | 无效的订阅链接,请输入以 http:// 或 https:// 开头的地址;格式对、token 失效时是 failed to fetch remote profile with status 403 Forbidden |
保存时报“地址 (Url) 无效”;clash:// 开头的能存下,更新时被跳过,日志里不占一行 |
面板上现在显示的地址,和贴进去的逐字对 |
| 格式不支持 | the remote profile data is invalid yaml |
导入订阅内容失败 | 面板回的是 YAML、base64 还是网页 |
| 节点为空 | profile does not contain `proxies` or `proxy-providers` ;节点列表是空的,也可能提示导入成功 |
导入订阅内容失败 | 节点的协议,客户端的内核认不认 |
| 证书错误 | 自动换内置根证书重试,还失败才报 static webpki roots fallback failed after platform TLS verifier failed |
先打系统给的异常原文,再跟一句“无效的订阅内容” | 电脑的系统时钟 |
| 更新超时 | 原文里会有 operation timed out,默认等 20 秒 |
异常原文加“无效的订阅内容”,直连等 10 秒 | 换一个网络重试 |
拿不准是哪一种,我会绕开客户端,用 curl 自己取一次,看面板到底回了什么。下面三行在 Mac 的终端和 Windows 的 Git Bash 里都能跑,引号里换成你自己的订阅地址。输出里有全部节点的凭据,别贴给任何人看。
终端 · 用两个客户端的名字各取一次订阅
curl -s -o /dev/null -w "%{http_code}\n" -A "clash-verge/v2.5.8" "你的订阅地址"
curl -s -A "clash-verge/v2.5.8" "你的订阅地址" | head -c 300
curl -s -A "v2rayN/7.25.6" "你的订阅地址" | head -c 300第一行回 200 才往下看,回 403 直接看下一节。第二行开头是 mixed-port 这样的 YAML 字段,说明面板给的是 Clash 系的配置,这是 Xboard 默认模板的写法 [6],别家的模板开头可能不一样。第三行是一长串连在一起的字母和数字,那是 base64。两行开头要是 <!DOCTYPE html> 或者 <html,你复制到的是一个网页。
地址无效,多半是复制的时候出了岔子
Clash Verge Rev 弹“无效的订阅链接”那句时,请求还没发出去。导入框只检查你贴的字符串是不是 http 或 https 开头、带着主机名 [8],开头少了 https:// 就会被挡。还有一种贴法,复制了面板上一键导入按钮背后的链接。那种链接如果以 clash:// 或 clash-verge:// 开头,Clash Verge Rev 只在它被点开时接手,从 url= 后面取出真正的订阅地址再去下载 [9],整串贴进导入框照样被挡。
另外两个客户端对这种链接的反应不同。v2rayN 保存订阅时只判断它算不算一个合法的 URI,clash:// 开头的能存进去,到了更新那一步,它只处理 http 和 https 开头的订阅,别的直接跳过,日志里一个字都不提 [10]。Clash Meta for Android 保存时报 Unsupported url,后面跟着你贴的那串,地址栏空着点保存,弹的才是“无效的 URL” [3]。
地址的样子没问题,面板却回 403,这是另一种地址无效,Clash Verge Rev 报的是表里带 403 Forbidden 的那句 [11]。token 对不上,我想得到两个来路。一是复制时丢了一两个字符,二是 token 已经重置过,你自己在面板上点过重置,或者客服帮你换过,旧地址都会这样。登录面板,把现在显示的地址和你贴进去的逐字对一遍,对不上就换新的。账号到期或者被停用,Xboard 回的也是 403,只是正文为空,登录面板看一眼到期日和套餐状态就清楚,代理节点那页把这种 403 和浏览器里见到的 403 分开讲过。
格式不支持,面板给的格式客户端吃不下
Clash Verge Rev 只认 YAML。内容取回来,它直接当 YAML 解析,解析出来不是一个键值结构,就报 the remote profile data is invalid yaml [11]。它的下载流程里没有解 base64 这一步,面板给的是一串 base64 也好,是一张网页也好,都会落在这一句上。
面板给错格式,根子在请求头那个名字。Xboard 拿名字去和一份标识名单比,Clash Meta 那一档认 meta、verge、flclash、nekobox、clashmetaforandroid,v2rayN 那一档认 general、v2rayn、v2rayng、passwall、ssrplus、sagernet [6]。要是在 Clash Verge Rev 订阅菜单的“编辑信息”里给“用户代理”一栏手填了名字,名字里又没有这些词,或者用的客户端名字压根不在名单上,拿到的多半是 base64。
办法有两个。面板里单独给了 Clash 订阅地址的,用那一条。面板是 Xboard 的,在地址末尾加一个 flag 参数,它的优先级高过请求头 [6],写 flag=meta 就按 Clash Meta 的格式给。地址里已经有问号就接 &flag=meta,没有问号接 ?flag=meta,手快写成 & 也行,Clash Verge Rev 会把路径里第一个 & 换成问号再去请求 [11]。别的面板认什么参数,我没核到。看不出自己的面板是哪种,把参数加上,用前面第三行那个 v2rayN 的名字再取一次,开头从一长串字母变成 YAML 字段,就说明它认这个参数。
v2rayN 收得宽,base64、分享链接、Xray 和 sing-box 的 JSON 都认,前面几种都不是,才当 Clash 的 YAML 处理 [12]。同时带着 rules、-port、proxies 三样字样的 YAML,它原样存成一个文件,记作一条自定义配置,运行时用 mihomo 内核,条目名取订阅备注,备注空着就叫 clash_custom [12]。导完以后节点表上只有孤零零一个条目,几十个节点都装在那个文件里。
网页它不收。内容里 <html、<!doctype html、<head 三样都出现,就判成网页,日志写“导入订阅内容失败” [12]。复制成了面板的登录页地址,或者订阅域名前面挡着一个浏览器验证页,结果都一样。
手里只有一串 base64,又想在 Clash Verge Rev 里先用起来,可以新建一个本地配置,在它的“编辑节点”里贴,界面上写着多条 URI 用换行分隔,支持 Base64 编码 [1]。这样贴进去的节点不会跟着订阅更新,机场换了入口就得再贴一次,我只拿它救急。
节点为空,内容取回来了,一行也没留下
Clash Verge Rev 对“空”只查一件事,YAML 里有没有 proxies 或 proxy-providers 这两个键,两个都没有才报 profile does not contain `proxies` or `proxy-providers` [11]。键在、底下一个节点都没有,它照样弹导入成功。v2rayN 一个节点都没解析出来时,日志写“导入订阅内容失败”,Clash Meta for Android 的代理页上可能只剩一句“没有可以显示的组” [10][3]。
节点被筛掉,多半在两头。面板那头,Xboard 给每种格式配了一张协议白名单,老 Clash 格式只放 Shadowsocks、VMess、Trojan、SOCKS、HTTP 五类,没有 VLESS [6]。请求头里只认得出 clash 这几个字母的客户端,拿到的就是这一版。我手里 34 家的资料,写明协议的 14 家里有 12 家写的是 VLESS [13],它们的面板要是 Xboard,老 Clash 格式里这些节点一个都不会出现。版本也会被筛,Stash 要 3.3.0 以上,Shadowrocket 请求头里的版本编号要到 2592,Xboard 才把 AnyTLS 节点发给它们 [6]。
客户端那头,是内核不认这个协议,解析不出来的节点直接丢掉。v2rayNG 2.3.14 的配置类型里没有 AnyTLS [14],Xray 文档列的 13 种出站协议里也没有它 [15]。我 2026-06-27 拿到的星岛梦(StarDream)订阅有 70 个节点,60 个 VLESS,10 个 AnyTLS,导进 v2rayNG 会剩 60 个。飞猫云 2026-07-08 测速用的订阅,49 个节点清一色 AnyTLS,导进去一个都不剩,07-11 我手里它另一份 59 个节点的 VLESS 订阅不受影响 [13]。这几个数是我按协议推的,没在 v2rayNG 里实际导过。另外 6 家我测的那几轮全是 VLESS 节点,mihomo、sing-box、Xray 三个内核都认这个协议。
我的查法是换个内核再导一次。主力用 mihomo 内核的,备用挑 sing-box 或者 Xray 内核的,两边节点数一对,少掉的那部分,要么是这边的内核不认,要么是面板按请求头筛掉了。
证书错误,那个“允许无效证书”先别勾
这里的证书是订阅地址那个网站的证书,和节点自己的 TLS 分开算。Clash Verge Rev 先用系统的根证书验,验不过、报错里又带着证书一类的字样,它会自动换一套内置的根证书再试一次,两次都失败才报 static webpki roots fallback failed after platform TLS verifier failed [4]。订阅网站还停在 TLS 1.0 或 1.1 的,它直接报一句 legacy TLS,说只支持 1.2 和 1.3,首次导入时连经内核代理重试那一步都跳过 [4][8]。
v2rayN 把系统给的异常原文打进日志,再跟一句“无效的订阅内容” [10]。它的设置里有一项“根证书提供者”,可选 system、chrome、mozilla,界面上写着只管 v2rayN 自己的下载和网络请求,不影响内核的证书验证 [5][2]。系统的证书库太旧时,换成另外两种再更新一次。Clash Meta for Android 用 Go 写的内核去下载,报错里会带 x509 字样,常见几种的原文,代理节点那页列过。
证书验不过,我按这个顺序查。先看系统时钟,时间差了几个月,所有网站的证书会一起显得过期或者还没生效。再看网络,公共 Wi-Fi 还没在网页上登录,或者公司网络会拆开 HTTPS 检查,客户端拿到的都是另一张证书,换成手机流量再导一次就分得出来。两样都没问题,才轮到机场那边的证书真过期了,这时只能等它修,或者问客服要另一个订阅地址。
Clash Verge Rev 编辑信息的框里有一项“允许无效证书(危险)”。它的文档说,用订阅链接配置这种方式还报 client error(Connect),就勾上它保存重试 [16]。我读 2.5.8 的源码,勾上以后证书有效性和主机名两样都不再检查 [4]。订阅返回的内容里有全部节点的地址和凭据,验证关掉以后,有人在中间冒充订阅网站,就能把这些原样拿走。要勾,也只在确认是机场自己的证书过期、又急着用的时候勾一次。等它把证书修好,回面板重置订阅 [17],把勾去掉,每台设备都换新地址重导一遍,先前那份在路上可能被人看过的内容就作废了。
节点自己的证书,2026 年也变过一回。Xray 26.2.6 的发布说明写着 TLS 移除了 allowInsecure,为了给机场留迁移时间,定在 UTC 2026 年 6 月 1 日零点自动停用,并请用户找机场在订阅里加上 pcs、vcn 两个字段 [18]。Xray 的文档页写的是这个选项已被弃用 [19],两处说法轻重不一样,我都是 2026-10-30 看的。v2rayN 7.25.6 的界面文字里也有一句,说这类节点无法通过 26.2.6 以上的 Xray 核心连接 [2]。我测的 8 家当时的订阅里有没有这个开关,我没记,现在说不出哪家会中招。订阅导得进来、在 Xray 内核里却一个节点都连不上,就把它列进要排查的几项里。
更新超时,三个客户端等的秒数差了六倍
超时先分清是哪一步。订阅地址取不回来,归这一节。订阅取回来了,几十个节点测延迟全是超时,那是节点的事,照代理节点那页的四个日志关键字查。
Clash Verge Rev 这一格有个对不上的地方。编辑信息的框里,“HTTP 请求超时”一栏留空时灰着一个 60,源码里这个字段的注释也写默认 60 秒,后端代码里写死的默认值却是 20 [8][11]。更新失败时它会按三条路依次再试 [20],每条都按这个数等。报错里出现 operation timed out,就是这个数等满了还没取回来,这句英文是它用的 reqwest 库的原话 [21]。网络慢的时候,在那一栏明明白白填上 60,比留空可靠。
头一回导入,客户端里一个可用节点都没有,订阅只能直连去下。直连取不到,我先怀疑订阅域名在这条网络上解析不出来或者连不上。在终端里拿 nslookup 查这个域名,再指定一个公共 DNS 查一次,两回都查不到,毛病就在域名这头。手里有一份能用的订阅以后,后面的更新就能走代理,Clash Verge Rev 在订阅的菜单里有“更新(代理)”,v2rayN 有“更新全部订阅 (通过代理)” [1][2]。
还有一招只对部分面板管用。Xboard 的后台能填好几个订阅域名,每次生成订阅地址时随机挑一个,还能写成带随机数字的子域名 [7]。刷新一下面板,订阅地址的域名可能就换了,token 不变,新域名在你的网络上也许连得上。机场有没有这样配,我没法替哪一家打包票。
Clash Verge Rev 从 9 月 22 日到 10 月 9 日连发了四个正式版 [22],表里那些字样随时会改,我下一次对源码定在 2026-11-30。