硬核Clash 配置教程,终极分流规则防配置覆盖

硬核Clash 配置教程,终极分流规则防配置覆盖

最近发现使用香港代理访问new bing貌似被封禁了,于是就要修改一下家里软路由的代理分流规则,因为手上的主力机是MacBook,好用的代理软件最常用的也是Clash X,那索性就一起搞了,正好有小伙伴问我想自定义Clash的分流规则,网上查了资料改是改了,结果一更新订阅链接,自己的辛辛苦亏写的配置就被无情的覆盖了,问我怎么避免这个问题。那就借此机会简单整理一个硬核一点的教程吧。

很多同学看到一大坨的配置文件就头疼,其实大可不必,Clash的配置文件非常简单,简单理解基本规则后就属于有手就能配的。

开始之前简单理解一下几个基本概念。

1.代理(proxy)

代理一般代理指的是我们的代理服务节点,比如自建或者机场提供的可以访问“互联网”的节点。

1.1 代理集(proxy-providers)

如果你购买了机场,那么一般机场都会提供给你一堆的代理节点,此时我们就可以对这些节点按照一定的规则进行归类,这些个归类后的节点称之为代理集(proxy-providers)。

proxy-providers:
  FlyingBird-HongKong:
    type: http
    path: ./ProxySet/FlyingBird/HongKong.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Hong Kong'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-TaiWan:
    type: http
    path: ./ProxySet/FlyingBird/TaiWan.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Taiwan'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300

代理集中归类的节点可以是本地配置节点也可以是机场订阅节点,可以是一个机场亦或者是多个机场,甚至也可以是符合自定义筛选规则的部分节点。

我们可以为代理集配置健康检查,定时检查并更新代理集中的代理节点。

1.2 策略组(proxy-groups)

策略组这个名字有点让人望而却步,个人认为译为“代理组”会更好理解一点。策略组的作用就是对代理集进行自由组合使用,当然它还提供了定时测速选择最优节点或者手动选择节点等功能。

proxy-groups:
  - name: PROXY
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    use:
      - FlyingBird-HongKong
      - FlyingBird-TaiWan
      - FlyingBird-Singapore
      - FlyingBird-Malaysia
      - FlyingBird-Japan
      - FlyingBird-USA
      - FlyingBird-UK
      - FlyingBird-Turkey
      - FlyingBird-Argentina
    proxies:
      - DIRECT
  - name: 非香港
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    use:
      - FlyingBird-TaiWan
      - FlyingBird-Singapore
      - FlyingBird-Malaysia
      - FlyingBird-Japan
      - FlyingBird-USA
      - FlyingBird-UK

2.规则(rules)

规则决定了访问指定地址时使用哪个代理,也就是我们说的分流规则。

2.1 规则集(rule-providers)

规则负责将指定网络请求丢给指定的的代理去处理,仿佛左手请求,右手代理。那么首先要确定的就是网络请求,网络请求的界定既可以是一个特定的域名或者IP,也可以是特定域名结尾或者开头,亦或者是进程名称。我们一般将一组特定相关的请求归类到一起,称为规则集。这些规则往往都是爱好者们整理好开源在Github上并定期维护的,我们直接拿来用就可以了。

rule-providers:
  apple:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
    path: ./RuleSet/apple.yaml
    interval: 86400
  google:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./RuleSet/google.yaml
    interval: 86400

2.2 规则(rules)

最后我们来看下代理如何分流。一行分流策略包含两部分,请求+代理。请求可以来自于规则集匹配,代理则可以来自于策略组。没有匹配到规则的网路请求如果使用代理访问则称为白名单模式,直接请求不经过代理则是黑名单模式。

我们自定义的分流策略也一般定义在此处。

3.示例配置文件

#---------------------------------------------------#
## 自定义Clash配置
## 作者: Colin Chang
## 更新:2023-04-13 
#---------------------------------------------------#


mixed-port: 7890
allow-lan: false
mode: Rule
log-level: error
external-controller: 127.0.0.1:60000

proxy-providers:
  FlyingBird-HongKong:
    type: http
    path: ./ProxySet/FlyingBird/HongKong.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Hong Kong'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-TaiWan:
    type: http
    path: ./ProxySet/FlyingBird/TaiWan.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Taiwan'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-Singapore:
    type: http
    path: ./ProxySet/FlyingBird/Singapore.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Singapore'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-Malaysia:
    type: http
    path: ./ProxySet/FlyingBird/Malaysia.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Malaysia'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-Japan:
    type: http
    path: ./ProxySet/FlyingBird/Japan.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Japan'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-USA:
    type: http
    path: ./ProxySet/FlyingBird/USA.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'USA'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-UK:
    type: http
    path: ./ProxySet/FlyingBird/USA.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'USA'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-Turkey:
    type: http
    path: ./ProxySet/FlyingBird/Turkey.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Turkey'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
  FlyingBird-Argentina:
    type: http
    path: ./ProxySet/FlyingBird/Argentina.yaml
    url: "机场订阅地址"
    interval: 1800
    filter: 'Argentina'
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300

proxy-groups:
  - name: PROXY
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    use:
      - FlyingBird-HongKong
      - FlyingBird-TaiWan
      - FlyingBird-Singapore
      - FlyingBird-Malaysia
      - FlyingBird-Japan
      - FlyingBird-USA
      - FlyingBird-UK
      - FlyingBird-Turkey
      - FlyingBird-Argentina
    proxies:
      - 直接连接
  - name: 境外流量
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    use:
      - FlyingBird-HongKong
      - FlyingBird-TaiWan
      - FlyingBird-Singapore
      - FlyingBird-Malaysia
      - FlyingBird-Japan
      - FlyingBird-USA
      - FlyingBird-UK
  - name: Youtube
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    proxies:
      - 境外流量
  - name: Netflix
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    proxies:
      - 境外流量
  - name: Telegram
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    proxies:
      - 境外流量
  - name: Apple
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    proxies:
      - 直接连接
      - 境外流量
  - name: Non-HK
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    use:
      - FlyingBird-TaiWan
      - FlyingBird-Singapore
      - FlyingBird-Malaysia
      - FlyingBird-Japan
      - FlyingBird-USA
      - FlyingBird-UK
  - name: Colin
    type: select
    interval: 300
    proxies:
      - 直接连接
      - 境外流量
  - name: 直接连接
    type: select
    proxies:
      - DIRECT

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./RuleSet/reject.yaml
    interval: 86400
  icloud:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
    path: ./RuleSet/icloud.yaml
    interval: 86400
  apple:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
    path: ./RuleSet/apple.yaml
    interval: 86400
  google:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./RuleSet/google.yaml
    interval: 86400
  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./RuleSet/proxy.yaml
    interval: 86400
  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./RuleSet/direct.yaml
    interval: 86400
  private:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
    path: ./RuleSet/private.yaml
    interval: 86400
  gfw:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
    path: ./RuleSet/gfw.yaml
    interval: 86400
  greatfire:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt"
    path: ./RuleSet/greatfire.yaml
    interval: 86400
  tld-not-cn:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt"
    path: ./RuleSet/tld-not-cn.yaml
    interval: 86400
  telegramcidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
    path: ./RuleSet/telegramcidr.yaml
    interval: 86400
  cncidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./RuleSet/cncidr.yaml
    interval: 86400
  lancidr:
     type: http
     behavior: ipcidr
     url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
     path: ./RuleSet/lancidr.yaml
     interval: 86400

rules:
  # 自定义规则
  - DOMAIN-SUFFIX,openai.com,境外流量
  - DOMAIN-SUFFIX,bing.com,Non-HK
  - DOMAIN-SUFFIX,a-nomad.com,直接连接
  - DOMAIN-SUFFIX,api2d.net,直接连接
  - DOMAIN-SUFFIX,appstorrent.ru,Colin

  - DOMAIN-KEYWORD,youtube,Youtube
  - DOMAIN,youtubei.googleapis.com,Youtube
  - DOMAIN,yt3.ggpht.com,Youtube
  - DOMAIN-SUFFIX,googlevideo.com,Youtube
  - DOMAIN-SUFFIX,gvt2.com,Youtube
  - DOMAIN-SUFFIX,withyoutube.com,Youtube
  - DOMAIN-SUFFIX,youtu.be,Youtube
  - DOMAIN-SUFFIX,youtube-nocookie.com,Youtube
  - DOMAIN-SUFFIX,youtube.com,Youtube
  - DOMAIN-SUFFIX,youtubeeducation.com,Youtube
  - DOMAIN-SUFFIX,youtubegaming.com,Youtube
  - DOMAIN-SUFFIX,youtubekids.com,Youtube
  - DOMAIN-SUFFIX,yt.be,Youtube
  - DOMAIN-SUFFIX,ytimg.com,Youtube
  - DOMAIN-KEYWORD,netflixdnstest,Netflix
  - DOMAIN,netflix.com.edgesuite.net,Netflix
  - DOMAIN-SUFFIX,fast.com,Netflix
  - DOMAIN-SUFFIX,netflix.com,Netflix
  - DOMAIN-SUFFIX,netflix.net,Netflix
  - DOMAIN-SUFFIX,netflixdnstest0.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest1.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest2.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest3.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest4.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest5.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest6.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest7.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest8.com,Netflix
  - DOMAIN-SUFFIX,netflixdnstest9.com,Netflix
  - DOMAIN-SUFFIX,nflxext.com,Netflix
  - DOMAIN-SUFFIX,nflximg.com,Netflix
  - DOMAIN-SUFFIX,nflximg.net,Netflix
  - DOMAIN-SUFFIX,nflxso.net,Netflix
  - DOMAIN-SUFFIX,nflxvideo.net,Netflix
  - IP-CIDR,8.41.4.0/24,Netflix,no-resolve
  - IP-CIDR,23.246.0.0/18,Netflix,no-resolve
  - IP-CIDR,37.77.184.0/21,Netflix,no-resolve
  - IP-CIDR,38.72.126.0/24,Netflix,no-resolve
  - IP-CIDR,45.57.0.0/17,Netflix,no-resolve
  - IP-CIDR,64.120.128.0/17,Netflix,no-resolve
  - IP-CIDR,66.197.128.0/17,Netflix,no-resolve
  - IP-CIDR,69.53.224.0/19,Netflix,no-resolve
  - IP-CIDR,103.87.204.0/22,Netflix,no-resolve
  - IP-CIDR,108.175.32.0/20,Netflix,no-resolve
  - IP-CIDR,185.2.220.0/22,Netflix,no-resolve
  - IP-CIDR,185.9.188.0/22,Netflix,no-resolve
  - IP-CIDR,192.173.64.0/18,Netflix,no-resolve
  - IP-CIDR,198.38.96.0/19,Netflix,no-resolve
  - IP-CIDR,198.45.48.0/20,Netflix,no-resolve
  - IP-CIDR,207.45.72.0/22,Netflix,no-resolve
  - IP-CIDR,208.75.76.0/22,Netflix,no-resolve
  - PROCESS-NAME,v2ray,DIRECT
  - PROCESS-NAME,xray,DIRECT
  - PROCESS-NAME,naive,DIRECT
  - PROCESS-NAME,trojan,DIRECT
  - PROCESS-NAME,trojan-go,DIRECT
  - PROCESS-NAME,ss-local,DIRECT
  - PROCESS-NAME,privoxy,DIRECT
  - PROCESS-NAME,leaf,DIRECT
  - PROCESS-NAME,v2ray.exe,DIRECT
  - PROCESS-NAME,xray.exe,DIRECT
  - PROCESS-NAME,naive.exe,DIRECT
  - PROCESS-NAME,trojan.exe,DIRECT
  - PROCESS-NAME,trojan-go.exe,DIRECT
  - PROCESS-NAME,ss-local.exe,DIRECT
  - PROCESS-NAME,privoxy.exe,DIRECT
  - PROCESS-NAME,leaf.exe,DIRECT
  - PROCESS-NAME,Surge,DIRECT
  - PROCESS-NAME,Surge 2,DIRECT
  - PROCESS-NAME,Surge 3,DIRECT
  - PROCESS-NAME,Surge 4,DIRECT
  - PROCESS-NAME,Surge%202,DIRECT
  - PROCESS-NAME,Surge%203,DIRECT
  - PROCESS-NAME,Surge%204,DIRECT
  - PROCESS-NAME,Thunder,DIRECT
  - PROCESS-NAME,DownloadService,DIRECT
  - PROCESS-NAME,qBittorrent,DIRECT
  - PROCESS-NAME,Transmission,DIRECT
  - PROCESS-NAME,fdm,DIRECT
  - PROCESS-NAME,aria2c,DIRECT
  - PROCESS-NAME,Folx,DIRECT
  - PROCESS-NAME,NetTransport,DIRECT
  - PROCESS-NAME,uTorrent,DIRECT
  - PROCESS-NAME,WebTorrent,DIRECT
  - PROCESS-NAME,aria2c.exe,DIRECT
  - PROCESS-NAME,BitComet.exe,DIRECT
  - PROCESS-NAME,fdm.exe,DIRECT
  - PROCESS-NAME,NetTransport.exe,DIRECT
  - PROCESS-NAME,qbittorrent.exe,DIRECT
  - PROCESS-NAME,Thunder.exe,DIRECT
  - PROCESS-NAME,ThunderVIP.exe,DIRECT
  - PROCESS-NAME,transmission-daemon.exe,DIRECT
  - PROCESS-NAME,transmission-qt.exe,DIRECT
  - PROCESS-NAME,uTorrent.exe,DIRECT
  - PROCESS-NAME,WebTorrent.exe,DIRECT
  - DOMAIN,clash.razord.top,DIRECT
  - DOMAIN,yacd.haishan.me,DIRECT
  - RULE-SET,private,DIRECT
  - RULE-SET,reject,REJECT
  - RULE-SET,direct,DIRECT
  - RULE-SET,icloud,Apple
  - RULE-SET,apple,Apple
  - RULE-SET,google,境外流量
  - RULE-SET,proxy,境外流量
  - RULE-SET,telegramcidr,Telegram
  - GEOIP,LAN,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY