订阅转换 YAML:从格式判断到客户端导入的完整步骤
简答:如果你的订阅本身已经是完整的 Clash/Mihomo YAML,就不必再次转换;如果返回的是 Base64、SS/SSR、V2Ray 节点或其他订阅格式,则需要转换为目标客户端能够读取的 YAML。当前能从开源项目文档核实的做法,是部署 subconverter 后使用本地接口生成配置;没有核实到可长期信任的公共在线转换入口,因此不要把含令牌的完整订阅链接随意粘贴到陌生网页。
定义:订阅转换 YAML,是把节点订阅或其他客户端格式整理成带有 YAML 配置结构、可供兼容客户端读取的配置文件或远程配置地址。
先做格式判断:你可能根本不需要转换
本文是中立技术说明,不代表任何品牌官网。开始前先完成一个结果判断:你需要的是完整配置 YAML,还是只包含节点的配置片段。两者都可能以 .yaml 结尾,但导入后的表现不同。
| 看到的内容 | 通常意味着什么 | 下一步 |
|---|---|---|
开头能看到 proxies:、proxy-groups: 或 rules: | 可能已经是完整或半完整的 YAML 配置 | 先保存副本,直接尝试导入;报错后再检查内核字段 |
| 一长串字母数字,常见为 Base64 样式 | 可能是编码后的节点列表 | 转换为目标客户端格式,不要直接改扩展名 |
内容由 ss://、vmess:// 等 URI 组成 | 明文节点链接集合 | 选择支持对应源格式的转换程序 |
| 打开后是 HTML、登录页、403 或错误提示 | 订阅请求没有返回配置 | 先修复订阅访问,不要把错误页面当 YAML 导入 |
只有 proxies:,没有策略组和规则 | 更接近节点集合,而不是完整配置 | 导入后可能还要在客户端补充策略组或规则 |
YAML 对大小写和缩进敏感,缩进使用空格而不是 Tab;Mihomo 文档还说明键值之间使用冒号和空格,层级关系由缩进表达。出现“解析失败”时,优先检查 Tab、混用缩进、漏写冒号和特殊字符。参考 Mihomo YAML 语法文档 与 YAML 1.2 规范。
订阅转换 YAML 的可核实方案:本地接口优先
目前能够直接核实的开源方案是 tindy2013/subconverter。项目 README 将它定义为多种订阅格式之间的转换工具,并列出了 Clash、ClashR、SS、SSR、V2Ray、Surge 等输入或输出类型。需要注意:README 给出的访问地址是本机接口,不是一个无需部署的公共在线网站。
- 准备本地实例。按照项目仓库中的程序或 Docker 文档完成部署;部署成功后,默认接口示例为
http://127.0.0.1:25500/sub。 - 选择目标格式。接口要求使用
target参数,README 中的目标名包含clash等值。若最终要在 Mihomo 中使用,仍应以当前客户端能够接受的字段为准,不能因为文件扩展名是 YAML 就默认全部字段兼容。 - 填写订阅地址。使用
url参数传入订阅地址或文件路径,并先进行 URL 编码。完整接口结构可参考:http://127.0.0.1:25500/sub?target=clash&url=已编码的订阅地址。 - 需要模板时再填写配置参数。项目文档允许通过
config参数指定外部配置文件,也支持按文档规则合并多个订阅。新手先不要叠加复杂模板,先确认基础转换能返回有效内容。 - 保存并核对结果。把返回内容保存为 YAML 文件,检查是否出现
proxies、策略组、规则等必要结构,再导入客户端。
如果你只想临时转换而不愿部署本地实例,必须先确认在线页面的运营方、隐私说明、输入是否会被保存以及输出链接是否公开。本文没有核实一个可长期信任的公共在线输入框,因此不建议把完整订阅令牌直接提交到陌生网页。
导入 Clash Verge Rev 或 Mihomo 前后的最短闭环
对于桌面客户端,建议把“生成配置”和“启用配置”分成两个动作。先在本地保存 YAML 副本,再导入;这样即使刷新订阅或更新失败,也能回退到上一次文件。
- 导入远程配置:如果你得到的是可访问的远程 YAML 地址,可使用客户端的订阅链接导入或订阅链接配置方式。
- 导入本地文件:如果你得到的是下载后的 YAML 文件,可使用新建配置文件导入或拖拽配置文件导入。官方文档明确区分了远程订阅和本地配置两种方式,并说明拖拽导入有版本要求,当前页面标注为 Clash Verge Rev 至少为
v1.6.2。 - 选择并启用:导入成功不等于已经启用。确认配置出现在配置列表后,选择它作为当前配置,再观察客户端是否能读取节点和策略组。
- 验证运行:先查看节点数量、策略组名称和规则数量,再进行低风险连接测试。不要一开始就修改 DNS、TUN 或 MTU,否则发生连接问题时很难判断是转换错误还是网络设置变化。
Clash Verge Rev 的配置文档可参考 官方配置导入说明。该文档说明远程订阅支持订阅链接导入、订阅链接配置和 URL Schemes,本地配置支持新建配置文件和拖拽文件导入。
如果客户端提示 client error(Connect),先回到导入方式本身排查;如果远程地址返回内容不稳定,改用本地生成的文件可以帮助区分“订阅请求失败”和“YAML 内容不兼容”。不要轻易勾选“允许无效证书(危险)”,只有在你能确认地址、证书和服务归属时才考虑按客户端提示处理。
转换成功后的 6 项核对清单
不要只看页面显示“转换完成”。真正可用的标准是:文件能被目标客户端读取,且关键内容没有在转换过程中丢失。
- 语法:检查缩进是否使用空格,键名是否大小写一致,冒号后是否有空格。
- 节点数量:对比转换前能够识别的节点数量和转换后
proxies中的数量。数量减少时,不要直接认为是测速筛选,可能是协议字段或特殊字符不被目标格式接受。 - 协议字段:重点核对服务器、端口、密码、UUID、TLS、传输方式、流控和域名等字段是否仍然存在。新协议或扩展字段必须以目标客户端内核文档为准。
- 策略组:确认策略组引用的节点名称与实际节点名称一致。只有节点列表而没有策略组时,导入后可能看不到可直接选择的分流入口。
- 规则:如果配置包含规则集或外部规则地址,确认地址可访问;规则加载失败不一定代表节点转换失败。
- 更新方式:远程配置会在客户端刷新时再次请求订阅地址;本地文件不会自动获得上游变化,选择哪一种要根据你的更新需求决定。
Clash Verge Rev 的隐私说明指出,配置文件、订阅 URL、密码、UUID 和日志可能保存在本机文件中;远程配置更新时,客户端会向你填写的订阅地址发起请求。相关信息可查看 Clash Verge Rev 隐私说明。因此,导入前后都应把订阅地址当作访问凭据处理。
常见报错与回退动作
| 现象 | 优先判断 | 回退动作 |
|---|---|---|
| 403、401 或返回登录页 | 订阅权限、令牌或请求头不满足要求 | 回到订阅提供方确认地址是否有效;不要重复提交令牌 |
| 返回 HTML 而不是 YAML | 访问到了错误页、验证页或重定向页面 | 保存返回内容前先检查首行;修复访问链路后再转换 |
| 返回空 YAML | 源格式未识别、订阅为空或筛选条件排除了全部节点 | 去掉筛选和模板,先做一次最基础转换 |
| YAML 解析失败 | Tab、缩进、冒号或特殊字符问题 | 用编辑器显示空白字符,统一改为空格并恢复上一份副本 |
| 节点数量减少 | 协议字段、编码、命名或目标格式不兼容 | 先保留原始订阅,逐类比较丢失节点,不要直接覆盖旧配置 |
| 导入成功但没有策略组 | 得到的是节点集合而非完整配置 | 改用完整模板,或在客户端补充策略组;字段以当前内核文档为准 |
如果无法互相印证订阅域名、账户权限、转换服务来源和客户端内核兼容性,应停止下载、付款或继续导入。尤其不要把含有完整令牌的链接发到公开 issue、群聊或截图中。
安全建议:为什么本地转换更容易控制边界
订阅链接通常不仅是普通网址,还可能包含用于获取配置的个人令牌。公共转换服务至少会接触你提交的地址,并可能继续请求上游订阅;而本地转换可以把处理过程限制在自己的设备或自建环境中。这里不是对任何公共服务作安全结论,而是提醒你先确认数据流向。
- 优先使用本地文件或自建实例,不在普通浏览器历史记录中长期保留完整令牌。
- 不要把完整订阅地址放入公开截图、代码仓库、工单或聊天记录。
- 转换完成后检查输出文件和日志,确认没有把订阅地址、密码、UUID 一并发布。
- 如果怀疑令牌已经泄露,回到订阅管理页面重新生成或重置地址,并更新客户端配置。
- 遇到连接问题时先验证订阅是否返回有效内容,再排查 DNS、MTU、延迟和丢包;不要把 YAML 解析错误误判为线路故障。
最终建议可以概括为:先判断格式,再做最小转换;先保存副本,再导入启用;先核对节点和策略组,再调整网络参数。
常见问题
订阅转换 YAML 和直接改文件后缀有什么区别?
改文件后缀不会改变内容结构。订阅转换会读取源格式,再按目标客户端所需结构生成 YAML;如果源内容本来就是完整 YAML,通常不需要再次转换。
有没有可以直接粘贴订阅链接的在线转换工具?
本文没有核实一个可长期信任的公共在线输入框。能够从开源项目文档确认的是 subconverter 的本地接口,默认示例为 127.0.0.1:25500/sub。含令牌的订阅地址建议优先在本地或自建环境处理。
为什么转换后 YAML 能导入,但节点数量变少?
常见原因包括源协议字段未被目标格式识别、特殊字符或编码处理失败、模板筛选条件排除了节点,以及目标内核不支持某些字段。应保留原始订阅,关闭筛选和模板后重新转换,再逐类比较。
只有 proxies 没有 proxy-groups,算不算完整 YAML?
通常只能视为节点集合或不完整配置。它可能包含可用节点,但客户端未必能直接提供策略组和规则选择。导入后如果没有可选择的分组,需要补充兼容当前内核的策略组配置。
YAML 报错时应该先改 DNS 或 MTU 吗?
不应该。YAML 解析失败属于配置内容问题,应先检查缩进、Tab、冒号、大小写和字段兼容性;只有配置成功加载后仍然连接异常,才进入 DNS、MTU、延迟和丢包排查。