|
1 | | -<!-- prettier-ignore --> |
| 1 | +# Clash Verge 自定义规则配置 |
2 | 2 |
|
3 | | -# 自定义路由规则 |
| 3 | +> 自定义规则可以精确控制流量分流,实现特定网站或应用的直连、代理或阻断。 |
4 | 4 |
|
5 | | -不知道规则类型? -> [Clash Mihomo路由规则文档](https://wiki.metacubex.one/config/rules)。 |
| 5 | +## 配置步骤 |
6 | 6 |
|
7 | | -不会写JavaScript? -> [菜鸟教程](https://www.runoob.com/js/js-tutorial.html)。 |
| 7 | +### 1. 编辑订阅规则(注意此处编辑的规则**不会**随着订阅更新而失效) |
8 | 8 |
|
9 | | -想要更多资料? -> [Script配置](./script.md) |
| 9 | +右键点击订阅配置文件,选择 **"编辑规则"**。 |
10 | 10 |
|
11 | | -## 通过全局扩展脚本 |
| 11 | + |
12 | 12 |
|
13 | | -**原理**:ClashVegerRev通过暴露出可编程的API,即 `config` 对象与 `profileName` |
14 | | -对象,可通过 `main` 函数传入config参数来编辑配置对象。 |
| 13 | +### 2. 添加规则 |
15 | 14 |
|
16 | | -```javascript |
| 15 | + |
17 | 16 |
|
18 | | -/** |
19 | | - * 配置中的规则"config.rules"是一个数组,通过新旧数组合并来添加 |
20 | | - * @param prependRule 添加的数组 |
21 | | - */ |
22 | | -const prependRule = [ |
23 | | - // 将百度分流到直连 |
24 | | - "DOMAIN-SUFFIX,baidu.com,DIRECT", |
25 | | - // 将本网站分流到自动选择(前提是你的代理组当中有"自动选择") |
26 | | - "DOMAIN-SUFFIX,clashverge.dev,自动选择", |
27 | | -]; |
28 | | -function main(config) { |
29 | | - // 把旧规则合并到新规则后面(也可以用其它合并数组的办法) |
30 | | - let oldrules = config["rules"]; |
31 | | - config["rules"] = prependRule.concat(oldrules); |
32 | | - return config; |
33 | | -} |
| 17 | +### 3. 规则类型说明 |
34 | 18 |
|
| 19 | +规则从上到下依次匹配,匹配到第一条符合条件的规则后停止。 |
| 20 | + |
| 21 | +#### 域名规则 |
| 22 | + |
| 23 | +**DOMAIN** - 完整域名匹配 |
| 24 | +```yaml |
| 25 | +- DOMAIN,google.com,代理策略 |
| 26 | +- DOMAIN,baidu.com,DIRECT |
| 27 | +``` |
| 28 | +
|
| 29 | +**DOMAIN-SUFFIX** - 域名后缀匹配 |
| 30 | +```yaml |
| 31 | +- DOMAIN-SUFFIX,google.com,代理策略 # 匹配 *.google.com |
| 32 | +- DOMAIN-SUFFIX,cn,DIRECT # 匹配所有 .cn 域名 |
| 33 | +``` |
| 34 | +
|
| 35 | +**DOMAIN-KEYWORD** - 域名关键词匹配 |
| 36 | +```yaml |
| 37 | +- DOMAIN-KEYWORD,google,代理策略 # 匹配包含 google 的域名 |
| 38 | +- DOMAIN-KEYWORD,ads,REJECT # 阻断包含 ads 的域名 |
| 39 | +``` |
| 40 | +
|
| 41 | +**GEOSITE** - 地理站点匹配 |
| 42 | +```yaml |
| 43 | +- GEOSITE,youtube,代理策略 # YouTube 相关域名 |
| 44 | +- GEOSITE,cn,DIRECT # 中国大陆网站 |
| 45 | +- GEOSITE,category-ads-all,REJECT # 广告域名 |
| 46 | +``` |
| 47 | +
|
| 48 | +#### IP 规则 |
| 49 | +
|
| 50 | +**IP-CIDR** - IP 地址段匹配 |
| 51 | +```yaml |
| 52 | +- IP-CIDR,192.168.0.0/16,DIRECT # 局域网直连 |
| 53 | +- IP-CIDR,10.0.0.0/8,DIRECT # 私有网络 |
| 54 | +``` |
| 55 | +
|
| 56 | +**GEOIP** - 地理 IP 匹配 |
| 57 | +```yaml |
| 58 | +- GEOIP,CN,DIRECT # 中国 IP 直连 |
| 59 | +- GEOIP,US,代理策略 # 美国 IP 走代理 |
| 60 | +``` |
| 61 | +
|
| 62 | +#### 端口规则 |
| 63 | +
|
| 64 | +**DST-PORT** - 目标端口匹配 |
| 65 | +```yaml |
| 66 | +- DST-PORT,22,DIRECT # SSH 端口直连 |
| 67 | +- DST-PORT,80/443,代理策略 # HTTP/HTTPS 端口 |
| 68 | +``` |
| 69 | +
|
| 70 | +#### 应用规则 |
| 71 | +
|
| 72 | +**PROCESS-NAME** - 进程名匹配 |
| 73 | +```yaml |
| 74 | +- PROCESS-NAME,Telegram.exe,代理策略 # Telegram 走代理 |
| 75 | +- PROCESS-NAME,WeChat.exe,DIRECT # 微信直连 |
| 76 | +``` |
| 77 | +
|
| 78 | +#### 逻辑规则 |
| 79 | +
|
| 80 | +**AND** - 多条件同时满足 |
| 81 | +```yaml |
| 82 | +- AND,((DOMAIN-SUFFIX,youtube.com),(GEOIP,!CN)),代理策略 |
| 83 | +``` |
| 84 | +
|
| 85 | +**OR** - 多条件满足其一 |
| 86 | +```yaml |
| 87 | +- OR,((DOMAIN-KEYWORD,google),(DOMAIN-KEYWORD,youtube)),代理策略 |
| 88 | +``` |
| 89 | +
|
| 90 | +#### 通用规则 |
| 91 | +
|
| 92 | +**MATCH** - 兜底规则(必须放在最后) |
| 93 | +```yaml |
| 94 | +- MATCH,代理策略 # 其他所有流量的默认策略 |
35 | 95 | ``` |
36 | 96 |
|
37 | | -还可以参考这个issue中讨论的做法-> [issues/1437#issuecomment-2395050752](https://github.com/clash-verge-rev/clash-verge-rev/issues/1437#issuecomment-2395050752) |
| 97 | +### 4. 代理策略选择 |
| 98 | +
|
| 99 | +在规则中指定的 **"代理策略"** 需要选择您配置的节点分组: |
| 100 | +
|
| 101 | +- `DIRECT` - 直连,不使用代理 |
| 102 | +- `REJECT` - 阻断连接 |
| 103 | +- `代理组名称` - 如 `🚀 手动切换`、`🎯 全球直连` 等 |
| 104 | + |
| 105 | +### 5. 规则插入位置 |
| 106 | + |
| 107 | +规则可以插入到 **"前置规则"** 或 **"后置规则"**: |
| 108 | + |
| 109 | +- **前置规则**:优先级最高,建议将自定义规则放在此处 |
| 110 | +- **后置规则**:在订阅规则之后生效 |
| 111 | + |
| 112 | +**推荐使用前置规则**,因为规则按从上到下的顺序匹配,前置规则能确保您的自定义配置优先生效。 |
| 113 | + |
| 114 | +## 常用配置示例 |
| 115 | + |
| 116 | +### 广告屏蔽 |
| 117 | +```yaml |
| 118 | +- GEOSITE,category-ads-all,REJECT |
| 119 | +- DOMAIN-KEYWORD,ads,REJECT |
| 120 | +- DOMAIN-KEYWORD,tracker,REJECT |
| 121 | +``` |
| 122 | + |
| 123 | +### 国内网站直连 |
| 124 | +```yaml |
| 125 | +- GEOSITE,cn,DIRECT |
| 126 | +- GEOIP,CN,DIRECT |
| 127 | +- DOMAIN-SUFFIX,cn,DIRECT |
| 128 | +``` |
| 129 | + |
| 130 | +### 流媒体分流 |
| 131 | +```yaml |
| 132 | +- GEOSITE,netflix,🎬 流媒体 |
| 133 | +- GEOSITE,youtube,📹 YouTube |
| 134 | +- GEOSITE,disney,🏰 Disney+ |
| 135 | +``` |
| 136 | + |
| 137 | +### 应用分流 |
| 138 | +```yaml |
| 139 | +- PROCESS-NAME,Telegram.exe,📱 Telegram |
| 140 | +- PROCESS-NAME,steam.exe,🎮 游戏加速 |
| 141 | +- PROCESS-NAME,WeChat.exe,DIRECT |
| 142 | +``` |
38 | 143 |
|
39 | | -## 为不同配置文件启用不同的脚本 |
| 144 | +## 注意事项 |
40 | 145 |
|
41 | | -```javascript |
| 146 | +1. **规则顺序很重要** - 规则按从上到下匹配,越靠前优先级越高 |
| 147 | +2. **测试规则效果** - 配置后建议测试访问对应网站确认规则生效 |
| 148 | +3. **定期更新规则** - 网站域名可能变化,需要适时调整规则 |
| 149 | +4. **避免规则冲突** - 确保规则逻辑清晰,避免前后矛盾 |
42 | 150 |
|
43 | | -function main(config, profileName) { |
44 | | - // 设订阅A |
45 | | - if(profileName === "A") { |
46 | | - // 对config修改 |
47 | | - // ...... |
48 | | - } |
49 | | - // 不是“A”则返回未修改的配置 |
50 | | - return config; |
51 | | -} |
| 151 | +## 更多信息 |
52 | 152 |
|
53 | | -``` |
| 153 | +更多规则语法和高级用法请参考:[Clash Meta 规则文档](https://wiki.metacubex.one/config/rules/) |
0 commit comments