Clash 规则的写法
这篇博文是针对 CFW 写的。
最近尝试从 v2 转向使用 Clash。基于一个简单的需求:用 Spotify 听专的时候用代理,用 AM 听专的时候直连,我参考了以下完成了我的规则:
- CFW 官网的说明;
- github 上别人提供的规则;
- 订阅提供的简陋规则。
首先要确认订阅提供的规则是否是使用 YAML 完成,因为在完成规则的过程中,我在某个 issue 下发现可能会因为订阅提供的规则不是用 YAML 完成,而我是用 YAML 写的,最后可能导致配置无效,以及可能导致 CLash 核心无法正常运作。倘若这个最坏的情况已经发生,其实处理起来并不麻烦:
- 在 CFW 中找到 Settings - Parsers,将原先你新增的所有行都删除或注释,仅剩下第一行
parsers:
(不剩下也不影响); - 删除 ~/.config/clash/ 目录下的 config.yaml、Country.mmdb 两个文件;
- 重新打开 Clash。
~/.config/clash/ 目录存放的是 Clash 的配置文件。启用 Clash 主要的两个文件是 config.yaml
和 profiles/xxxx.yaml
。
config.yaml
:主要存在字段为mixed-port
、allow-lan
、log-level
,它们与 CFW 主页配置相对应;profiles/xxxx.yaml
:命名由 Clash 控制,命名方法是使用时间戳,文件里写的是订阅推送的地址和部分规则。主要存在字段为proxies
、proxy-groups
、rules
。proxies
数组是订阅推送的服务器信息;proxy-groups
数组重新按组整理了proxies
中的服务器,并显示在 GFW 应用的 Proxies 页面中,数组成员的name
待会儿配置的过程中会用到;rules
数组存放的就是规则集,通常订阅的推送中存放的比较简陋,所以才需要下面的rule-providers
;rule-providers
数组中的成员可以通过网络下载 YAML 文件,存放在指定的路径下并读取,然后添加在rules
数组的前面(append-rules)、后面(prepend-rules)。
配置的主要完成工作是在 Settings - Profiles - Parsers 这儿完成。首次点击 Parsers 弹出来的 CFW 自带的编辑器中,仅仅只有一行:
parsers: # array
配置工作也就从这里开始。
YAML 的语法非常简单,不必阅读 YAML 的语法教程或者对其他资料序列化语言有过编写经历,看一眼别人写的成品其实就能马上理解如何更改和书写。经过简单的一番配置后,大致如下:
parsers:
- url: 订阅链接
yaml:
prepend-rules:
- DOMAIN-SUFFIX,cn.bing.com,DIRECT
- DOMAIN-SUFFIX,mirrors.ustc.edu.cn,DIRECT
- DOMAIN-SUFFIX,mirrors.tuna.tsinghua.edu.cn,DIRECT
- PROCESS-NAME,iTunes,DIRECT
- MATCH,proxy-groups->name
mix-rule-providers:
reject:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
上面的 YAML 语句块就是规则。
- url
指定订阅链接,根据订阅链接进行匹配,每次更新订阅都会针对这个匹配上的订阅,在原有的规则上再附加你自定义的规则;yaml
附加规则使用语言prepend-rules
在订阅推送的规则数组之前,加入你自定义的规则;若是想添加在推送的规则数组之后,那么可以使用append-rules
;这类字段的每个成员都由两个逗号进行了切分。例如- DOMAIN-SUFFIX,mirrors.ustc.edu.cn,DIRECT
,DOMAIN-SUFFIX
是规则类型,mirrors.ustc.edu.cn
是受约束的目标,DIRECT
是连接策略。根据这单个规则,就可以写下无数规则。- 规则类型如下:
字段 含义 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 全匹配 - 连接策略如下:
字段 含义 DIRECT 不走订阅直接连接 REJECT 拒绝连接 PROXIE(proxy-group 中的 name) 走订阅 mix-rule-providers
提供自定义规则的来源网址和文件,和rule-providers
是同样的概念,加上mix-
前缀后,可以与订阅提供的rule-providers
合并,而不是覆盖
日常访问和未来可能要访问的网站实在太多,如果所有规则都手工整理会比较麻烦,所以可以通过 rule-providers
使用其他人写好的规则作为基础,在上面继续添加。我是以这个仓库作为基础的,大部分人应该也是以这个仓库的规则作为基础。
当我配置完后大致如下:
parsers:
- url: XXX.com
yaml:
prepend-rules:
- PROCESS-NAME,iTunes,DIRECT
- PROCESS-NAME,spotify,Nice Cloud
- PROCESS-NAME,ESurfingClient,DIRECT
- DOMAIN-SUFFIX,cn.bing.com,DIRECT
- DOMAIN-SUFFIX,mirrors.ustc.edu.cn,DIRECT
- DOMAIN-SUFFIX,mirrors.tuna.tsinghua.edu.cn,DIRECT
- RULE-SET,applications,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,DIRECT
- RULE-SET,google,DIRECT
- RULE-SET,proxy,Nice Cloud
- RULE-SET,direct,DIRECT
- RULE-SET,lancidr,DIRECT
- RULE-SET,cncidr,DIRECT
- RULE-SET,telegramcidr,Nice Cloud
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Nice Cloud
mix-rule-providers:
reject:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
icloud:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/icloud.txt"
path: ./ruleset/icloud.yaml
interval: 86400
apple:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/apple.txt"
path: ./ruleset/apple.yaml
interval: 86400
google:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/google.txt"
path: ./ruleset/google.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
private:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/private.txt"
path: ./ruleset/private.yaml
interval: 86400
gfw:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/gfw.txt"
path: ./ruleset/gfw.yaml
interval: 86400
greatfire:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/greatfire.txt"
path: ./ruleset/greatfire.yaml
interval: 86400
tld-not-cn:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/tld-not-cn.txt"
path: ./ruleset/tld-not-cn.yaml
interval: 86400
telegramcidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/telegramcidr.txt"
path: ./ruleset/telegramcidr.yaml
interval: 86400
cncidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
lancidr:
type: http
behavior: ipcidr
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/lancidr.txt"
path: ./ruleset/lancidr.yaml
interval: 86400
applications:
type: http
behavior: classical
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/applications.txt"
path: ./ruleset/applications.yaml
interval: 86400
由于访问 raw.githubusercontent.com 可能会受到严重的网络波动影响,导致没法访问,不能正常获取,所以可以手动访问所有的 url
,然后将内容存入对应的 xxx.yaml
文件中,放到对应的 ./ruleset/
目录下,也就是 ~/.config/clash/ruleset/
下。ruleset/
这个文件夹第一次装 Clash 是没有的,需要自己创建。
至此,打开 Clash,点击 Profiles 里的订阅的更新以后,规则就添加到订阅里了。
Clash 规则的写法的更多相关文章
- 伪静态规则写法RewriteRule-htaccess详细语法使用
一.正则表达式教程伪静态规则写法RewriteRule-htaccess详细语法使用教程分享简单说下:伪静态实际上是利用PHP把当前地址解析成另外一种方法进行访问网站!要学伪静态规则的写法,你必须得懂 ...
- shopex下二级目录wordpress伪静态规则写法_SEO教程
实这几天做服务器,做商城学到很多知识,只是太忙了没有空记录下来分享. 今天 商城的内容基本已经做好了.在shopex的二级目录下又建了一个wordpress来做SEO优化. 在wordpress后台做 ...
- web.xml中的url-pattern写法规则及匹配过程
servlet和filter在javaEE开发中很常用,因此有必要知道web.xml文件映射的规则 1. 写法 ①完全匹配:以“/”开头,以字母(非“*”)结束 如:<url-patte ...
- iptables规则表
1.iptables规则表 Filter(针对过滤系统):INPUT.FORWARD.OUTPUT NAT(针对地址转换系统):PREROUTING.POSTROUTING.INPUT.OUTPUT ...
- 伪静态规则RewriteRule-htaccess
伪静态实际上是利用php把当前地址解析成另一种方法来访问网站,要学伪静态规则的写法,要懂一点正则 一.正则表达式教程 有一个经典的教程:正则表达式30分钟入门教程 常用正则如下: . 换行符以外的所有 ...
- 【PHP项目】伪静态规则
伪静态规则写法RewriteRule-htaccess详细语法使用 2016年03月30日 16:53:59 阅读数:20340 伪静态实际上是利用php把当前地址解析成另一种方法来访问网站,要学伪静 ...
- nginx服务器安装及配置文件详解
nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考.像负载均衡配置(包括健康检查).缓存( ...
- bootstrap1
让bootstarp3 支持ie的兼容模式: 支持浏览器的响应式布局: 是指网页既可以用在pc上,也可以用在手机上, 而且不需要修改源文件. bootstrap包括: css文件, 只需要加载: cs ...
- [转载]Bison-Flex 笔记
FLEX 什么是FLEX?它是一个自动化工具,可以按照定义好的规则自动生成一个C函数yylex(),也成为扫描器(Scanner).这个C函数把文本串作为输入,按照定义好的规则分析文本串中的字符,找到 ...
随机推荐
- C# 将Excel转为PDF时设置内容适应页面宽度
将Excel转为PDF格式时,通常情况下转换出来的PDF页面都是默认的宽度大小:如果Excel表格数据的设计或布局比较宽或者数据内较少的情况,转出来的PDF要么会将原本的一个表格分割显示在两个页面,或 ...
- matplotlib---设置坐标轴
import matplotlib.pyplot as plt import numpy as np # 一维数组, 元素为从-3到3之间均匀地产生50个点 x = np.linspace(-3, 3 ...
- 网络编程学习——Linux epoll多路复用模型
前言 后端开发的应该都知道Nginx服务器,Nginx是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.后端部署中一般使用的就是Nginx反向代理技术. ...
- MySQL存储引擎、基础数据类型、约束条件
MySQL存储引擎 存储引擎 # 存储引擎可以堪称是处理数据的不同方式 # 查看存储引擎的方式 show engines; # 需要掌握的四个存储引擎 MyISAM MySQL5.5之前的默认的存储引 ...
- el-table高度问题
1. 外层容器flex=1,el-table设置属性height="calc(100% - 60px),有时一刷新页面表格高度无限增加,滚动条一直变短 试验过几次后发现是因为el-table ...
- Xml外部实体注入漏洞
Xml外部实体注入漏洞(XXE) Xml介绍 XML 不是 HTML 的替代. XML 和 HTML 为不同的目的而设计: XML 被设计为传输和存储数据,其焦点是数据的内容. HTML 被设计用来显 ...
- java中int的最值解析
java中int的最大值为十进制的2147483647,也就是java能进行操作的最大数值,超出就会显示不正常.针对以下问题进行讨论. 1.最大值为什么是2147483647? java中int类型占 ...
- Kafka生成消息时的3种分区策略
摘要:KafkaProducer在发送消息的时候,需要指定发送到哪个分区, 那么这个分区策略都有哪些呢? 本文分享自华为云社区<Kafka生产者3中分区分配策略>,作者:石臻臻的杂货铺. ...
- Promql基础语法2
数据样本 直方图类型 delta函数 运算操作 数学运算 node_disk_info / 100 当瞬时向量与标量之间进行数学运算时,数学运算符会依次作用域瞬时向量中的每一个样本值,从而得到一组新的 ...
- HCNP Routing&Switching之端口隔离
前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...