背景
之前一直在用的机场在一次更新之后多了几个节点,节点名字是用来传递一些公告信息防止失联的,节点本身是用不了的,为了不影响正常使用,所以需要采用一些手段来把这些节点过滤掉。
简要说明clash配置文件的结构
打开yaml配置文件,可以看见结构大致如下所示:
第46行 proxies
列出来了所有的节点。
第322行 proxy-groups
列出来了所有的策略组,从图中可以看出,一共有4个策略组,其中第4个 Auto
是我一般用的。
第363行 可以看到Auto
策略组中含有哪些节点,前三行就是三个无效的节点,如果把这三个节点从这个策略组中删掉,那之后再使用Auto
策略组就不会选中这三个无效节点了。
方法及原理
根据Clash for Windows(简称cfw)官方文档
0.11.10版本更新后,支持使用 YAML 对下载后配置文件进行简单预处理
参考官方文档的例子,首先进入parsers编辑器
1、进入 Settings 界面
2、滚动至 Profiles 栏
3、点击 Parsers 右边 Edit 打开编辑器
或者直接在Profiles 界面中找一个配置文件然后点右键找到parsers项(必须要是根据URL下载的yaml配置文件,不能是直接拖进来的yaml文件)
编辑器内容结构如下:
1 | parsers: |
proxy-groups.3
表示定位到 proxy-groups
里的 Auto
组(由于是从0开始计数的,所以3就代表第四项)。
同样道理proxy-groups.3.proxies.0
就代表定位到Auto
组的proxies
的第一项,也就是第一个无效节点。
最后的-
表示删掉proxies
的第一个节点,重复三次,就可以删掉最开始的三个节点了。
上面的方法简单直接,但是只适用于无效节点在节点列表的开头这种情况,也可以采用正则表达式的写法来匹配,如下所示:
1 | parsers: |
根据官方文档:
v0.13.7 版本更新后,支持 3 个内置值用于设置策略组节点,分别是[]proxyNames,[]groupNames和[]shuffledProxyNames,并支持使用正则过滤其中节点
关于正则表达式^[^\d].*
(以下由ChatGPT生成)
1 | 正则表达式^[^\d].* 表示以任何非数字字符开头,后面跟着任何数量的任意字符。 |
所以刚才的写法就是向策略组添加所有节点,并按正则表达式^[^\d].*
的模式匹配,这样就过滤掉了以数字开头的三个无效节点。
同样道理,也可以参考官方文档的写法,利用parsers对配置文件进行其他预处理,比如修改规则,修改节点等。