clash 预处理配置文件详解

机场的节点信息更新很频繁,所以需要时常更新节点信息,并且有自己定制规则和代理组的需求,所以就找到了这个 clash 配置文件预处理的 api ,由 @kr328 提供(暂且不讨论安全性)。

大致结构

  1. 预处理器配置

  2. clash 基础配置

  3. 代理组匹配

  4. 规则编辑合并

配置文件和详解

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
199
200
201
202
203
204
205
# 针对预处理器的配置 
preprocessor:
version: 1 # 目标预处理器版本号 目前仅能使用 1
clash-general: # clash 的基础配置,这里的内容不会被处理
port: 7890 # http 代理端口
socks-port: 7891 # socks5 端口

# redir-port: 7892 # [Clash 支持使用 redir 参数搭配 iptables 进行透明代理设置](https://github.com/Dreamacro/clash/issues/158)

allow-lan: true # 是否允许来自局域网的连接

mode: Rule # 代理模式,有 global / direct

log-level: info # 日志级别 info / warning / error / debug / silent

external-controller: '127.0.0.1:9090' # 大致是给 dash board 用的 api

# external-ui: folder
# you can put the static web resource (such as clash-dashboard) to a directory, and clash would serve in `${API}/ui`(可以将 web 控制台的静态放在某个目录,然后就可以通过 ${api}/ui 访问面板
# input is a relative path to the configuration directory or an absolute path (注意是绝对路径

# secret: ""
# api 访问密钥

## dns:
# enable: true # set true to enable dns (default is false)
# ipv6: false # default is false
# listen: 0.0.0.0:53
# enhanced-mode: redir-host # or fake-ip
# # fake-ip-range: 198.18.0.1/16 # if you don't know what it is, don't change it
# nameserver:
# - 114.114.114.114
# - tls://dns.rubyfish.cn:853 # dns over tls
# - https://1.1.1.1/dns-query # dns over https
# fallback: # concurrent request with nameserver, fallback used when GEOIP country isn't CN
# - tcp://1.1.1.1
dns:
enable: null
listen: 0.0.0.0:53
enhanced-mode: fake-ip
nameserver:
- 58.20.127.170
- 223.5.5.5:853
- 119.29.29.29:5399
- dns.rubyfish.cn:853
- 1.1.1.1:853
fallback:
- 1.1.1.1:853
- 8.8.8.8:853
- 12.159.2.159:853
- 208.67.222.222:443
- 9.9.9.9:853
- dns.rubyfish.cn:853
# Clash for Windows
cfw-bypass: # 针对 clash for windows 的配置,可以设置为系统代理时绕过某个域名 /ip,如图,支持通配符,打开系统代理后此内容会应用到系统代理的排除名单
- qq.com
- music.163.com
- "*.music.126.net"
- localhost
- 127.*
- 10.*
- 172.16.*
- 172.17.*
- 172.18.*
- 172.19.*
- 172.20.*
- 172.21.*
- 172.22.*
- 172.23.*
- 172.24.*
- 172.25.*
- 172.26.*
- 172.27.*
- 172.28.*
- 172.29.*
- 172.30.*
- 172.31.*
- 192.168.*
-
cfw-latency-timeout: 5000

proxy-sources: # 填上你的订阅链接,这里用了 surge2clash 的 api
- type: url
url: "https://tgbot.lbyczf.com/surge2clash?url=subscription_url" # 代理订阅链接,使用了 @Fndroid 的 surge2clash 的 api ,因为机场提供的 clash 托管未添加 obfs 支持
Proxy-group-dispatch:
# 代理组设置 简单食用改掉汉字即可,proxy-filters 下是正则匹配代理名 ,`|` 是 * 或 * 的关系,如要深入,请了解 正则匹配
# 注意,黑名单默认参数有问题,所以一定要同时配置。
- name: HK
proxies-filters:
white-regex: ".*(港 | 新加坡 | 澳门).*"
black-regex: ''
type: select
- name: TW
proxies-filters:
white-regex: ".*(台湾).*"
black-regex: ''
type: select
- name: US
proxies-filters:
white-regex: ".*(美).*"
black-regex: ''
type: select
- name: JP
proxies-filters:
white-regex: ".*(日).*"
black-regex: ''
type: select
- name: ShangHai
proxies-filters:
white-regex: ".*(上海 | 深圳 | 北京).*"
black-regex: ''
type: select
- name: EU
proxies-filters:
white-regex: ".*(俄罗斯 | 伦敦 | 德国 | 悉尼 | 荷兰).*"
black-regex: ''
type: select
- name: AsiaOther
proxies-filters:
white-regex: ".*(菲律宾 | 韩 | 新加坡).*"
black-regex: ''
type: select
- name: load-balance
type: load-balance
proxies-filters:
white-regex: ".*(港 | 新加坡 | 澳门).*"
black-regex: ''
url: "http://www.gstatic.com/generate_204"
interval: 300
- name: PROXY
type: select
flat-proxies: # flat-proxy 下的条目也不会处理,注意缩进
- HK
- TW
- JP
- US
- EU
- AsiaOther
- DIRECT
- load-balance
_index: 4
- name: Final
type: select
flat-proxies:
- PROXY
- US
- HK
- TW
- JP
- DIRECT
- load-balance
- name: ForeignMedia
type: select
flat-proxies:
- TW
- HK
- AsiaOther
- EU
- DIRECT
- PROXY
- load-balance
- name: DomesticMedia
type: select
flat-proxies:
- HK
- TW
- EU
- AsiaOther
- DIRECT
- PROXY
- load-balance
_index: 4
- name: Hijacking
type: select
flat-proxies:
- DIRECT
- REJECT
- name: pix
type: select
flat-proxies:
- JP
- US
- HK
- TW
- PROXY
rule-sets: # 填写下载代理规则的 url (只会应用 rull )
- name: pro
type: url # 只支持 url
url: 'https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/Pro.yaml'
target-map:
- 'Apple,PROXY' # 将下载下来的规则的代理组名称(前者)替换为后者,(便于自定义吧)

rule: # 在这里填写自定义的规则,以及下载下来的规则应该放在哪里(规则是从前到后一次匹配)
- 'DOMAIN-SUFFIX,img-sketch.pximg.net,pix'
- 'DOMAIN-SUFFIX,s.pximg.net,pix'
- 'DOMAIN-SUFFIX,booth.pximg.net,pix'
- 'DOMAIN-SUFFIX,pixiv.pximg.net,pix'
- 'DOMAIN-SUFFIX,api.booth.pm,pix'
- 'DOMAIN-SUFFIX,i.pximg.net,pix'
- 'DOMAIN-SUFFIX,www.pixiv.net,pix'
- 'DOMAIN-SUFFIX,foxleech.com,PROXY'
- 'DOMAIN-SUFFIX,fonts.gstatic.com,PROXY'
- 'DOMAIN-SUFFIX,play.google.com,PROXY'
- 'DOMAIN-SUFFIX,chinaz.com,ShangHai'
- 'RULE-SET,pro'