本文仅做技术探讨,请遵守法律法规

规则的作用

可以对网络流量进行分流,如访问 Youtube 时,使用代理;访问微信时,使用直连

从而使流量扣得慢一些、访问速度也更快一些(很多国内软件使用代理访问时会变慢)

如何配置

  1. 找一些规则(一般机场也会自带,但是效果并不是很好)

    推荐 Loyalsoldier/clash-rules: 🦄️ 🎃 👻 Clash Premium 规则集(RULE-SET)

  2. 复制规则

    复制规则
    复制规则

    也可以直接复制下面的规则(我从仓库搬过来的):

    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
    
      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
    
      applications:
        type: http
        behavior: classical
        url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt"
        path: ./ruleset/applications.yaml
        interval: 86400
  3. 打开 Clash 规则配置目录中的 config.yaml,并将规则粘贴到末尾

    配置目录
    配置目录

    配置文件
    配置文件

    粘贴到末尾
    粘贴到末尾

  4. 打开 订阅全局拓展脚本

    全局拓展脚本
    全局拓展脚本

    替换脚本:

    const prependRule = [
      "RULE-SET,applications,DIRECT",
      "DOMAIN,clash.razord.top,DIRECT",  // 访问 clash.razord.top 时,直连
      "DOMAIN,yacd.haishan.me,DIRECT",
      "DOMAIN,storage.live.com,DIRECT",
      "DOMAIN-SUFFIX,bing.com,DIRECT",  // 访问带有 bing.com 的域名时,直连
      "DOMAIN-SUFFIX,bing.net,DIRECT",
      "DOMAIN-SUFFIX,microsoft.com,DIRECT",
      "DOMAIN-SUFFIX,msn.com,DIRECT",
      "RULE-SET,private,DIRECT",
      "RULE-SET,reject,REJECT",
      "RULE-SET,icloud,DIRECT",
      "RULE-SET,apple,DIRECT",
      "RULE-SET,google,🚀 节点选择",  // 设置规则:访问谷歌时(谷歌的相关域名已经在上一步的配置文件中进行了配置),使用「🚀 节点选择」线路
      "RULE-SET,proxy,🚀 节点选择",
      "RULE-SET,direct,DIRECT",
      "RULE-SET,lancidr,DIRECT",
      "RULE-SET,cncidr,DIRECT",
      "RULE-SET,telegramcidr,🚀 节点选择",
      "GEOIP,LAN,DIRECT",
      "GEOIP,CN,DIRECT",
      "MATCH,DIRECT"  // 其他域名,直连
    ];
    
    function main(config) {
      config['rules'] = prependRule;
      console.info(config['rules']);
      return config;
    }

    需要将 🚀 节点选择 替换为你实际要访问的线路

    设置规则
    设置规则

    注意,prependRule 数组的规则生效顺序是:靠前的覆盖靠后的,如果你想覆盖规则集中的某几条规则,应该放在数组最前面(比如配置文件 config.yaml 中的 proxy 规则存在了微软域名,脚本中加了 "RULE-SET,proxy,🚀 节点选择",此时如果不作任何修改,当我访问微软时,就会使用 🚀 节点选择 线路。但我只想让微软走直连,因此我又在前面添加了 "DOMAIN-SUFFIX,microsoft.com,DIRECT" 等自定义规则)