#需求
机场通常会提供一个通用的配置,对于普通的用户来说一般没什么问题,但如果有特别的需求还是需要自己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 | payload: |
- ipcidr
1 | payload: |
- classical
1 | payload: |
由于规则也外置了,所以不需要像以前那样在配置文件中硬编码规则,比如
1 | rules: |
而应该用RULE-SET指示一个规则供应者
1 | rules: |
这里使用了开源的规则列表 clash-rules。
#部署配置文件
有服务器的可以放服务器,没有的可以考虑放在 github 这样的托管平台,不过要注意保护隐私,避免配置文件泄漏。
#相关阅读
clash更新订阅时保留自己的规则
Clash配置rule-providers实现自由搭配及自动更新规则功能
Clash for Windows 中文手册
clash-rules