订阅转换教程:subconverter 把通用订阅转成 Clash / sing-box 格式

教程 · 发布 2026-11-05 · 更新 2026-11-05 · 约 4296 字 · 11 分钟

订阅转换只在一种情况下需要:机场给的订阅格式和你的客户端不匹配。 例如机场只提供 Base64 编码的通用订阅(一串 ss://、vless:// 链接),而你用 Clash Verge,它只认 YAML 格式的 Clash 配置。转换工具读取通用订阅,输出带分流规则的 Clash 或 sing-box 配置。

先说一个前提:本站 17 家机场 的品牌资料基本都写了「支持第三方客户端订阅导入」,多数机场的用户中心同时提供 Clash、Shadowrocket、sing-box 多种格式。先去用户中心找,找不到再转换。 另外新版 Clash Verge Rev 和 Clash Meta 已经能直接导入部分通用订阅并自动转换,试一下再说。

转换的原理

subconverter 是最常用的转换后端。流程:

  1. 你提供通用订阅链接。
  2. 转换服务去拉取它,解析出每个节点的协议、地址、端口、密码。
  3. 套用一份规则模板(哪些域名直连、哪些走代理、策略组怎么分),输出目标格式。

所以转换服务必须能访问你的订阅链接,也就是能拿到你全部节点。这是下面要说的风险。

公共转换服务的风险

网上有很多「在线订阅转换」网站。方便,但:

  • 它们能看到你的订阅链接和全部节点密码,等于把机场账号交给陌生人。
  • 服务方可能记录、转卖节点,或者把你的节点加进免费节点池,流量被别人跑光。
  • 站点随时关闭,你的客户端订阅就失效了。

机场通常也在条款里禁止把订阅链接提交给第三方。如果一定要用公共服务,用完立即在机场后台重置订阅链接(见 订阅链接怎么用)。

三种做法的隐私风险对比:

做法谁能看到订阅链接节点泄露风险失效风险适合
公共在线转换站站点运营者,每次更新都经过它高,可被记录、转卖或加入免费池高,站点随时关闭临时应急,用完重置订阅
客户端内置转换(Clash Verge / Clash Meta 自动转换)只有本机无低多数用户首选
自建 subconverter只有自己的服务器无(服务器安全前提下)低多设备、长期使用
机场直接提供目标格式只有机场无额外风险最低能拿到就用这个

自建 subconverter:三种部署方式

方式一:Docker(推荐,NAS 和 VPS 通用)

  1. 服务器安装 Docker(群晖、飞牛、Unraid 等 NAS 自带)。
  2. 运行:
docker run -d --name subconverter -p 25500:25500 --restart=always tindy2013/subconverter:latest
  1. 浏览器访问 http://你的IP:25500/version,看到版本号即成功。
  2. 升级:docker pull tindy2013/subconverter:latest 后删掉旧容器重新运行一次上面的命令。

方式二:二进制直接运行(Windows / Linux,不想装 Docker)

  1. 到 subconverter 的 GitHub Releases 下载对应系统的压缩包(如 subconverter_linux64.tar.gz、subconverter_win64.7z)。
  2. 解压,目录里有可执行文件和 pref.toml 配置、base/ 规则目录。
  3. 运行 ./subconverter(Windows 双击 subconverter.exe),默认监听 25500 端口。
  4. Linux 上用 systemd 或 nohup ./subconverter & 让它常驻;Windows 上可以用任务计划程序开机启动。
  5. 想改端口或访问令牌,编辑 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、v2rayClash Verge / Clash Meta 用 clash;sing-box 用 singbox
url源订阅,需 URL 编码通用订阅链接多个订阅用 `\` 分隔后整体编码
config规则模板ini 文件的 URL,或留空决定策略组和分流规则
emoji节点名加国旗true / false方便手机上快速识别地区
udp节点开启 UDPtrue / false游戏、语音需要,见 UDP 与 NAT 类型
sort按名称排序true / false节点多时方便找
exclude排除匹配的节点正则,如 `剩余\到期\官网`去掉订阅里的流量信息「假节点」
include只保留匹配的节点正则,如 `香港\HK`只要特定地区
rename批量重命名原文@替换如把「ss-HK-」替换为「🇭🇰 」
tfoTCP Fast Opentrue / 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。


转换是补救手段,不是常态。挑一家各种格式都提供的机场省心得多,见 机场推荐排行榜 和 有自研客户端的机场推荐。