订阅转换教程:subconverter 把通用订阅转成 Clash / sing-box 格式
订阅转换只在一种情况下需要:机场给的订阅格式和你的客户端不匹配。 例如机场只提供 Base64 编码的通用订阅(一串 ss://、vless:// 链接),而你用 Clash Verge,它只认 YAML 格式的 Clash 配置。转换工具读取通用订阅,输出带分流规则的 Clash 或 sing-box 配置。
先说一个前提:本站 17 家机场 的品牌资料基本都写了「支持第三方客户端订阅导入」,多数机场的用户中心同时提供 Clash、Shadowrocket、sing-box 多种格式。先去用户中心找,找不到再转换。 另外新版 Clash Verge Rev 和 Clash Meta 已经能直接导入部分通用订阅并自动转换,试一下再说。
转换的原理
subconverter 是最常用的转换后端。流程:
- 你提供通用订阅链接。
- 转换服务去拉取它,解析出每个节点的协议、地址、端口、密码。
- 套用一份规则模板(哪些域名直连、哪些走代理、策略组怎么分),输出目标格式。
所以转换服务必须能访问你的订阅链接,也就是能拿到你全部节点。这是下面要说的风险。
公共转换服务的风险
网上有很多「在线订阅转换」网站。方便,但:
- 它们能看到你的订阅链接和全部节点密码,等于把机场账号交给陌生人。
- 服务方可能记录、转卖节点,或者把你的节点加进免费节点池,流量被别人跑光。
- 站点随时关闭,你的客户端订阅就失效了。
机场通常也在条款里禁止把订阅链接提交给第三方。如果一定要用公共服务,用完立即在机场后台重置订阅链接(见 订阅链接怎么用)。
三种做法的隐私风险对比:
| 做法 | 谁能看到订阅链接 | 节点泄露风险 | 失效风险 | 适合 |
|---|---|---|---|---|
| 公共在线转换站 | 站点运营者,每次更新都经过它 | 高,可被记录、转卖或加入免费池 | 高,站点随时关闭 | 临时应急,用完重置订阅 |
| 客户端内置转换(Clash Verge / Clash Meta 自动转换) | 只有本机 | 无 | 低 | 多数用户首选 |
| 自建 subconverter | 只有自己的服务器 | 无(服务器安全前提下) | 低 | 多设备、长期使用 |
| 机场直接提供目标格式 | 只有机场 | 无额外风险 | 最低 | 能拿到就用这个 |
自建 subconverter:三种部署方式
方式一:Docker(推荐,NAS 和 VPS 通用)
- 服务器安装 Docker(群晖、飞牛、Unraid 等 NAS 自带)。
- 运行:
docker run -d --name subconverter -p 25500:25500 --restart=always tindy2013/subconverter:latest
- 浏览器访问
http://你的IP:25500/version,看到版本号即成功。 - 升级:
docker pull tindy2013/subconverter:latest后删掉旧容器重新运行一次上面的命令。
方式二:二进制直接运行(Windows / Linux,不想装 Docker)
- 到 subconverter 的 GitHub Releases 下载对应系统的压缩包(如
subconverter_linux64.tar.gz、subconverter_win64.7z)。 - 解压,目录里有可执行文件和
pref.toml配置、base/规则目录。 - 运行
./subconverter(Windows 双击subconverter.exe),默认监听 25500 端口。 - Linux 上用 systemd 或
nohup ./subconverter &让它常驻;Windows 上可以用任务计划程序开机启动。 - 想改端口或访问令牌,编辑
pref.toml里的listen、port、api_access_token。
方式三:托管平台(没有服务器)
部分免费容器托管平台(如支持 Docker 镜像部署的 PaaS)可以直接拉取 tindy2013/subconverter 镜像运行,暴露 25500 端口即可得到一个公网地址。注意三点:免费层通常会在闲置后休眠,首次更新订阅会慢十几秒;平台能看到容器日志,不要在日志里打印订阅;平台条款可能禁止代理相关用途,账号有被停的风险。它比公共转换站安全(只有你和平台),但不如自己的服务器。
无论哪种方式,启动后的转换链接格式都一样:
http://你的IP:25500/sub?target=clash&url=<URL编码后的通用订阅链接>&config=<规则模板链接>
参数说明:
| 参数 | 含义 | 常用值 | 说明 | ||
|---|---|---|---|---|---|
| target | 目标格式 | clash、clashr、singbox、surge&ver=4、quanx、loon、ss、v2ray | Clash Verge / Clash Meta 用 clash;sing-box 用 singbox | ||
| url | 源订阅,需 URL 编码 | 通用订阅链接 | 多个订阅用 `\ | ` 分隔后整体编码 | |
| config | 规则模板 | ini 文件的 URL,或留空 | 决定策略组和分流规则 | ||
| emoji | 节点名加国旗 | true / false | 方便手机上快速识别地区 | ||
| udp | 节点开启 UDP | true / false | 游戏、语音需要,见 UDP 与 NAT 类型 | ||
| sort | 按名称排序 | true / false | 节点多时方便找 | ||
| exclude | 排除匹配的节点 | 正则,如 `剩余\ | 到期\ | 官网` | 去掉订阅里的流量信息「假节点」 |
| include | 只保留匹配的节点 | 正则,如 `香港\ | HK` | 只要特定地区 | |
| rename | 批量重命名 | 原文@替换 | 如把「ss-HK-」替换为「🇭🇰 」 | ||
| tfo | TCP Fast Open | true / false | 多数情况不需要 | ||
| scv | 跳过证书验证 | true / false | 不要开,开了伪装失效 | ||
| fdn | 过滤不支持的节点 | true | 避免目标客户端报错 | ||
| list | 只输出节点列表 | true | 用于 Clash 的 provider 文件 |
把生成的链接当作普通订阅粘贴到 Clash Verge 即可。它会在每次更新时实时去拉源订阅。
为了安全,给 subconverter 加一层反向代理和访问密码,或者只在内网使用。
本地转换,不走服务器
- Clash Verge Rev:导入通用订阅时会尝试自动识别并转换,失败时在订阅编辑里勾选「使用转换」并填自建后端。
- Clash Meta for Android:导入 URL 时可勾选「自动转换」。
- sing-box 用户:用 sing-box 自带的订阅解析(1.9 以后部分版本),或者让机场直接给 sing-box 订阅。
规则模板
转换的价值一半在规则。默认模板已经包含国内直连、广告拦截、常见海外服务分流。要自定义时写一份 ini:按「策略组 → 规则集」组织,常用规则集来自 ACL4SSR、blackmatrix7 等项目。进阶写法见 Clash 规则配置进阶。
转换失败怎么排查
| 现象 | 原因 | 处理 |
|---|---|---|
| 客户端提示订阅无效 / 返回空 | url 参数没做 URL 编码,&、? 被截断 | 用在线工具或 encodeURIComponent 编码后再拼 |
| 返回「No nodes were found」 | 源订阅本身为空(到期、流量用尽)或格式后端不认 | 先在浏览器打开源订阅确认有内容;升级后端 |
| 节点数比源订阅少 | 后端版本旧,不支持 Hysteria2、AnyTLS、Reality 等 | 换最新镜像;或改用 singbox 目标 |
| 能上网但分流全走代理 | config 模板失效或为空 | 换一个可访问的模板 URL,或留空用默认 |
| 更新很慢、经常超时 | 后端在海外,拉取源订阅慢;托管平台休眠 | 后端放在国内 NAS,或开代理更新 |
| 转换后节点全部超时 | 后端把 scv 关了而节点用自签证书,或端口被改 | 对照源订阅的单个节点手动添加测试 |
| 403 Forbidden | 后端开了 api_access_token 或 IP 白名单 | 在链接里加 token= 参数 |
| 节点名乱码 | 源订阅编码问题或 emoji 参数与客户端冲突 | 关掉 emoji,或设置 rename 规则 |
排查顺序:先在浏览器直接打开转换链接看返回内容(是 YAML 还是错误提示),再逐个减少参数定位问题。节点本身的连接问题走 机场连不上怎么办。
什么时候不需要转换
- 机场用户中心有对应格式:直接用。
- 用的是 Shadowrocket、v2rayN、v2rayNG:它们原生认通用订阅。
- 节点类型客户端不支持(比如旧 Clash 不认 VLESS Reality):转换解决不了,要升级客户端,见 VLESS 协议是什么。
常见问题
转换后节点变少了?
转换后端不认识的协议会被丢掉(例如旧版 subconverter 不支持 Hysteria2、AnyTLS)。更新后端镜像,或改用 sing-box 格式。
转换后能上网但分流不对?
规则模板问题。换模板或检查策略组是否选对了节点。
转换链接可以给别人吗?
不行,它内含你的订阅链接。
机场订阅更新后转换链接要重新生成吗?
不用,转换链接每次都实时拉取源订阅。只有机场更换订阅域名时才需要换。
转换会降低速度吗?
不会。转换只在拉取订阅时发生一次,产出一份配置文件;之后客户端直接连节点,不经过转换服务器。
多个机场的订阅能合并成一份吗?
能。url 参数里用 | 分隔多个订阅后整体 URL 编码,subconverter 会把节点合并进同一个策略组,适合主力 + 备用机场一起管理。
没有服务器怎么办?
优先向机场要对应格式;其次在本机用 Docker Desktop 跑 subconverter,地址填 http://127.0.0.1:25500。
转换是补救手段,不是常态。挑一家各种格式都提供的机场省心得多,见 机场推荐排行榜 和 有自研客户端的机场推荐。