规则模式

我之前的使用方式就是使用全局模式,clash打开系统代理,从代理选项中选择一个,所有的连接都是走自己在clash中选择的某个节点

这样有些问题

  • 我使用的梯子是便宜版本,选择的节点可能用个几分钟就down掉了,这时候要去手动选择其他节点;
  • 有些站点可能我选择的节点比较慢,有些比较快,没法总是选择最优的节点去代理

这时候我们可以让梯子选择clash的规则模式,开系统代理,使用自己定义rules去分流域名。

简单版

可以用converter+梯子的订阅链接实现一键自定义分流,一直开着clash上网(但是不是很好自定义自己的规则,可以定义规则,必须通过clash的parser设置,每次更新一键配置时候parser会在前面加上我们的自定义分流规则就不会覆盖掉

复杂版

使用别人写好的规则list(网上的list+自己的list,list通过github的raw文件成在线文件)+proxy-providers(可以看这个视频或者这个文章-这个文章没有写providers的配置但是思路是对的,文章用的是ini写的没有用yaml,现在主流配置都是yaml)-第2点的话这篇git的issue很清晰:https://github.com/Fndroid/clash_for_windows_pkg/issues/2729文章主题往下翻别看上面

parsers

即配置文件预处理

如果机场频繁更新,之前的某些信息过期,就需要我们刷新订阅连接,如果是用的规则模式,我们手动写的不包含 在默认订阅链接和转换连接时配置的网上别人写好的规则这之中的规则就会消失,非常麻烦。

这时候可以用parsers,写法和本身的配置差不多,我们写的配置项中可以看到下面的表格中都带有append/prepend词根前缀,主要是在刷新链接的时候,会手动插入在后或者前,避免了被覆盖配置。

配置项

proxies

订阅链接默认写好的每个节点的配置,可以在proxy-groups中被引用。

proxy-groups

策略组,使用proxies中定义的节点也可以引用proxy-group。

划分节点,把多个proxy整合在一块,方便规则调用的时候使用整个组划分好的节点。

proxy-groups:
  - name: PROXY
    type: url-test
    interval: 3600
    url: http://www.gstatic.com/generate_204
    use:
      - <name>
    proxies:
      - <name>
  • use:引用 proxy-provider 中的代理集,填写对应的代理集名称,没有用provider可以不用写。
  • proxies: 可以在此手动引用单个节点配置或其它策略组

Provider

proxy-provider 和 rule-provider ,前者可以实现导入多个机场的节点,后者可以引入大佬们实时维护的不同类型的在线规则集。

如:RULE-SET,telegramcidr,PROXY

表示:当访问的域名或 IP 在 telegramcidr 规则集中时,使用 PROXY 策略组进行访问

rule-providers

rule-provider的优先级是高于rule的
  • <name>: 规则集名称,可以随意命名,但是不能重复
  • type: 规则集文件类型,可以是 http 或 file
  • behavior: 规则集行为,可以是 classical | ipcidr | domain (参考示例:Example of a rule-provider file)
  • path: 规则集存放路径
  • url: 规则集链接,只有当 type 为 http 时才需要填写
  • interval: 规则集更新间隔(如 86400 秒指每 10 天更新一次规则集),只有当 type 为 http 时才需要填写

在这里我们使用 GitHub 上的 Clash-Rules

proxy-providers

  • <name>: 代理集名称,可以随意命名,但是不能重复
  • type: 代理集类型,可以是 http 或 file
  • path: 代理集存放路径
  • url: 代理集链接,只有当 type 为 http 时才需要填写
  • interval: 代理集更新间隔,只有当 type 为 http 时才需要填写

    rules

使用上面的rule-provider引入的规则集,或者手动添加的规则,设置由哪个策略组进行访问。

 - PROCESS-NAME,程序,DIRECT

规则可以用进程名来分流。

白名单模式(推荐)

规则都没命就会走最后一行,MATCH,PROXY(此处需要定义为PROXY这个策略组)
rules:
  - 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,PROXY
  - RULE-SET,direct,DIRECT
  - RULE-SET,lancidr,DIRECT
  - RULE-SET,cncidr,DIRECT
  - RULE-SET,telegramcidr,PROXY
  - GEOIP,LAN,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

黑名单模式

即没有命中规则的域名或 IP 都不走代理。也就是最后一行 - MATCH,DIRECT进行直连。
COPYrules:
  - RULE-SET,applications,DIRECT
  - DOMAIN,clash.razord.top,DIRECT
  - DOMAIN,yacd.haishan.me,DIRECT
  - RULE-SET,private,DIRECT
  - RULE-SET,reject,REJECT
  - RULE-SET,tld-not-cn,PROXY
  - RULE-SET,gfw,PROXY
  - RULE-SET,greatfire,PROXY
  - RULE-SET,telegramcidr,PROXY
  - MATCH,DIRECT

防遗忘

关于写好的规则我都放在了笔记本的D:\Soft\Tools\Clash\规则目录,使用的方法就是放在parser中,在这做个记录,以防遗忘。

借鉴

以上部分内容借鉴了文章这篇文章的写法。