需求
机场通常会提供一个通用的配置,对于普通的用户来说一般没什么问题,但如果有特别的需求还是需要自己DIY,甚至彻底抛弃机场的配置,完全自主配置。
一般有以下几种解决方案:
1、surgio
在本机上使用,一个依赖 nodejs 的工具,在本机操作,根据模板生成出规则文件,自己再将规则文件上传至云服务器。需要懂一点 JavaScript 编程,文档还算写的比较详细。
2、subconverter
部署在服务器上,通过特定的URL订阅,在服务器上完成转换工作,完全靠配置文件,不需要懂编程,但是文档几乎是三言两语,很多配置细节不清不楚。
3、Parsers
Clash 自带的配置文件预处理功能,可惜的是它只在本机工作,当你有多个客户端需要设置时就不用考虑这个方案了。
4、Proxy Providers & Rule Providers
Clash 提供了 Proxy Providers 和 Rule Providers 功能。
看名字也能知道,一个提供代理服务器信息,一个提供规则信息。有了它俩就很容易配置自己的规则文件,也是本文采用的方案。
解决方案
本文采用 Clash 内置的Proxy Providers
和Rule Providers
功能来配置,先直接看一个简单的配置文件
1 | port: 7890 |
这个配置文件相比原来老的方式,它没有了proxies
字段,改由proxy-providers
来提供代理服务器信息。
代理服务器供应者
1 | proxy-providers: |
此配置文件中定义了一个名为mysub
的供应者,字段type
表示用http
方式获取,url
表示机场的订阅地址,filter
意味着筛选出名称中带有指定字符的节点。
health-check
表示启用自动测速,interval
表示测速周期,单位为秒。url
表示测速地址。
clash 会将机场的配置文件下载至path
所指示的位置。
自己的分组
这个和以前没什么变化,只是改用use
来指定一个供应者
1 | proxy-groups: |
这里定义了一个名为Auto
的分组,type
为url-test
意味着可以定期测速节点并切换至最快的节点。use
指示使用哪个供应者提供的服务器节点,名字要和前面对应上。
配置规则供应者
rule-providers
和proxy-providers
的写法非常相似,type
、url
、path
相信你也知道是做什么的了。主要说下behavior
,它的值决定了规则文件是采用何种语法解析,一共有3种
- classical
1
2
3
4payload:
- '.blogger.com'
- '*.*.microsoft.com'
- 'books.itunes.apple.com' - ipcidr
1
2
3payload:
- '192.168.1.0/24'
- '10.0.0.0.1/32' - classical由于规则也外置了,所以不需要像以前那样在配置文件中硬编码规则,比如
1
2
3
4
5
6
7
8
9
10payload:
- DOMAIN-SUFFIX,google.com
- DOMAIN-KEYWORD,google
- DOMAIN,ad.com
- SRC-IP-CIDR,192.168.1.201/32
- IP-CIDR,127.0.0.0/8
- GEOIP,CN
- DST-PORT,80
- SRC-PORT,7777
# MATCH is not necessary here而应该用1
2rules:
- DOMAIN-SUFFIX,google.com,AutoRULE-SET
指示一个规则供应者这里使用了开源的规则列表 clash-rules。1
2
3rules:
- RULE-SET,Custom,Auto
- RULE-SET,Proxy,Auto
部署配置文件
有服务器的可以放服务器,没有的可以考虑放在 github 这样的托管平台,不过要注意保护隐私,避免配置文件泄漏。
相关阅读
clash更新订阅时保留自己的规则
Clash配置rule-providers实现自由搭配及自动更新规则功能
Clash for Windows 中文手册
clash-rules