5.0 KiB
5.0 KiB
Clash Subscription Merger
一个智能的 Clash 节点订阅合并工具,能够将多个 VPN 订阅链接合并为统一的配置文件,支持自动节点分类、流量信息提取和智能排序。
功能特性
- 多订阅源合并: 支持合并多个 Base64 编码的 Clash 订阅链接
- 智能节点过滤: 自动过滤掉包含流量信息和到期时间的无效节点
- 地区自动分类: 根据节点名称自动归类到香港、新加坡、美国等地区
- 流量信息提取: 智能提取订阅中的流量信息并添加到组名中
- 名称冲突处理: 自动处理重复节点名称,使用
_Num后缀 - 智能排序: 按平均每日剩余流量对订阅组进行排序
- 文件自动替换: 支持自动替换指定目标文件
项目结构
clash-Subscribe/
├── merger.py # 主脚本,包含 ClashSubscriptionMerger 类
├── demo.py # 演示脚本,创建测试数据
├── subscribe.json # 订阅配置文件
├── temp.yaml # Clash 配置模板文件
├── merge.yaml # 最终输出的合并配置文件
├── Replacement.txt # 目标文件路径配置(可选)
├── temp/ # 临时文件目录
├── pyproject.toml # Python 项目配置
└── README.md # 项目说明文档
安装与使用
环境要求
- Python 3.8+
- uv 包管理器(推荐)
安装依赖
# 使用 uv(推荐)
uv sync
# 或使用 pip
pip install requests pyyaml
配置订阅
编辑 subscribe.json 文件,添加你的订阅信息:
[
{
"group_name": "订阅组名称",
"url": "https://your-subscription-url"
},
{
"group_name": "另一个订阅",
"url": "https://another-subscription-url"
}
]
运行程序
python merger.py
## 或者
uv run merger.py
生成演示数据
python demo.py
配置说明
地区分类规则
程序会根据以下关键词自动分类节点:
- 香港: HKG, 🇭🇰, HongKong, Hong Kong, HK
- 新加坡: Singapore, 🇸🇬, SGP, SG
- 美国: USA, 🇺🇸, United States, US, America
节点过滤规则
Proxy 节点过滤
自动过滤包含以下关键词的节点:
剩余流量套餐到期未到期
注意:保留包含 距离下次重置剩余 的节点。
Proxy Groups 节点过滤
过滤以下前缀开头的节点:
Auto剩余流量套餐到期未到期
流量信息提取
程序支持提取以下格式的流量信息:
剩余流量: XX.XX GB流量: XX.XX GB总流量: XX.XX GB
提取的流量信息会自动添加到订阅组名中,如:TrustedAccessPath(183.54 GB)
智能排序
新添加的订阅组会按照平均每日剩余流量(GB/天)进行降序排序,流量更多的组排在前面。
高级功能
自动文件替换
创建 Replacement.txt 文件,输入目标文件的完整路径:
/path/to/your/clash/config.yaml
程序完成合并后会自动将 merge.yaml 的内容替换到指定文件中。
模板文件自定义
temp.yaml 文件包含基础的 Clash 配置:
- 网络设置(端口 7890,DNS 配置)
- 地区代理组(Auto-香港,Auto-新加坡,Auto-USA)
- 路由规则(中国域名、国际域名)
- 广告屏蔽规则
工作流程
- 加载配置: 从
subscribe.json读取订阅信息 - 获取订阅: 下载并解码 Base64 订阅内容
- 保存临时文件: 将订阅内容保存到
temp/目录 - 处理节点: 提取代理节点并应用过滤规则
- 提取流量信息: 使用正则表达式提取流量和天数信息
- 地区分类: 根据节点名称自动分类到对应地区
- 名称去重: 处理重复节点名称冲突
- 智能排序: 按平均每日流量对订阅组排序
- 生成配置: 使用模板合并所有数据生成
merge.yaml - 文件替换: 可选地替换指定的目标文件
输出示例
开始处理Clash订阅合并...
正在处理订阅: TrustedAccessPath
已保存临时文件: temp/TrustedAccessPath.yaml
处理文件: temp/TrustedAccessPath.yaml
提取到流量信息: TrustedAccessPath -> 183.54 GB
提取到剩余天数: TrustedAccessPath -> 25天
平均每天剩余流量: TrustedAccessPath -> 7.34GB/天
更新组名: TrustedAccessPath -> TrustedAccessPath(183.54 GB)
合并完成!
总共合并了 156 个节点
香港节点: 45 个
新加坡节点: 38 个
美国节点: 42 个
其他节点组: 3 个
注意事项
- 程序会自动创建
temp/目录存储临时文件 - 如果临时文件已存在,程序会跳过重新下载
- 建议定期清理
temp/目录中的过期文件 - 请确保订阅 URL 的有效性和访问权限
- 生成的
merge.yaml文件可直接用于 Clash 客户端
依赖项
requests>=2.31.0- HTTP 请求库pyyaml>=6.0.1- YAML 文件处理库
许可证
本项目采用开源许可证,具体详情请查看项目仓库。