• 🎉小站の店正式开业试营运,欢迎大家捧场&反馈
  • 网站所有加密内容密码一律为:920.im;别问为什么,问就是为了活着
  • 订阅小站 TG频道获取更多小福利
  • 欢迎访问小站,如果您觉得本站还不错,请Ctrl+D 收藏本站
  • 请不要催更视频或文章;网站+所有视频制作都是我一人再弄,而且懒;你们多多留言,我可能就会破天荒更新了
  • 任何虚假邮箱的留言评论将一律不通过,你的邮箱不会被公开,请放心留言交流
  • 网站今后如果无法访问,请自行使用代理访问

Clash配置rule-providers实现自由搭配及自动更新规则功能

Tech CrazyJoe 3年前 (2022-04-20) 4个评论
本文最后更新于2022年4月20日,已超过 923天没有更新,如文章内容或资源失效,请留言反馈。订阅TG频道获取更多福利

前言

目前各大订阅转换服务在选择clash订阅类型时,会将所选的远程配置中所有rules规则全部拉取并填充在相应的yaml配置文件中。这样的配置文件有以下几点弊端:

  1. 文件内容及行数较多
  2. 自行添加及修改部分规则内容较为麻烦
  3. 对于自己搭建节点的用户,无法自动更新
  4. 受限于远程配置,无法自由组合自己想要的规则

在了解到Clash Premium Core支持rule-providers功能后,我们便可以完美的解决上述问题。

文件配置

首先我们来看下官方wiki中对于rule-providers字段及对应rules字段的配置示例说明:

rule-providers:
  apple:
    behavior: "domain" # domain, ipcidr or classical (premium core only)
    type: http
    url: "url"
    interval: 3600
    path: ./apple.yaml
  microsoft:
    behavior: "domain"
    type: file
    path: /microsoft.yaml

我们可以看到在rule-providers字段中,需要有以下内容:

  • behavior:可填写 domain ipcidr classical
  • type:可填写http及file「在线文件填写http,本地文件填写file」
  • interval:更新间隔
  • path:文件储存路径

behavior的三种类型对应的文件内容格式分别如下:

domain

payload:
  - '.blogger.com'
  - '*.*.microsoft.com'
  - 'books.itunes.apple.com'

ipcidr

payload:
  - '192.168.1.0/24'
  - '10.0.0.0.1/32'

classical

payload:
  - DOMAIN-SUFFIX,google.com
  - DOMAIN-KEYWORD,google
  - DOMAIN,ad.com
  - SRC-IP-CIDR,192.168.1.201/32
  - IP-CIDR,127.0.0.0/8
  - GEOIP,CN
  - DST-PORT,80
  - SRC-PORT,7777
  # MATCH is not necessary here

接着我们来看对应的rules字段配置示例:

rules:
  - RULE-SET,apple,REJECT
  - RULE-SET,microsoft,policy

我们可以看到在rules字段中,需要有以下内容:

  • RULE-SET 「默认,无需修改」
  • rule-providers对应的名称「如上述例子中的apple、microsoft等」
  • 处理方式「如直连、代理、拒绝等」

在知道以上配置规则样式后,我们以使用比较知名的ACL4SSR Online在线规则为例,进行相应配置编写如下:

rule-providers:
# 内容:可以自行添加其它自己想要在线规则列表
  LocalAreaNetwork:
    behavior: classical # domain, ipcidr or classical (premium core only)
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/LocalAreaNetwork.yaml"
    interval: 86400
    path: ./ACL4SSR/LocalAreaNetwork.yaml
  UnBan:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/UnBan.yaml"
    interval: 86400
    path: ./ACL4SSR/UnBan.yaml
  BanAD:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/BanAD.yaml"
    interval: 86400
    path: ./ACL4SSR/BanAD.yaml
  BanProgramAD:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/BanProgramAD.yaml"
    interval: 86400
    path: ./ACL4SSR/BanProgramAD.yaml
  GoogleFCM:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/GoogleFCM.yaml"
    interval: 86400
    path: ./ACL4SSR/GoogleFCM.yaml
  GoogleCN:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/GoogleCN.yaml"
    interval: 86400
    path: ./ACL4SSR/GoogleCN.yaml
  SteamCN:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/SteamCN.yaml"
    interval: 86400
    path: ./ACL4SSR/SteamCN.yaml
  Microsoft:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/Microsoft.yaml"
    interval: 86400
    path: ./ACL4SSR/Microsoft.yaml
  Apple:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/Apple.yaml"
    interval: 86400
    path: ./ACL4SSR/Apple.yaml
  Telegram:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/Ruleset/Telegram.yaml"
    interval: 86400
    path: ./ACL4SSR/Telegram.yaml
  ProxyLite:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/ProxyLite.yaml"
    interval: 86400
    path: ./ACL4SSR/ProxyLite.yaml
  ProxyMedia:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/ProxyMedia.yaml"
    interval: 86400
    path: ./ACL4SSR/ProxyMedia.yaml
  ChinaDomain:
    behavior: classical 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/ChinaDomain.yaml"
    interval: 86400
    path: ./ACL4SSR/ChinaDomain.yaml
  ChinaCompanyIp:
    behavior: ipcidr 
    type: http
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Providers/ChinaCompanyIp.yaml"
    interval: 86400
    path: ./ACL4SSR/ChinaCompanyIp.yaml

rules:
# 内容:可以自行添加其它自己想要的规则
# ACL4SSR Online
 - RULE-SET,LocalAreaNetwork,🎯 全球直连
 - RULE-SET,UnBan,🎯 全球直连
 - RULE-SET,BanAD,🛑 全球拦截
 - RULE-SET,BanProgramAD,🍃 应用净化
 - RULE-SET,GoogleFCM,📢 谷歌FCM
 - RULE-SET,GoogleCN,🎯 全球直连
 - RULE-SET,SteamCN,🎯 全球直连
 - RULE-SET,Microsoft,Ⓜ️ 微软服务
 - RULE-SET,Apple,🍎 苹果服务
 - RULE-SET,Telegram,📲 电报信息
 - RULE-SET,ProxyLite,🚀 节点选择 
 - RULE-SET,ProxyMedia,🌍 国外媒体
 - RULE-SET,ChinaDomain,🎯 全球直连
 - RULE-SET,ChinaCompanyIp,🎯 全球直连
 - GEOIP,CN,🎯 全球直连
 - MATCH,🐟 漏网之鱼

我们完全可以在上述内容列表的基础上,自行添加自己想要的rule-providers列表或者相应的rules规则,并且可以实现自动更新的功能。

rule-providers字段及功能只支持premium core使用,非premium core可能不支持相关字段,请大家自行尝试。个人测试CFW,Openclash等均支持

题外话

我们在clash的wiki中同样可以看到其还支持类似的proxy-providers功能,我们拓展一下,应该可以实现任意机场同自己节点的组合并且同样支持动态更新相应节点。

参考链接

4.5 4 votes
Article Rating

xzの小站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Clash配置rule-providers实现自由搭配及自动更新规则功能
喜欢 (9)
关于作者:
Is life always this hard, or is it just when you're a kid?——Mathilda:Léon: The Professional
Subscribe | 订阅
Notify of
guest

4 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
4
0
Would love your thoughts, please comment.x
()
x