- A+
Clash可以说是当下最好用的代理软件之一了,功能丰富,界面清爽,简单易用。但Clash订阅规则也不可能对所有人都达到完美程度,总有需要自定义的时候。熟悉Clash的同学应该知道Clash提供了自定义新规则的功能界面,对于小白来说十分友好,但是这种方式有一个致命的缺陷,就是每一次更新订阅节点,自定义规则就会被覆盖,造成规则丢失。本文将介绍一种使用Clash的Parser功能,通过书写javascript代码,对订阅规则进行预处理的方式添加自定义规则,这种方式能够避免订阅更新造成的规则丢失。
方法详细介绍
使用该方法需要Clash版本高于0.11.10,如果低于该版本,请先上github下载安装包进行更新。
- 打开
Setting
(设置),找到Profiles
(配置文件下)的Parsers
。 - 点击右侧的
Edit
,打开编辑界面。 - 输入以下代码(以下为示例代码,需要根据自身情况进行改动):
- url: https://订阅连接地址/*********/*****
yaml:
prepend-rules:
- DOMAIN-SUFFIX,checkip.synology.com,DIRECT
其中需要改动的有 url 和 prepend-rules 。
- url:改成本人的订阅地址,如果不知道,可以直接在
Profiles
下点击当前订阅的settings
,复制其中的URL即可。 - prepen-rules:此处添加你的自定义规则,每一条占一行,按照(规则类型,值,代理策略)排列,使用逗号分隔。注意的是,每一行都需要以一个短横线加空格的开头,同时 注意对齐。具体的自定义规则如何书写在本文的后半部分有说明。
- 编辑完成后,点击右下角保存。到
Profiles
里更新订阅,这样就可以将新的规则添加上了。可以点击edit rules
查看规则进行验证。之后打开相应网页看是否生效。
自定义规则的书写方式
目前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:全匹配
其中我们使用最多的就是DOMAIN-SUFFIX
域名后缀了。其余规则类型根据说明大家也可以自行探索。
Note:
- 使用
PROCESS-NAME
需要 Clash for Windows v0.11.5 及以上版本;规则需要匹配完整的进程名(包括可执行文件后缀)方可生效;该规则不适用于TAP流量。 - 用户界面暂不支持添加
RULE-SET
规则,请手动编辑配置文件。 MATCH
需要位于规则列表末尾。
代理策略的选择
一般情况我们使用DIRECT
,GLOBAL
,REJECT
。DIRECT
表示不走代理,即不通过代理节点直接连接。GLOBAL
则是走全局代理节点。REJECT
则表示禁止连接,使用REJECT
后,将会屏蔽对应网站。
有一些订阅还提供了很多自制的策略,可以自行尝试。使用时直接输入名字即可,中文也是支持的哦。有人可能会问,前面有奇奇怪怪的符号怎么办?
点击General
,点击Home Directory
下的Open Folder
,打开配置文件夹,点击Profiles
文件夹,找到对应的yml
文件,用记事本
等软件打开,直接复制粘贴就可以啦。
原理介绍
为什么这种方法能够防止覆盖呢?原因是Parser功能是配置文件进行预处理,因此,每一次更新都会执行一次Parser,因此自定义规则会永远存在,只要你不删除Parser。