简单的编写clash规则

clash的规则很简单,但是节点配置是和规则写在一起的,有点反直觉.

文档示例(windows_V.m.ess)

clash的节点配置文件为 xxx.yml可以直接把写好的文件拖到clash的图形界面.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

port: 7890
socks-port: 7891
redir-port: 0
allow-lan: false
mode: Rule
log-level: info
external-controller: '0.0.0.0:9090'
secret: ''
Proxy:
- { name: "xxx-JP",type: vmess,server: xxx.com,port: 443,uuid: F36AFD-518B-0834-57B7-C2681763FAAE,alterId: 0,cipher: auto, network: ws, ws-path: /, ws-headers: { Host: xxx.com }, tls: true}
- { name: "xxx-HK",type: vmess,server: xxx.com,port: 443,uuid: F6DAFD-518B-0834-57B7-C2681763FAAE,alterId: 0,cipher: auto, network: ws, ws-path: /, ws-headers: { Host: xxx.com }, tls: true}
# Proxy:EvaAir
- { name: "EvaAir",type: vmess,server: xxx.com,port: 443,uuid: 63c14612-c0c2-44ac-84a3-a15f87aaf33d,alterId: 245,cipher: auto,tls: true, network: ws, ws-headers: { Host: xxx.com }}

Proxy Group:
- { name: DollSys, type: url-test, proxies: ["Sand-JP", "Sand-HK", "Sand-TW", "EvaAir","A-RU","A-JP-I","A-JP-II","A-HK","A-TW"], url: http://www.gstatic.com/generate_204, interval: 300}

- { name: DollCat, type: fallback, proxies: ["Sand-TW", "EvaAir","A-RU","A-JP-I","A-JP-II","A-HK","A-TW"], url: http://www.gstatic.com/generate_204, interval: 300}

- { name: Dollsel, type: select, proxies: ["Sand-TW", "EvaAir","A-RU","A-JP-I","A-JP-II","A-HK","A-TW"]}

Rule:
# 自定义
- DOMAIN-SUFFIX,tieba.baidu.com,DollSys
- DOMAIN-SUFFIX,pan.baidu.com,Dollcat
- DOMAIN-SUFFIX,github.com,Dollsel
- DOMAIN-SUFFIX,github.io,DollSys

# def
- DOMAIN-SUFFIX,google.com,DollSys
- DOMAIN-KEYWORD,google,DollSys
- DOMAIN,google.com,DollSys
- DOMAIN-SUFFIX,ad.com,REJECT
- IP-CIDR,127.0.0.0/8,DIRECT
- GEOIP,CN,DIRECT
- MATCH,DollSys

手动编写yml配置文件

Proxy:

proxy下面是你的代理配置,直接按照实际的信息填好就是,我的是按照json格式写的.

也可以按照默认的格式(proxygroup同理):

1
2
3
4
5
Proxy:
- name: Shadowsocks
type: socks5
server: 127.0.0.1
port: 1080

注意name字段最好有实际意义,比如xxx_jp代表日本节点.

Proxy Group:

这个是节点组,将几个节点放在节点组下,并给这个节点组指定策略,你发出的请求通过规则路由到对应的节点组后就会触发这个策略.

url-test:选择延迟最低的一个(容易造成账号风险控制,最好使用fallback)

fallback:节点不能连通时,选择下一个可以连通的节点(故障切换)

select:手动选择节点

比如DollSys这个节点组,有好几个节点.使用url-test策略,那么当请求到达这个节点组后,就会选择节点组内延迟最低的节点进行代理.

按照示例编写proxygroup,很简单.需要注意的是:

  • url-test和fallback必须指定url参数用来指定测试服务器,直接仿照示例写即可
  • 节点组的名称自己随意取,最好有意义
  • 节点组内的节点名称必须是Proxy内定义过的名称,否则会报错.

Rule:

规则,先用下面这条规则分析一下意思

1
2

DOMAIN-KEYWORD,google,DollSys

第一项指定的是匹配规则,第二项指定的是匹配的内容,第三项指定匹配后使用什么节点组.

匹配规则有很多,可以去clash官方文档看看,这里的这个规则是关键词匹配,整个规则的意思就是,匹配到含有google的请求就使用DollSys节点组.

1
GEOIP,CN,DIRECT

这一条中的Geoip,cn指定的是中国大陆常见地址,Direct是直接连接.

1
MATCH,DollSys

类似if(true),如果之前的请求都没被匹配,那么直接匹配走DollSys节点组

简单的工作过程

如图

Snipaste_2020_02_15_15_42_58

请求先通过rule选择节点组,通过rule找到对应的节点组,由节点组选出节点,由节点进行代理

值得注意的的是,rule是从第一条开始匹配的,一个请求如果在前面被匹配了,它就不会继续匹配下去.

比如,baidu.com虽然在geoip内,应该走direct但是由于前面已经有DOMAIN-SUFFIX,baidu.com,select这条规则,baidu.com就会从select节点组代理.

其他

由于很多xx不提供clash订阅之后vmess代码或者只有v2ray订阅.所以手动写clash配置太不方便了.可以用脚本自动转换一下.

如果文章有问题欢迎指出,或者你也可以联系我
本文作者:E1se
本文链接: 2020/02/15/简单的编写clash规则/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
-------------本文结束-------------
0%