Clash X Pro版为不同代理配置不同规则

接上回让vpn访问不同域名时使用不同的代理(clashX),这里有个很大的问题就是,一旦订阅自动更新(实际就是把订阅链接下载下来覆盖当前的yaml配置文件),会把我们之前手动写好的规则和本地代理都覆盖掉。

因此这个方法已经不适用,于是我在想,能不能只更新代理,不更新规则呢?
其实clashX或者clash for windows是有这个功能的,只不过需要现在premium版本
点我下载clashX premium(mac版)
或者点官网下载

具体原理就是,配置文件始终使用一套然后让clashX将订阅或本地配置的代理部分复制到当前代理中,这样无论订阅怎么更新,我们始终使用的是订阅A+本地代理B+配置中的规则,这样就不会出现更新时覆盖的情况了。

那么如何配置呢?

新建本地代理文件

在yaml配置的目录新建一个yaml文件,主要用来存放固定的代理,如公司内部使用的代理。
可以起名叫local.yaml
代码如下:

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
port: 7892
socks-port: 7893
allow-lan: false
mode: Rule
log-level: silent
external-controller: 127.0.0.1:9090
secret: ""
dns:
enable: true
ipv6: false
nameserver:
- https://dns.rubyfish.cn/dns-query
- https://223.5.5.5/dns-query
- https://dns.pub/dns-query
fallback:
- https://1.0.0.1/dns-query
- https://public.dns.iij.jp/dns-query
- https://dns.twnic.tw/dns-query
fallback-filter:
geoip: true
ipcidr:
- 240.0.0.0/4
- 0.0.0.0/32
- 127.0.0.1/32
domain:
- +.google.com
- +.facebook.com
- +.youtube.com
- +.xn--ngstr-lra8j.com
- +.google.cn
- +.googleapis.cn
- +.gvt1.com
proxies:
-
name: 代理名称A
type: ssr
server: vpn的IP
port: vpn的端口
password: vpn的密码
cipher: aes-256-cfb # 加密方式
obfs: plain # 混淆模式
protocol: origin #协议
tls: true # https
skip-cert-verify: true

然后在修改默认的config.yaml(最终使用的就是默认配置)
在默认配置中增加一个proxies,这个是为了能让规则使用的代理
1
2
3
4
5
6
7
8
9
10
11
12
proxies:
-
name: 代理名称B(注意这里的名称可以和local中的一样,但是如果设置的不一样,下面的规则要填写这个名称才能被识别到)
type: ssr
server: vpn的IP
port: vpn的端口
password: vpn的密码
cipher: aes-256-cfb # 加密方式
obfs: plain # 混淆模式
protocol: origin #协议
tls: true # https
skip-cert-verify: true

在新增一个proxy-providersproxy-groups,这个用法的核心就在这里,将订阅的代理和本地的都放在里,用type区分,这样默认配置就会去复制相应path中的proxies部分了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
proxy-providers:
dingyue: # provider的名称,后期会用到
type: http
path: ./dingyue.yaml # 保存在本地文件的名字,可以随便取
url: https://s.trojanflare.com/clashx/e6e9ac08-5be5-4342-8d0e-4c1f2814459d
interval: 36000 # 每36000秒更新一次订阅
health-check:
enable: true # 是否自动进行latency-test
url: http://www.gstatic.com/generate_204
interval: 3600

local:
type: file
path: ./local.yaml
health-check:
enable: true
interval: 36000
url: http://www.gstatic.com/generate_204
proxy-groups:
- name: Proxies
type: select
use: # 注意,这里是use而不是普通的proxies
- dingyue # 这里就是上面proxy-providers中定义的名称
- local # 这里就是上面proxy-providers中定义的名称

之后在rule里填写相应规则即可
1
2
3
rules: 
- DOMAIN-SUFFIX,公司名称,代理名称B
- DOMAIN-SUFFIX,公司名称,代理名称B

这里proxy-providers的用法可以去看官网文档