Skip to content

Commit 850bb10

Browse files
committed
add custom rules settings
1 parent 9369a32 commit 850bb10

File tree

7 files changed

+628
-46
lines changed

7 files changed

+628
-46
lines changed
133 KB
Loading
129 KB
Loading

docs/faq/windows.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## 代理菜单空白
2+
3+
问题原因
4+
5+
- 内核通信失败
6+
7+
解决方案
8+
9+
- 打开 Windows 防火墙设置,全部关闭,再开启
10+
111
## 打开TUN模式后网络异常
212

313
问题原因

docs/guide/rules.md

Lines changed: 138 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,153 @@
1-
<!-- prettier-ignore -->
1+
# Clash Verge 自定义规则配置
22

3-
# 自定义路由规则
3+
> 自定义规则可以精确控制流量分流,实现特定网站或应用的直连、代理或阻断。
44
5-
不知道规则类型? -> [Clash Mihomo路由规则文档](https://wiki.metacubex.one/config/rules)
5+
## 配置步骤
66

7-
不会写JavaScript? -> [菜鸟教程](https://www.runoob.com/js/js-tutorial.html)
7+
### 1. 编辑订阅规则(注意此处编辑的规则**不会**随着订阅更新而失效)
88

9-
想要更多资料? -> [Script配置](./script.md)
9+
右键点击订阅配置文件,选择 **"编辑规则"**
1010

11-
## 通过全局扩展脚本
11+
![edit-rules](../assets/guide/custom_rules/edit-rules.png)
1212

13-
**原理**:ClashVegerRev通过暴露出可编程的API,即 `config` 对象与 `profileName`
14-
对象,可通过 `main` 函数传入config参数来编辑配置对象。
13+
### 2. 添加规则
1514

16-
```javascript
15+
![add-rules](../assets/guide/custom_rules/add-rules.png)
1716

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. 规则类型说明
3418

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,代理策略 # 其他所有流量的默认策略
3595
```
3696
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+
```
38143

39-
## 为不同配置文件启用不同的脚本
144+
## 注意事项
40145

41-
```javascript
146+
1. **规则顺序很重要** - 规则按从上到下匹配,越靠前优先级越高
147+
2. **测试规则效果** - 配置后建议测试访问对应网站确认规则生效
148+
3. **定期更新规则** - 网站域名可能变化,需要适时调整规则
149+
4. **避免规则冲突** - 确保规则逻辑清晰,避免前后矛盾
42150

43-
function main(config, profileName) {
44-
// 设订阅A
45-
if(profileName === "A") {
46-
// 对config修改
47-
// ......
48-
}
49-
// 不是“A”则返回未修改的配置
50-
return config;
51-
}
151+
## 更多信息
52152

53-
```
153+
更多规则语法和高级用法请参考:[Clash Meta 规则文档](https://wiki.metacubex.one/config/rules/)

docs/guide/script.md

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,57 @@
1-
## 新增脚本
2-
31
<!-- prettier-ignore -->
4-
!!! warning
5-
- 如果创建了多个 Script 配置,按照启用顺序先后,**链式执行**
6-
- **<font color="red">配置修改后需要重新启用</font>**,生效时卡片有颜色标识(右键配置 `禁用``启用` ,也可以点击右上角的 🔥 按钮)。
72

8-
<video controls>
9-
<source src="../assets/guide/script/script.webm">
10-
</video>
3+
# 自定义规则脚本
4+
5+
不知道规则类型? -> [Clash Mihomo路由规则文档](https://wiki.metacubex.one/config/rules)
6+
7+
不会写JavaScript? -> [菜鸟教程](https://www.runoob.com/js/js-tutorial.html)
8+
9+
想要更多资料? -> [Script配置](./script.md)
10+
11+
## 通过全局扩展脚本
12+
13+
**原理**:ClashVegerRev通过暴露出可编程的API,即 `config` 对象与 `profileName`
14+
对象,可通过 `main` 函数传入config参数来编辑配置对象。
15+
16+
```javascript
17+
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+
}
34+
35+
```
36+
37+
还可以参考这个issue中讨论的做法-> [issues/1437#issuecomment-2395050752](https://github.com/clash-verge-rev/clash-verge-rev/issues/1437#issuecomment-2395050752)
38+
39+
## 为不同配置文件启用不同的脚本
40+
41+
```javascript
42+
43+
function main(config, profileName) {
44+
// 设订阅A
45+
if(profileName === "A") {
46+
// 对config修改
47+
// ......
48+
}
49+
// 不是“A”则返回未修改的配置
50+
return config;
51+
}
52+
53+
```
54+
1155

1256
## 脚本说明
1357

0 commit comments

Comments
 (0)