V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zeyezhan
V2EX  ›  程序员

自定义 Clash 代理规则的方案(使用 github actions 缓存到 CDN,提升访问速度)

  •  
  •   zeyezhan ·
    zhanyeye · Aug 13, 2022 · 5312 views
    This topic created in 1355 days ago, the information mentioned may be changed or developed.

    链接: https://github.com/zhanyeye/clash-rules-lite

    Clash Rules Lite

    🍒 自定义代理规则,精简匹配规则 (代理匹配速度明显提升)。

    工具介绍

    • Clash 默认的 GFW 代理规则内容太多,使用过程中明显感觉到有延迟
    • 该工具的目的是删除不必要的代理规则,方便用户自定义代理的内容
    • 代理规则放在 github 仓库中方便多设备同步,只需编辑rules.txt即可
    • 当用户更新规则后,使用 Github Actions 自动将规则缓存到免费 CDN 上
    • 用户在 github 上更新规则后,在 clash 的 providers 上点击刷新就可以了

    使用方法

    1. fork 本仓库:Fork zhanyeye/clash-rules-lite

    2. 鼠标右击订阅的配置文件选中“复制”,将复制的文件命名为local(因为更新订阅链接时会覆盖你的修改)

    1. 在你复制的 local 配置中,修改配置如下,注意 proxies, proxy-groups{YOUR-GITHUB-USERNAME} 修改为你的配置(加粗的部分)
     
    mixed-port: 7890
    allow-lan: true
    bind-address: '*'
    mode: rule
    log-level: silent
    external-controller: '127.0.0.1:9090'
    proxies:
        - { name: '1-香港', type: *, server: **, port: *, cipher: **, password: **, udp: true }
        - { name: '2-香港', type: *, server: **, port: *, cipher: **, password: **, udp: true }
    proxy-groups:
        - { name: 'PROXY', type: select, proxies: ['1-香港', '2-香港'] }
    rules:
      - DOMAIN-KEYWORD,github,PROXY
      - DOMAIN-KEYWORD,google,PROXY
      - RULE-SET,pac,PROXY
    rule-providers:
      pac:
        type: http
        behavior: domain
        url: "https://cdn.jsdelivr.net/gh/{YOUR-GITHUB-USERNAME}/clash-rules-lite@release/rules.txt"
        path: ./rules/pac.yaml
        interval: 86400
    script:
      code: |
        def main(ctx, metadata):
            keywords = ["google", "github"]
            for key in keywords:
                if key in metadata["host"]:
                    return "PROXY"
            if ctx.rule_providers["pac"].match(metadata):
                return "PROXY"
            else:
                return "DIRECT"
    
    
    1. 运行修改后的 local 配置,再切换成 RuleScript 模式

    自定义代理规则

    修改仓库中rules.txt,修改完后会自动更新并邮件提醒,然后在 Clash 上刷新 providers

    高阶玩法

    • 使用 python 脚本解析订阅链接,自动生成改配置文件,需要你在 Python 代码中设置好你的订阅链接,代码见:generate_config_quickly.py
    • 注意该解析脚本是基于本人的订阅链接编写的,不一定适合所有机场,你可以自己修改代码,比较容易
    25 replies    2022-08-21 17:45:47 +08:00
    zeyezhan
        2
    zeyezhan  
    OP
       Aug 13, 2022
    这个配置手机上也可以用~
    zeyezhan
        3
    zeyezhan  
    OP
       Aug 13, 2022
    顶一顶~
    SimonOne
        4
    SimonOne  
       Aug 13, 2022   ❤️ 1
    ```
    proxy-providers:
    示例:
    type: http
    url: clash 订阅链接
    interval: 86400
    path: ./示例.yaml
    health-check:
    enable: true
    interval: 600
    # lazy: true
    url: http://clients1.google.com/generate_204
    ```

    直接将订阅地址写在主文件里得了,不要用客户端的订阅功能,不要 copy ,不然机场的更新不是废了。
    SimonOne
        5
    SimonOne  
       Aug 13, 2022   ❤️ 1
    SimonOne
        6
    SimonOne  
       Aug 13, 2022   ❤️ 2

    你的高阶玩法里的 python 感觉就是重复造了 clash 已有的轮子啊
    直接用 proxy-groups 和 proxy-providers 就行了
    规则用 rule-providers
    lostberryzz
        7
    lostberryzz  
       Aug 13, 2022   ❤️ 4
    你这个规则甚至连能用都谈不上,区区 73 个域名远远不能覆盖 gfw 名单,还有 DOMAIN-KEYWORD 的方式过于蠢了,就一个很简单的场景,类似于 githubproxy 这样的国内加速域名按你的配置走的是代理,但实际上它解析的是国内 IP 。

    推荐一个自用的规则: https://github.com/Loyalsoldier/clash-rules
    zeyezhan
        8
    zeyezhan  
    OP
       Aug 14, 2022
    @lostberryzz 谢谢您的意见。
    1. 确实是在这样,我是用多少加多少,我的需求还是很少的
    2. DOMAIN-KEYWORD 等有时间就研究一下是怎么回事嘿
    3. githubproxy 原来是国内域名呀,学到啦

    您的推荐我也用过,就是参考他来改的,因为我真正用到的网站估计 100 个以内,使用那个规则集太丰富了,感觉有些延迟了,所以才有了这个想法。

    我的需求是:不需要那么全面的规则集,因为用不上太多,而且好像影响访问速度,够用就行,慢慢积累合适自己的规则。
    zeyezhan
        9
    zeyezhan  
    OP
       Aug 14, 2022
    @SimonOne
    谢谢您的回复,
    啊,这里我确实是在造轮子,可能用高阶这个次不合适,我把它改掉。
    主要是我的需求比较奇怪,觉得订阅更新后再更新配置好麻烦,所以想在生成自己的配置去替换订阅链接给我的配置
    zeyezhan
        10
    zeyezhan  
    OP
       Aug 14, 2022
    @SimonOne
    哇塞,原来是样解决的呀!!!!
    谢谢指导~
    zeyezhan
        11
    zeyezhan  
    OP
       Aug 14, 2022
    @lostberryzz
    关于 githubproxy ,想了想在我的需求中,github 都走代理啦,好像不会用上 githubproxy 呀😂
    ByteCat
        12
    ByteCat  
       Aug 14, 2022   ❤️ 1
    每个人都会造自己的轮子 😂
    不过我用的是 subconverter 转换配置,因为以前 iOS 没有 Clash ,而且生成的规则兼容性比较好,早期的 Clash 不支持 rule-provider 。
    在这里:
    https://github.com/imbytecat/subconverter-config/blob/main/rule-set.sample.ini
    magicdawn
        13
    magicdawn  
       Aug 14, 2022 via Android   ❤️ 1
    还真是每个人都有自己的轮子,
    我造了一个 GUI 的 https://github.com/magicdawn/clash-config-manager

    规则集永远无法适配所有人,这个 GUI 就是碰到一个链接,可以方便的从 chrome or 剪贴板读取并解析,然后快速选择 domain-suffix 或者 domain-keyword ,keyword, target 新建一条 rule
    filtrate
        14
    filtrate  
       Aug 14, 2022 via iPhone
    我之前也造过一个轮子,大概就是过滤 v2ray base64 编码的节点订阅,然后转成 surge 。不过是很久之前了,16 年左右,那时候还没有 subconvert 和 clash
    A01514035
        15
    A01514035  
       Aug 14, 2022
    好像有现成的规则吧,我是用这个的。
    FrankAdler
        16
    FrankAdler  
       Aug 14, 2022 via iPhone
    重复造轮子的结果就是三分热度,最后用 topN 的已有轮子,我劝你放弃
    yfugibr
        17
    yfugibr  
       Aug 14, 2022 via Android
    cfw 可以用 parser.yaml, 我直接用自己的规则覆盖了机场的,订阅更新时也会自动处理
    vanwisg
        18
    vanwisg  
       Aug 14, 2022
    surgio 试一下
    Xopher
        19
    Xopher  
       Aug 14, 2022 via iPhone
    @zeyezhan subconvert 取节点 list ,自己写配置和规则就行了,规则定期更新
    zeyezhan
        20
    zeyezhan  
    OP
       Aug 14, 2022
    @Xopher 收到,我去研究一下~
    SenLief
        21
    SenLief  
       Aug 14, 2022
    clash 对于规则匹配有优化的,所以速度并不慢。
    1002xin
        22
    1002xin  
       Aug 14, 2022
    怎么说呢,现在规则遍地都是,而且加速不都是用 jsdelivr 吗
    zeyezhan
        23
    zeyezhan  
    OP
       Aug 14, 2022
    @1002xin 是呀是呀~,原来大家早就知道这么多知识了😂
    saka1zd
        24
    saka1zd  
       Aug 14, 2022   ❤️ 1
    规则匹配速度应该不慢吧
    https://github.com/Dreamacro/clash/issues/1165#issuecomment-753739205


    另外我现在是用 meta core 替换 cfw 的 clash 内核,可以直接用 V 系软件比较全的 geosite 规则。
    https://github.com/MetaCubeX/Clash.Meta/tree/Meta

    ```
    rules:
    - GEOSITE,category-ads-all,REJECT
    - GEOSITE,icloud@cn,DIRECT
    - GEOSITE,apple@cn,DIRECT
    - GEOSITE,apple-cn,DIRECT
    - GEOSITE,microsoft@cn,DIRECT
    - GEOSITE,facebook,PROXY
    - GEOSITE,youtube,PROXY
    - GEOSITE,geolocation-cn,DIRECT
    - GEOSITE,geolocation-!cn,PROXY

    #GEOIP 规则
    - GEOIP,telegram,PROXY,no-resolve
    - GEOIP,private,DIRECT,no-resolve
    - GEOIP,cn,DIRECT
    ```
    jaoyina
        25
    jaoyina  
       Aug 21, 2022
    用机场自己的规则有啥问题吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5652 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 02:45 · PVG 10:45 · LAX 19:45 · JFK 22:45
    ♥ Do have faith in what you're doing.