Clash for Windows向一个策略组中添加另一个策略组并防止更新覆盖的懒狗方法

发布于 2022-07-31  405 次阅读


本文中使用的CFW版本为0.19.25  (当然低版本也能用

使用Clash_Chinese_Patch进行汉化

 

本站仅使用CloudFlare作为CDN,推荐使用外网环境访问。

一.前言

笔者所用机场的自带策略分组实在反人类,所以无奈使用 订阅转换 将原始订阅链接转化为远程配置为 ACL4SSR全分组 的Clash订阅,新订阅真不戳但是在使用过程中还是遇到了问题

经过搜索引擎及数个论坛社区查找,没有找到CFW中能在一个策略组中添加另一个策略组并防止配置文件更新覆盖,不是很繁琐且不需要持续维护的方法(也有可能是我笨没发现ψ(._. )>),总之经过反复寻找尝试,笔者研究了四种方法,均在下方列出。

笔者对cfw及相关知识了解浅薄,以下内容可能存在描述不当,内容有误等情况。

 

笔者此次使用的ACL4SSR全分组是一种套娃的结构,首先将所有节点按地区归类为 香港、日本等等,地区策略组被其他策略组引用,而最上级策略组被规则引用

部分地区分组截图
部分地区分组截图

 

其他策略组(比如奈飞)则会包含这几个地区分组

🎥 奈飞视频策略组截图
🎥 奈飞视频策略组截图

 

这种策略组安排笔者个人很喜欢,但是部分分组配置并不完善

比如 📺 哔哩哔哩 分组

📺 哔哩哔哩策略组截图
📺 哔哩哔哩策略组截图

 

此策略组本意应该是,观看B站内容时只会需要大陆地区直连,或是使用港澳台区,所以没有提供其他的选择。

如果笔者想要使用其他地区的节点,则只能修改  🎯 全球直连 到目标节点,或者切换cfw为全局模式,无论哪种方法都会对其他连接造成影响。所以需要研究如何将 🚀 节点选择 加入到📺 哔哩哔哩策略组中。


二.修改策略组

此处列出笔者尝试了的四种方法,推荐使用3,4

1.编辑节点配置文件

右键配置文件选择“编辑”或“从外部编辑”

在 proxy-groups 中找到 📺 哔哩哔哩 ,并在 proxies 中添加

      - 🚀 节点选择
      - 🚀 手动切换
点击右下角保存,即可在 📺 哔哩哔哩 中找到添加的两个策略组。
但是这种方法存在极大的问题,一旦更新此配置(无论手动或自动),则我们直接在配置文件中做的修改就会被更新后的配置所覆盖
所以除非基本不更新订阅,不然不建议采用这种方法。

2.自行编写策略并托管在线上

在常用规则集之上再进行修改,并存放在Github等平台上

常用规则集:

教程链接 https://yattazen.com/tutorial/clash-custom-config.html

 

3.使用预处理配置

使用 YAML 对配置文件进行预处理需要0.11.10或更高版本

 

自行编写策略并托管在线上不符合懒狗方法的定位,使用预处理配置显然是一种简便的选择

预处理配置还可以定义分流规则,同样不会被更新覆盖,这也是很刚需的功能,此处一并写出

进入设置-配置下的预处理配置中

(1).自定义分流规则

在预处理配置中添加如下代码(并将部分代码替换为自己需要的,注意换行和间隔)


parsers: # array
  - url: https://xxxx
    yaml:
     prepend-rules:
        - DOMAIN-KEYWORD,pixiv,🚀 节点选择
        - DOMAIN-SUFFIX,qq.com,🎯 全球直连

其中:

https://xxxx  为自己的订阅链接

DOMAIN-SUFFIX 为域名后缀匹配

github.com  为匹配的域名

🚀 节点选择 为目标代理策略

 

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:全匹配

使用PROCESS-NAME需要0.11.5 及以上版本;规则需要匹配完整的进程名(包括可执行文件后缀)方可生效;该规则不适用于 TAP 流量

确认无误后点击保存并更新订阅即可

(2).添加自定义策略组

根据cfw文档 https://docs.cfw.lbyczf.com/contents/parser.html  中Commands 使用方法

例子

commands:
- dns.enable=false # 命令1
- proxy-groups.0.proxies.2+DIRECT # 命令2

每个命令可以被分为三个部分,分别是:定位+操作+设定值

命令 1 中,定位是dns.enable,操作是=,设定值是false

命令 2 中,定位是proxy-groups.0.proxies.2,操作是+,设定值是DIRECT

定位

定位中每个层级以.分割,数组类型的定位下标由 0 开始计算,命令 2 中proxy-groups.0即表示定位至第 1 个策略组,.proxies表示访问第一个策略组的 proxies 属性,.proxies.2表示 proxies 属性的第 3 个位置

如果不想用序号定位,也可以使用name值定位,proxies以及proxy-groups中的每个项目都会有name属性。例如在proxies中已经定义了名为debug的节点,那么修改其udp参数的定位即为proxies.(debug).udp,名称两边的()是保证识别,如果节点名不包括+.=这几个符号,也可以省略不写

操作

目前支持三种操作:

  • =:覆盖
  • +:插入
  • -:删除

命令 1 中,=表示将dnsenable的值覆盖为false

命令 2 中,+表示在定位的策略组中的proxies数组中添加一个名为DIRECT的值,原本其他值被向后移动 1 位。如果此处改成=,则会覆盖原来第一个值

 

参考命令2,可以得到

- proxy-groups.📺 哔哩哔哩.proxies.0+🚀 节点选择

功能是:将🚀 节点选择添加到📺 哔哩哔哩策略组的第一位

请按照实际情况修改并依照文档格式添加入预处理配置中

确认无误后点击保存并更新订阅即可

 

4.使用Diff 处理

Diff 方式处理是0.18.4版本更新后的新功能,可以在允许在不使用配置文件预处理的情况下,保留对配置文件的修改并应用到下次更新,Diff 处理会在预处理之后进行

cfw文档链接为 https://docs.cfw.lbyczf.com/contents/diff.html

 

右键配置文件选择 合并,在弹出窗口中选择 初始化配置文件

 

在右侧的编辑器中

proxy-groups 中找到 📺 哔哩哔哩 ,并在 proxies 中添加

      - 🚀 节点选择
      - 🚀 手动切换

点击右下角保存并更新订阅,即可在 📺 哔哩哔哩 中找到我们添加的两个策略组。

需要说明的是:根据cfw文档,如果远端配置文件发生更新,并且与本地修改产生冲突,将需要手动进行合并

冲突的格式非常简单:

<<<<<<<
本地修改
=======
远端修改
>>>>>>>

根据自己的需求,把多余的地方删除即可,包括<<<<<<<、=======和>>>>>>>。

 

三.私货

你学废了吗?(

赶紧给你的bilibili.tv挂上东南亚节点,速看莉可丽丝!

没有人能拒绝美少女JK打枪

 


和光同尘 与时舒卷