你点了“订阅转换”,结果生成的链接在 Clash 里导入报错,或者在 sing-box、v2rayN 里显示“格式不支持”“节点为空”“解析失败”。

还有一种常见情况是:原始订阅能在某个客户端里用,但换到另一个客户端后只剩少量节点,甚至整条订阅打不开。

这类问题大多不是“订阅坏了”,而是订阅格式和客户端格式不兼容。

先分清是哪种情况

速度保持率测试连接后保留的原始带宽占比66%机场 A74%机场 B77%公共 VPN84%免费节点93%Roxi

1. 订阅链接本身没问题,但目标客户端不认这种格式。比如原订阅是 vmess/vless/ss/trojan 混合格式,Clash 需要的是 YAML,sing-box 需要 JSON,v2ray 工具又常见以 base64 或本地配置为主。

2. 订阅转换服务的“模板”选错了。很多转换器会让你选 Clash、Clash Meta、sing-box、v2rayN、Surge 等模板,模板一旦选错,导出的字段就会缺失。

3. 原始订阅返回的是网页、跳转页、验证码页,或者需要登录校验。转换器抓到的不是节点数据,而是一段 HTML,自然会报解析失败。

4. 订阅内容里有新协议或特殊参数,目标客户端版本太旧,不支持导入。常见表现是某些节点能导入,另一些节点被忽略。

分步解决

1. 先确认你手里的“订阅链接”到底是什么

把链接复制到浏览器地址栏打开一次,观察返回内容。

如果打开后直接是一长串乱码、Base64 文本,通常是普通订阅。

如果打开后是网页、登录页、403、验证码页,说明这不是可直接转换的数据,先处理访问权限或换可用链接。

如果你是在客户端里“复制订阅地址”,尽量复制原始订阅地址,不要复制已经转换过的二次链接,否则容易套娃出错。

2. 选择正确的转换目标

不同客户端要选不同输出格式。

Clash 用户:目标选 Clash、Clash Premium、Clash Meta 或通用 YAML,具体看你的客户端支持哪一类。

sing-box 用户:目标必须选 sing-box JSON,不要选 Clash。

v2rayN、v2rayNG、Qv2ray 之类:通常选 v2rayN 或通用节点列表;如果工具支持导入链接,尽量直接导入原始订阅。

如果你不确定,先看客户端的“导入/订阅”菜单说明:它写的是 YAML 就选 Clash,写的是 JSON 就选 sing-box。

3. 在订阅转换页面检查最关键的几个选项

无论你用什么转换器,通常都要检查这几项。

输出格式:选对目标客户端。

保留节点类型:确保 vmess、vless、trojan、ss 这些协议没有被过滤。

UDP/TLS/SNI:如果转换器有“保留参数”之类选项,尽量开启。

排序/去重:初次排障时先不要勾“过滤无效节点”或“智能去重”,避免把正常节点误删。

如果有“Clash 兼容模式”“Clash Meta 模式”之类选项,优先按你的客户端实际支持来选,别混用。

4. 分平台导入与检查

Windows:

Clash Verge Rev、Clash for Windows、v2rayN 都有“订阅”或“配置文件”入口。

Clash 类客户端:一般在 Profiles/配置文件 页面,点“从 URL 下载”或“订阅”,粘贴转换后的链接,再手动更新。

v2rayN:在“订阅设置”里添加订阅地址,保存后回主界面点“更新订阅”;如果是本地文件,确认文件编码不是乱码。

macOS:

ClashX、Clash Verge Rev、Sing-box GUI 一般在左侧栏的 Profiles 或 Subscriptions 中。

先添加订阅地址,再点刷新/更新;导入后确认配置名称旁边出现“已载入”或“Active”状态。

Android:

Clash for Android、sing-box for Android、v2rayNG 通常在侧边栏的配置/订阅里。

复制转换后的链接,粘贴后保存,再点更新;如果是二维码导入,确认二维码对应的是目标格式而不是原始订阅页面。

iOS:

常见客户端在配置文件、订阅或“+”按钮里导入。

iOS 上更要注意链接是 HTTPS 且可直连访问的,某些客户端不接受重定向太多的地址。

导入后要到配置列表里确认已生成配置,而不是停留在“等待下载”。

5. 如果你是“原始订阅转 Clash / sing-box / v2ray”三方互转,按这个顺序试

先用最通用的方式测试:把原始订阅直接导入支持多协议的客户端,确认原订阅本身可用。

再转换成 Clash,检查节点数是否和原订阅接近。

再转换成 sing-box,确认 JSON 能被客户端加载。

最后再转到 v2ray 相关工具,避免先在最严格的格式上失败后误判为订阅坏了。

每一步都对比节点数量,差很多就说明转换过程中有字段被丢了。

6. 命令行用户可以这样自检

如果你在电脑上有命令行工具,先看链接返回是不是正常文本。

Windows PowerShell:Invoke-WebRequest "你的订阅链接" -UseBasicParsing,观察 StatusCode 是否为 200。

macOS/Linux:curl -I "你的订阅链接",看是否返回 200、301、302 或 403。

如果是 200 但内容明显是 HTML 页面,就不是节点数据;如果是 301/302,说明有跳转,转换器不一定跟得上,尽量换最终地址。

如果你用的是本地转换脚本,确认脚本要求的输入是订阅原文、还是已经解码后的节点列表,很多人就是在这里传错了。

验证是否修好

2017Shadowsocks 普及2019V2Ray / VMess2021Trojan 伪装2023VLESS+Reality2025Hysteria2 抗封锁

1. 重新导入后,先看节点数量是否与原订阅接近,少量差异可以接受,差一大半就不正常。

2. 在 Clash 里检查配置是否能正常切换到该订阅,状态栏没有“配置加载失败”。

3. 在 sing-box 里确认配置文件能打开,且没有“unmarshal”或“decode”错误。

4. 在 v2rayN 里点“测试延迟”或“更新订阅”,如果能列出节点并返回延迟值,说明导入成功。

5. 最后实际访问一个平时能打开的网站,确认不是“显示已连接但实际上没生效”。

还是不行怎么办

1. 先换一个更简单的目标格式测试:如果 Clash 失败,试试 sing-box;如果 sing-box 也失败,回到原始订阅先验证数据是否完整。

2. 把订阅链接复制到浏览器里看原文,确认不是登录页、验证码页或空白页。

3. 检查客户端版本,尤其是 Clash Meta、sing-box 这类对协议支持差异较大的客户端,旧版本很容易导入失败。

4. 如果订阅链接本身访问不了,而且你的网络环境需要通过代理才能打开订阅源,那就先把“订阅源可访问”这件事解决,再谈转换;这种情况下可以先用 Roxi 之类能正常连通外部资源的工具把订阅原文取到手,然后再做格式互转。

5. 仍然失败时,把“原始订阅链接返回内容、你选的输出格式、客户端版本、报错原文”四项记下来,基本就能定位问题出在链接、转换模板还是客户端兼容性上。