yangfan 63b7800b59 xx
2025-08-14 11:33:08 +08:00
xx
2025-08-14 11:33:08 +08:00
xx
2025-08-14 11:33:08 +08:00
2025-07-23 19:31:36 +08:00
xx
2025-08-14 11:33:08 +08:00
xx
2025-08-14 11:33:08 +08:00
2025-07-23 19:31:36 +08:00
2025-07-23 19:31:36 +08:00
xx
2025-08-14 11:33:08 +08:00
2025-07-23 19:31:36 +08:00
xx
2025-08-14 11:33:08 +08:00
2025-07-23 19:31:36 +08:00
2025-07-23 19:31:36 +08:00
2025-07-23 19:31:36 +08:00
2025-07-23 19:31:36 +08:00
2025-07-23 19:31:36 +08:00
xx
2025-08-14 11:33:08 +08:00
xx
2025-08-14 11:33:08 +08:00
xx
2025-08-14 11:33:08 +08:00
xx
2025-08-14 11:33:08 +08:00

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 配置:

  • 网络设置(端口 7890DNS 配置)
  • 地区代理组Auto-香港Auto-新加坡Auto-USA
  • 路由规则(中国域名、国际域名)
  • 广告屏蔽规则

工作流程

  1. 加载配置: 从 subscribe.json 读取订阅信息
  2. 获取订阅: 下载并解码 Base64 订阅内容
  3. 保存临时文件: 将订阅内容保存到 temp/ 目录
  4. 处理节点: 提取代理节点并应用过滤规则
  5. 提取流量信息: 使用正则表达式提取流量和天数信息
  6. 地区分类: 根据节点名称自动分类到对应地区
  7. 名称去重: 处理重复节点名称冲突
  8. 智能排序: 按平均每日流量对订阅组排序
  9. 生成配置: 使用模板合并所有数据生成 merge.yaml
  10. 文件替换: 可选地替换指定的目标文件

输出示例

开始处理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 文件处理库

许可证

本项目采用开源许可证,具体详情请查看项目仓库。

Description
No description provided
Readme 169 KiB
Languages
Python 100%