一般的机场对于 Clash 的订阅链接都提供了已经配置好的规则,所以我们可以快速的将其导入进行使用。但是由于其对不同网站平台的支持性不一样,会出现需要切换机场的情况。前端时间发现 Clash Premium 核心提供了 proxy-provider 和 rule-provider 的功能,前者可以实现导入多个机场的节点,后者可以引入大佬们实时维护的不同类型的在线规则集。

前置条件

  • Clash Premium 核心,同时适用于所有使用 Clash Premium 核心的客户端。

大致原理

1
2
3
如:RULE-SET,telegramcidr,PROXY

表示:当访问的域名或 IP 在 telegramcidr 规则集中时,使用 PROXY 策略组进行访问

配置

proxy-providers

1
2
3
4
5
6
7
8
9
10
11
proxy-providers:
<name>: # 代理集名称
type: http | file # 代理集类型:http(clash 订阅链接) | file(本地文件)
path: ./profiles/proxies/<name>.yaml # 代理集存放路径,可以为绝对路径,相对路径相对于 clash home 目录
url: <url> # 代理集链接(若 type 为 http)
filter: '' # 节点过滤器
interval: 3600 # 代理集更新间隔(若 type 为 http)
health-check: # 用于对代理集所包含的节点设置自动延迟测试
enable: true
interval: 300 # 间隔时间
url: http://www.gstatic.com/generate_204 # 测试地址
  • <name>: 代理集名称,可以随意命名,但是不能重复
  • type: 代理集类型,可以是 http 或 file
  • path: 代理集存放路径
  • url: 代理集链接,只有当 type 为 http 时才需要填写
  • filter: 节点过滤器,可以筛选出符合条件的节点。用 | 分隔
    • ABC | DEF: 指筛选出节点名称中包含 ABC 或 DEF 的节点
  • interval: 代理集更新间隔,只有当 type 为 http 时才需要填写
  • health-check: 用于对代理集所包含的节点设置自动延迟测试
    • enable: 是否开启自动延迟测试
    • interval: 自动延迟测试间隔时间
    • url: 自动延迟测试地址

proxy-groups

1
2
3
4
5
6
7
8
9
proxy-groups:
- name: PROXY
type: url-test
interval: 3600
url: http://www.gstatic.com/generate_204
use:
- <name>
proxies:
- <name>
  • name: 策略组名称,可以随意命名,但是不能重复
    • PROXY: 必须有一个 PROXY 策略组,因为 PROXY 为默认的策略组
  • type: 策略组类型
    • url-test: 通过测试地址测试节点延迟,选择延迟最低的节点
    • select: 手动选择节点
  • interval: 自动执行节点延迟测试的间隔,只有当 type 为 url-test 时才需要填写
  • url: 节点延迟测试地址,只有当 type 为 url-test 时才需要填写
  • use: 引用 proxy-provider 中的代理集,填写对应的代理集名称
  • proxies: 可以在此手动引用单个节点配置或其它策略组
    • DIRECT: 若使用 openclash 工具,需要添加一个 DIRECT 策略组,否则可能无法正常下载订阅链接中的配置文件

默认策略组: DIRECTREJECTPROXY

rule-providers

1
2
3
4
5
6
7
rule-providers:
<name>: # 规则集名称
type: http | file # 规则集文件类型:http(在线规则集) | file(本地文件)
behavior: # 规则集类型classical/ipcidr/domain
path: ./profiles/rules/<name>.yaml # 规则集存放路径
url: <url> # 规则集链接(若 type 为 http)
interval: 86400 # 规则集更新间隔(若 type 为 http)
  • <name>: 规则集名称,可以随意命名,但是不能重复
  • type: 规则集文件类型,可以是 http 或 file
  • behavior: 规则集行为,可以是 classical | ipcidr | domain (参考示例:Example of a rule-provider file)
  • path: 规则集存放路径
  • url: 规则集链接,只有当 type 为 http 时才需要填写
  • interval: 规则集更新间隔(如 86400 秒指每 10 天更新一次规则集),只有当 type 为 http 时才需要填写
注意

在这里我们使用 GitHub 上的 Clash-Rules

rules

使用上面的rule-provider引入的规则集,或者手动添加的规则,设置由哪个策略组进行访问。

白名单模式(推荐)

即没有命中规则的域名或 IP 都走代理。适用于线路稳定、快速、不缺流量的情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rules:
- RULE-SET,applications,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,DIRECT
- RULE-SET,google,DIRECT
- RULE-SET,proxy,PROXY
- RULE-SET,direct,DIRECT
- RULE-SET,lancidr,DIRECT
- RULE-SET,cncidr,DIRECT
- RULE-SET,telegramcidr,PROXY
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY

黑名单模式

即没有命中规则的域名或 IP 都不走代理。适用于线路不稳定、速度慢、流量有限的情况。

1
2
3
4
5
6
7
8
9
10
11
rules:
- RULE-SET,applications,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,tld-not-cn,PROXY
- RULE-SET,gfw,PROXY
- RULE-SET,greatfire,PROXY
- RULE-SET,telegramcidr,PROXY
- MATCH,DIRECT

配置文件示例

查看配置文件范例
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
mixed-port: 7890
allow-lan: false
mode: Rule
log-level: silent
external-controller: 127.0.0.1:60000

# 节点配置文件统一存放在 ./profiles/proxies/ 目录中
proxy-providers:
# 从链接导入的配置文件
foo:
type: http
path: ./profiles/proxies/foo.yaml
url: https://example-url
interval: 3600
filter: 'Hong Kong' # 筛选出含有该关键词的节点
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
# 从本地文件导入的配置文件
bar:
type: file
path: ./profiles/proxies/bar.yaml
health-check:
enable: true
interval: 600
url: http://www.gstatic.com/generate_204

proxy-groups:
- name: AUTO
type: url-test
interval: 3600
url: http://www.gstatic.com/generate_204
use:
- foo
- bar
- name: PROXY
type: select
use:
- foo
- bar
proxies:
- AUTO
- DIRECT

# clash-rules项目提供的规则集
# 规则文件统一存放在 ./profiles/rules/ 目录中
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./profiles/rules/reject.yaml
interval: 86400

icloud:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
path: ./profiles/rules/icloud.yaml
interval: 86400

apple:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
path: ./profiles/rules/apple.yaml
interval: 86400

google:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
path: ./profiles/rules/google.yaml
interval: 86400

proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./profiles/rules/proxy.yaml
interval: 86400

direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./profiles/rules/direct.yaml
interval: 86400

private:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
path: ./profiles/rules/private.yaml
interval: 86400

gfw:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
path: ./profiles/rules/gfw.yaml
interval: 86400

greatfire:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt"
path: ./profiles/rules/greatfire.yaml
interval: 86400

tld-not-cn:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt"
path: ./profiles/rules/tld-not-cn.yaml
interval: 86400

telegramcidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
path: ./profiles/rules/telegramcidr.yaml
interval: 86400

cncidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
path: ./profiles/rules/cncidr.yaml
interval: 86400

lancidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
path: ./profiles/rules/lancidr.yaml
interval: 86400

# 规则
rules:
- PROCESS-NAME,v2ray,DIRECT
- PROCESS-NAME,xray,DIRECT
- PROCESS-NAME,naive,DIRECT
- PROCESS-NAME,trojan,DIRECT
- PROCESS-NAME,trojan-go,DIRECT
- PROCESS-NAME,ss-local,DIRECT
- PROCESS-NAME,privoxy,DIRECT
- PROCESS-NAME,leaf,DIRECT
- PROCESS-NAME,v2ray.exe,DIRECT
- PROCESS-NAME,xray.exe,DIRECT
- PROCESS-NAME,naive.exe,DIRECT
- PROCESS-NAME,trojan.exe,DIRECT
- PROCESS-NAME,trojan-go.exe,DIRECT
- PROCESS-NAME,ss-local.exe,DIRECT
- PROCESS-NAME,privoxy.exe,DIRECT
- PROCESS-NAME,leaf.exe,DIRECT
- PROCESS-NAME,Surge,DIRECT
- PROCESS-NAME,Surge 2,DIRECT
- PROCESS-NAME,Surge 3,DIRECT
- PROCESS-NAME,Surge 4,DIRECT
- PROCESS-NAME,Surge%202,DIRECT
- PROCESS-NAME,Surge%203,DIRECT
- PROCESS-NAME,Surge%204,DIRECT
- PROCESS-NAME,Thunder,DIRECT
- PROCESS-NAME,DownloadService,DIRECT
- PROCESS-NAME,qBittorrent,DIRECT
- PROCESS-NAME,Transmission,DIRECT
- PROCESS-NAME,fdm,DIRECT
- PROCESS-NAME,aria2c,DIRECT
- PROCESS-NAME,Folx,DIRECT
- PROCESS-NAME,NetTransport,DIRECT
- PROCESS-NAME,uTorrent,DIRECT
- PROCESS-NAME,WebTorrent,DIRECT
- PROCESS-NAME,aria2c.exe,DIRECT
- PROCESS-NAME,BitComet.exe,DIRECT
- PROCESS-NAME,fdm.exe,DIRECT
- PROCESS-NAME,NetTransport.exe,DIRECT
- PROCESS-NAME,qbittorrent.exe,DIRECT
- PROCESS-NAME,Thunder.exe,DIRECT
- PROCESS-NAME,ThunderVIP.exe,DIRECT
- PROCESS-NAME,transmission-daemon.exe,DIRECT
- PROCESS-NAME,transmission-qt.exe,DIRECT
- PROCESS-NAME,uTorrent.exe,DIRECT
- PROCESS-NAME,WebTorrent.exe,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,DIRECT
- RULE-SET,google,DIRECT
- RULE-SET,proxy,PROXY
- RULE-SET,direct,DIRECT
- RULE-SET,telegramcidr,PROXY
- GEOIP,,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY

在 proxy-groups 组中我添加了一个名为 AUTO 的代理组,用于为 PROXY 组自动选择代理节点,这样可以避免首次访问需要代理的网站偶尔被直连的问题,且能实现 PROXY 组可以手动切换节点,也可以自动选择节点。

注意事项

  • 由于需要下载的文件较多,因此第一次使用可能会因为超时而报错失败,多重试几次就好了。
  • 对于 base64 编码的配置文件,无法直接使用 proxy-providers 导入,需要使用 Clash 链接转换工具将其转换后再导入。