Clash 使用 Parser 添加自定义规则并防止更新覆盖 - 觉今是而昨非 - Blog Clash 可以说是当下最好用的代理软件之一了,功能丰富,界面清爽,简单易用。但 Clash 订阅规则也不可能对所有人都达到完美程度,总有需要自定义的时候。比如本人用到群晖的 DDNS,外部地址获取需要...

Clash 可以说是当下最好用的代理软件之一了,功能丰富,界面清爽,简单易用。但 Clash 订阅规则也不可能对所有人都达到完美程度,总有需要自定义的时候。比如本人用到群晖的 DDNS,外部地址获取需要访问 checkip.synology.com,但这个地址会自动识别到代理规则中,其中的不便之处不言而喻。熟悉 Clash 的同学应该知道 Clash 提供了自定义新规则的功能界面,对于小白来说十分友好,但是这种方式有一个致命的缺陷,就是每一次更新订阅节点,自定义规则就会被覆盖,造成规则丢失。本文将介绍一种使用 Clash 的 Parser 功能,通过书写 javascript 代码,对订阅规则进行预处理的方式添加自定义规则,这种方式能够避免订阅更新造成的规则丢失。

方法详细介绍

Note: 使用该方法需要 Clash 版本高于 0.11.10,如果低于该版本,请先上 github 下载安装包进行更新。

  1. 打开Setting(设置),找到Profiles(配置文件下)的Parsers
  2. 点击右侧的Edit,打开编辑界面。
  3. 输入以下代码(以下为示例代码,需要根据自身情况进行改动):
  - url: https://subcon.dlj.tf/*********/*****
    yaml:
      prepend-rules:
        - DOMAIN-SUFFIX,checkip.synology.com,DIRECT

其中需要改动的有 urlprepend-rules

  1. 编辑完成后,点击右下角保存。到Profiles里更新订阅,这样就可以将新的规则添加上了。可以点击edit rules查看规则进行验证。之后打开相应网页看是否生效。

自定义规则的书写方式

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

其中我们使用最多的就是DOMAIN-SUFFIX域名后缀了。其余规则类型根据说明大家也可以自行探索。

Note:

代理策略的选择

一般情况我们使用DIRECTGLOBALREJECTDIRECT表示不走代理,即不通过代理节点直接连接。GLOBAL则是走全局代理节点。REJECT则表示禁止连接,使用REJECT后,将会屏蔽对应网站。

有一些订阅还提供了很多自制的策略,可以自行尝试。使用时直接输入名字即可,中文也是支持的哦。有人可能会问,前面有奇奇怪怪的符号怎么办?

点击General,点击Home Directory下的Open Folder,打开配置文件夹,点击Profiles文件夹,找到对应的yml文件,用记事本等软件打开,直接复制粘贴就可以啦。

原理介绍

为什么这种方法能够防止覆盖呢?原因是 Parser 功能是配置文件进行预处理,因此,每一次更新都会执行一次 Parser,因此自定义规则会永远存在,只要你不删除 Parser。

拓展

Parser 是一个非常强大的功能,可以通过这个功能对订阅文件进行许多预处理,达到许多非常丰富的效果。但是这个功能对于小白来说并不太友好,有兴趣的读者可以查看 Clash 的文档进行学习。祝大家都能愉快的工作和学习~

传送门: Clash 文档

方法详细介绍自定义规则的书写方式代理策略的选择原理介绍拓展 全文完
本文由 简悦 SimpRead 转码,用以提升阅读体验,原文地址