clash for windows中配置文件预处理parser的使用

发布于 2023-08-17  386 次阅读


最近在使用cfw的时候一直有个痛点就是每次更新节点都会覆盖添加的自定义规则和节点分组,之前采用的方案是用beyond compare 4每次更新完之后对比,再修改到自定义配置文件里,很麻烦。今天学习了下parser功能使用,非常完美解决了这个问题。

官方文档

配置文件预处理 | Clash for Windows (lbyczf.com)

具体的使用方法可以参照官方文档的说明简单了解

示例

根据我的个人需求,我需要做三个操作:

  • 去除某个代理组中所有非美国的节点
  • 添加新的代理组
  • 添加新的规则

分别使用js和yaml的方式实现,代码如下所示

parsers: # array

    - url: https://test

      code: |

        module.exports.parse = async (raw, { axios, yaml, notify, console }, { name, url, interval, selected }) => {

          const obj = yaml.parse(raw)

          for (const o of obj['proxy-groups']) {

            if (o.name === 'Proxy') {

              o.proxies = o.proxies.filter(item => item.includes('美国'))

            }

          }

          return yaml.stringify(obj)

        }

      yaml:

        prepend-proxy-groups:

          - name: rProxy

            type: relay

            proxies:

              - US1 美国

              - self

        prepend-rules:

            - DOMAIN-KEYWORD,azure,rProxy

            - DOMAIN-KEYWORD,docker,rProxy

添加之后再次更新就可以看到配置文件已经被自动修改,而不需要每次手动比对和添加了,很方便