A Modern Evolution of subconverter
Note
SubConverter-Extended 是基于 asdlokj1qpi233/subconverter 深度二次开发的订阅转换后端增强版本。
它专为协同 Mihomo 内核工作优化,提供更现代、更强大的订阅转换服务。
核心定位转变: SubConverter-Extended 不再充当客户端和机场之间的"中转站",而是成为独立的**"配置融合器"**——只对客户端服务,不连接机场订阅服务器。同时基于 Mihomo 内核源码,在编译时自动跟进协议支持。
Warning
SubConverter-Extended 优先服务 Clash 客户端,对其他客户端如 Surge/Loon 的支持不作保证。
在长期使用 subconverter 的过程中,我遇到了几个不如人意的痛点:
subconverter 对新节点格式的支持完全取决于维护者的积极性。许多新兴协议(如 hysteria2、tuic、anytls 等)往往在相当长的时间内无法得到支持,而一些老协议至今也未能做到完美的转换。
由于 subconverter 需要连接机场订阅服务器拉取节点,而部分机场出于安全考虑:
- 屏蔽海外 IP 访问
- 直接屏蔽 subconverter 的 User-Agent
- 限制非客户端的订阅请求
这导致许多用户根本无法正常使用订阅转换服务。
由于上述问题,subconverter 逐渐被一些开发者和 UP 主视为"过时产物",开始推崇使用 YAML 文件手动管理配置。但很多新手并没有兴趣和时间去研究 YAML 配置文件,更多的是希望“开袋即食”。
但由于 subconverter 的原因,许多人常遇到不能解析节点/不能拉取节点/拉下来的节点参数无效等等奇怪的问题,这对于很多新手来说,基本是没有能力去解决的。
但也正是基于这一点,正如 Custom_OpenClash_Rules 项目所坚持的:
Important
最适合新手以及最具普适性的操作流程,永远是基于 UI 界面的操作流程。
用户应当拿着订阅链接,点几下鼠标就能根据自己的实际情况配置出最佳效果,并自动享受完善的分流规则更新。
而不是繁琐的"上传文件"、"手动修改参数",甚至还得到处提问,问的太蠢了还会被人喷,一点儿都不优雅。
那就自己动手吧。 SubConverter-Extended 因此诞生,让转换工具更匹配现代 Clash 内核的使用场景,服务于所有保留“订阅转换”接口且使用 Mihomo 内核的 Clash 客户端。
| 功能 | 原版 Subconverter | SubConverter-Extended |
|---|---|---|
| 协议支持 | 🛠️ 人工维护解析器 | 🤖 集成 Mihomo 内核解析器,自动支持所有协议 |
| 订阅链接处理 | 📥 下载并解析节点 | 🔗 生成 proxy-provider,由用户的 Mihomo 内核直接拉取 |
| 节点链接处理 | ✅ 内置 Mihomo 内核的解析模块,完美解析 | |
| 新协议支持 | ⏳ 人工添加维护 | 🔄 全自动维护,编译时自动扫描 Mihomo 源码添加支持 |
| 全局参数透传 | 📝 人工维护参数列表 | 🔍 全自动维护,编译时自动识别可覆写参数 |
使用 Mihomo 的 Proxy-Provider 机制
订阅链接不再下载解析,而是生成客户端可直接使用的配置,交由用户客户端的 Mihomo 内核自行拉取订阅:
proxy-providers:
provider_1:
type: http
url: https://your-subscription-url # <-- 客户端直接连接机场
interval: 3600
path: ./providers/provider_1.yaml
health-check:
enable: true
interval: 600
url: http://www.gstatic.com/generate_204Tip
优势:
- ✅ 不再干涉用户节点,交由内核原生处理
- ✅ 订阅更新由客户端控制,无需重新转换
- ✅ 避免机场屏蔽转换服务器的问题
直接使用 Mihomo Go 库解析节点链接,确保:
- ✅ 支持 Mihomo 的所有协议(包括
hysteria2,tuic,anytls等) - ✅ 参数完全兼容,无需手动适配
- ✅ 新协议零延迟支持(编译时跟随 Mihomo 更新)
- ✅ 无缝切换:完全兼容传统 subconverter 的 API 接口,确保客户端用户零学习成本,无缝切换。
- ✅ 模板兼容:继续沿用传统的订阅转换外部模板,无需修正任何内容,由后端内置逻辑确保
proxy-provider模式在分流规则中正确生成。 - ✅ 无忧更新:编译时自动遍历 Mihomo 内核仓库,提取并写入当前最新支持的协议格式,确保永远支持最新协议。
- ✅ 使用 Custom_OpenClash_Rules 远程配置模板替代默认模板
- ✅ 锁死 API 模式,避免新手误配置降低安全性
- ✅ 简化参数,专注核心功能
如果你不想折腾服务器,可以直接使用我们提供的公共后端:
Tip
公共后端地址:https://api.asailor.org
你可以在任何支持自定义后端的订阅转换网站或客户端中填入此地址即可使用。
如果你拥有自己的服务器,推荐使用 Docker 进行部署。
Warning
代码尚不完善,推荐优先使用公共后端。
由于开发者业余时间有限,以下部署指南部分内容由 AI 生成,仅供参考。
docker run -d \
--name subconverter \
-p 25500:25500 \
--restart unless-stopped \
aethersailor/subconverter-extended:latest访问 http://localhost:25500/version 验证部署。
# 1. 创建配置目录
mkdir -p ~/subconverter/base
# 2. 下载配置文件模板(可选)
wget -O ~/subconverter/base/pref.toml \
https://raw.githubusercontent.com/Aethersailor/SubConverter-Extended/master/base/pref.example.toml
# 3. 启动容器并挂载配置
docker run -d \
--name subconverter \
-p 25500:25500 \
-v ~/subconverter/base:/base \
--restart unless-stopped \
aethersailor/subconverter-extended:latest使用方式与原版 subconverter 完全相同。
将机场订阅转换为 Clash 配置:
curl "http://localhost:25500/sub?target=clash&url=https://your-sub-url"配合 Custom_OpenClash_Rules 项目使用:
curl "http://localhost:25500/sub?target=clash&url=YOUR_SUB&config=https://raw.githubusercontent.com/Aethersailor/Custom_OpenClash_Rules/main/cfg/Custom_Clash.ini"| 参数 | 说明 | 示例 |
|---|---|---|
target |
目标格式 | clash, surge, quanx |
url |
订阅链接或节点链接(| 分隔) |
https://sub.com|vless://... |
config |
外部配置文件 | https://config-url |
include |
包含节点(正则) (暂不支持) | 香港|台湾 |
exclude |
排除节点(正则) | 过期|剩余 |
emoji |
添加 Emoji | true/false |
支持三种格式:pref.toml(推荐)、pref.yml、pref.ini。
关键配置项:
[managed_config]
managed_config_prefix = "http://localhost:25500" # 托管配置前缀| 标签 | 用途 | 更新频率 |
|---|---|---|
latest |
🟢 稳定版本(master 分支) | 有 release 时更新 |
dev |
🟡 开发版本(dev 分支) | 每次 dev 分支推送 |
本项目使用或引用了以下开源项目,在此表示感谢:
- MetaCubeX/mihomo - Clash 内核,提供节点解析能力
- Aethersailor/Custom_OpenClash_Rules - OpenClash 规则集项目
- asdlokj1qpi233/subconverter - 原版项目
本项目基于 GPL-3.0 协议开源。
Tip
内置的 Mihomo 解析器模块遵循 MIT 协议。
如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!
Made with ❤️ by Aethersailor
