Clash for Windows 配置文件预处理(parser)

MacOS 也可以下载 Clash for Windows, ClashX 没有这个功能
Mac 下载链接 https://github.com/Fndroid/clash_for_windows_pkg/releases

为什么需要使用配置文件预处理

买的节点一般会自动更新配置规则,如果直接在配置里修改,更新后会被远程数据覆盖,自己添加的规则就没有了。所以需要一个与订阅规则独立互不影响的配置。

配置文件预处理添加入口

1. 设置 - 配置

2. 配置 - 右键

自定义规则的书写方式

目前 Clash 支持的规则类型如下:

  • DOMAIN-SUFFIX:域名后缀匹配
  • DOMAIN:域名匹配
  • DOMAIN-KEYWORD:域名关键字匹配
  • IP-CIDR:IP 段匹配
  • SRC-IP-CIDR:源 IP 段匹配
  • GEOIP:GEOIP 数据库(国家代码)匹配
  • DST-PORT:目标端口匹配
  • SRC-PORT:源端口匹配
  • PROCESS-NAME:源进程名匹配
  • RULE-SET:Rule Provider 规则匹配
  • MATCH:全匹配

示例:

 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
parsers: # array
  - url: https://subcon.dlj.tf/*********/*****
      yaml:
        prepend-rules:  # 把规则添加到最前面
          - DOMAIN-SUFFIX,checkip.synology.com,DIRECT  # DIRECT表示不走代理,即不通过代理节点直接连接。GLOBAL则是走全局代理节点。REJECT则表示禁止连接,使用REJECT后,将会屏蔽对应网站。
      code: |
        module.exports.parse = async (raw, { axios, yaml, notify, console }, 
        { name, url, interval, selected }) => {
        const obj = yaml.parse(raw)

        // 删除特定规则
        const ruleToDelete = [
          "DOMAIN-SUFFIX,weibo.com,🎯 全球直连",
          "GEOIP,CN,🎯 全球直连"
        ];
        obj.rules = obj.rules.filter(rule => !ruleToDelete.includes(rule));

        // 添加新的 MATCH 项
        const newMatchRule = [
          "DOMAIN-SUFFIX,weibo.com,🌍 国外媒体",
          "DOMAIN-SUFFIX,m.weibo.com,🌍 国外媒体",
          "DOMAIN-SUFFIX,share.api.weibo.cn,🌍 国外媒体"
        ];
        obj.rules.unshift(...newMatchRule);
        return yaml.stringify(obj)        
      }

参考链接