一个用于管理 Clash 配置文件规则的 Python 工具,支持动态添加自定义规则到 Clash 配置文件中。
- 🔧 自动规则插入: 在指定位置自动插入规则,无需手动编辑配置文件
- 🔄 规则替换: 支持使用替换标签进行规则更新,避免重复添加
- 📝 灵活配置: 支持自定义缩进、匹配模式和规则分组
- 🎯 精准匹配: 使用正则表达式精确定位插入位置
- Python 3.6+
- 无需额外依赖,使用 Python 标准库
python3 clash_rules.py -f target_config.yaml -af rules_file -re 'rules:' -c '🔰国外流量' -s 4
参数 | 长参数 | 默认值 | 说明 |
---|---|---|---|
-f |
--target_file |
custom.yaml |
目标 Clash 配置文件路径 |
-af |
--append_file |
rules |
包含待添加规则的文件路径 |
-re |
--regex_str |
rules: |
用于定位插入位置的正则表达式 |
-c |
--choice |
🔰国外流量 |
规则分组标识 |
-s |
--space |
2 |
缩进空格数 |
python3 clash_rules.py -f my_clash_config.yaml -af foreign_rules.txt -re 'rules:' -c '🔰国外流量' -s 4
python3 clash_rules.py -f clash_config.yaml -af ad_block_rules.txt -re 'rules:' -c '🚫广告拦截' -s 2
python3 -m clash_rules -f config.yaml -af custom_rules -re 'rules:' -c '🎯自定义规则' -s 6
规则文件中每行包含一条规则,格式如下:
DOMAIN-SUFFIX,google.com
DOMAIN-SUFFIX,youtube.com
DOMAIN-KEYWORD,github
IP-CIDR,192.168.1.0/24
工具会将规则文件中的每条规则转换为以下格式:
- DOMAIN-SUFFIX,google.com,🔰国外流量
- DOMAIN-SUFFIX,youtube.com,🔰国外流量
- DOMAIN-KEYWORD,github,🔰国外流量
- IP-CIDR,192.168.1.0/24,🔰国外流量
工具使用特殊标签来标记可替换的规则块:
#REPLACE>>>
: 替换块开始标签#REPLACE<<<
: 替换块结束标签
当再次运行工具时,会自动移除旧的替换块并插入新的规则。
- 读取配置文件: 加载目标 Clash 配置文件
- 移除旧规则: 清除之前添加的替换标签块
- 定位插入点: 使用正则表达式找到插入位置
- 插入新规则: 在指定位置插入格式化的规则
- 保存文件: 将更新后的配置写回文件
- 工具会直接修改目标文件,建议先备份原始配置
- 确保规则文件编码为 UTF-8
- 正则表达式需要准确匹配配置文件中的内容
- 缩进空格数应与原配置文件保持一致
A: 通过调整 -re
参数来匹配不同的配置文件结构,例如:
- 标准格式:
-re 'rules:'
- 带注释格式:
-re '# Rules'
A: 检查原配置文件中规则的缩进,通常:
- 一级缩进:
-s 2
- 二级缩进:
-s 4
- 三级缩进:
-s 6
A: 支持所有 Clash 规则类型,包括:
- DOMAIN-SUFFIX
- DOMAIN-KEYWORD
- DOMAIN
- IP-CIDR
- GEOIP
- MATCH
欢迎提交 Issue 和 Pull Request 来改进此工具。
本项目采用 MIT 许可证。