Clash 自定义分流规则怎么写(DOMAIN / IP-CIDR / 规则集)
想让某个网站强制直连、某个 App 强制走代理?这就需要自定义分流规则。本文讲清规则语法、匹配优先级,以及如何用扩展配置 / 扩展脚本叠加个人规则——订阅更新后你的规则依然保留。
规则语法基础
一条规则的格式是 规则类型,匹配内容,策略,策略可以是策略组名、DIRECT(直连)或 REJECT(拒绝)。常用类型:
| 类型 | 含义 | 示例 |
|---|---|---|
DOMAIN | 精确域名 | DOMAIN,www.google.com,PROXY |
DOMAIN-SUFFIX | 域名后缀 | DOMAIN-SUFFIX,github.com,PROXY |
DOMAIN-KEYWORD | 域名关键词 | DOMAIN-KEYWORD,google,PROXY |
IP-CIDR | IP 段 | IP-CIDR,192.168.0.0/16,DIRECT |
GEOIP | 按国家 | GEOIP,CN,DIRECT |
MATCH | 兜底(必须最后) | MATCH,PROXY |
匹配优先级
Clash 规则从上到下依次匹配,命中即停止。所以越精确的规则要放越前面。推荐顺序:
- 精确域名类(DOMAIN > DOMAIN-SUFFIX > DOMAIN-KEYWORD)放最上面;
- IP 类(IP-CIDR、GEOIP)放后面,因为它们需要先做 DNS 解析;
- 最后用
MATCH兜底,未命中的流量交给指定策略组。
例子:想让
bilibili.com 直连,把 DOMAIN-SUFFIX,bilibili.com,DIRECT 放在所有代理规则之前即可。用扩展配置叠加规则(不改订阅)
直接改订阅文件不可取——订阅一更新就被覆盖。正确做法是用 Clash Verge Rev 的扩展配置(旧称 Merge):右键订阅卡片 → 编辑规则 / 编辑扩展配置,在可视化编辑器里把自定义规则前置(prepend)到订阅规则之上。这样订阅更新后,你的规则依然生效。
用扩展脚本动态插入规则
需要更灵活的逻辑时用扩展脚本(JavaScript),入口为 main(config),返回修改后的配置对象:
// 把自定义规则插到订阅规则前面
const prependRules = [
"DOMAIN-SUFFIX,baidu.com,DIRECT",
"DOMAIN-SUFFIX,bilibili.com,DIRECT",
"DOMAIN-KEYWORD,google,PROXY",
];
function main(config) {
const old = config["rules"] || [];
config["rules"] = prependRules.concat(old);
return config;
}
升级注意:Clash Verge Rev v1.7.x 后旧的
prepend-rules / append-rules 写法已失效,请改用可视化编辑器或上面的数组合并写法。规则集(rule-set / Provider)
规则太多会影响性能。推荐用 rule-providers 引用外部规则集(如按类别维护的 GitHub 规则文件),一条 RULE-SET,类别,策略 即可引用成百上千条规则,且能定时更新。这是进阶分流的主流做法。
⚠️ 免责声明:本文为开源软件使用教程,本站不提供任何节点、VPN 或机场服务。请遵守所在地区法律法规,合理合法使用网络工具。