Subconverter转Hysteria2订阅:原版不认hy2链接,换MetaCubeX分支解决

先说依据

这篇的依据(2026-10-18 读取):

结论是读源码得出的,Docker 部署和端到端转换没有在真机上逐条实测,跑起来后以实际输出为准。

问题:原版 subconverter 不认 hy2

如果你订阅里混了 hysteria2:// 链接,用原版 subconverter 转 Clash 配置,会发现 hy2 节点一个都不剩——不是配置错了,是原版根本不解析这种链接。证据是官方 README 的 Supported Types 表:Clash、SSR、V2Ray、Surge……整张表里没有 hysteria2,不支持解析,自然也不会输出。

这是全网高频坑:机场订阅现在 hy2 节点越来越多,原版 subconverter 的用户只能干瞪眼。

解法:换 MetaCubeX 分支

MetaCubeX(Mihomo/Clash Meta 生态的维护者)维护了一个 subconverter 分支,我读了它的源码确认:

  • 解析端(src/parser/subparser.cpp):有 explodeStdHysteria2 和 hysteria2Construct 两个函数,37 处提到 hysteria,能把 hysteria2:// 链接里的地址、端口、密码、SNI、混淆参数、上行下行带宽、端口跳跃全部拆出来;
  • 输出端(src/generator/config/subexport.cpp):hy2 节点能输出成 Clash YAML(type: hysteria2)、Surge、sing-box JSON 三种格式。

也就是说:解析和输出两端都是通的,不是半成品。

部署:Docker 一条命令

和原版用法一致,只是镜像名换掉(依据官方 README-docker.md):

1
2
docker run -d --restart=always -p 25500:25500 metacubex/subconverter:latest
curl http://localhost:25500/version

看到返回 subconverter vx.x.x backend 即运行正常。接口格式和原版完全一样:

1
http://127.0.0.1:25500/sub?target=clash&url=<URL编码后的订阅链接>

自建部署的通用注意事项(端口别暴露公网、自定义规则等)看我之前那篇 Subconverter 自建教程,这里不重复。

关键提醒:客户端必须用 Mihomo 内核

输出 target=clash 时,hy2 节点在 YAML 里是这样写的:

1
- {name: "HK-hy2", type: hysteria2, server: 1.2.3.4, port: 443, password: xxx, ...}

原版 Clash 内核不认识 type: hysteria2,会报 unsupported proxy type。必须用 Mihomo/Clash Meta 内核的客户端(Clash Verge Rev、FlClash、ClashMeta for Android 等)。这个问题站内有专文细讲:Clash报unsupported proxy type hysteria2怎么办。

和原版的对比

原版 tindy2013 MetaCubeX 分支
解析 hysteria2:// 否(直接丢弃) 是(源码验证)
输出 hy2 到 Clash/Surge/sing-box 否 是
Docker 镜像 tindy2013/subconverter metacubex/subconverter
接口/端口 25500,/sub 一致
维护状态 原版 2026-10-17 仍在更新

注意事项

  • 镜像默认无鉴权,25500 不要暴露到公网(只监听 127.0.0.1 或加反代);
  • 转完先检查输出里有没有 hy2 节点、参数全不全,再导入客户端;
  • 以上源码结论来自 2026-10-18 读取的 master 分支,后续版本以仓库为准;部署步骤未在真机逐条验证。