V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
traffic
V2EX  ›  宽带症候群

有没有优雅的 Clash 规则修改方式

  •  2
     
  •   traffic · 310 天前 · 9198 次点击
    这是一个创建于 310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我目前的 CLASH 订阅使用方式是


    Parser 很好用,能够添加策略组、新订阅、新节点等等。

    但是手机、路由器该怎么办呢? Parser 是 Clash For Windows 独有的功能。


    所以想请教各位,有没有什么办法能够直接在订阅链接里就将规则自定义(基于某个现有规则修改)完成,而不需要依赖于特定客户端。

    这样既不用自己维护基础规则,又能根据自己的需要进行修改,同时不局限于某个客户端实现。

    订阅链接例子:

    https://acl4ssr-sub.github.io//sub?target=clash&new_name=true&url=<订阅链接>&insert=false&config=https%3A%2F%2Fraw.githubusercontent.com%2FACL4SSR%2FACL4SSR%2Fmaster%2FClash%2Fconfig%2FACL4SSR_Online_Full_MultiMode.ini&emoji=true&list=false&tfo=false&scv=false&fdn=false&sort=false&clash.doh=true&new_name=true&append_type=true&udp=true&scv=true
    

    Parser 例子:

    parsers: # array
      #匹配所有这个开头的规则
      - reg: https://(acl4ssr-sub|sub.xeton).dev.+$
        yaml:
          #mix-object:
           # authentication:
            #  - "proxy:K"
          append-proxies: #添加自定义节点
            - name: "socks5 代理"
              type: socks5
              server: geo.
              port: 42
              username: 
              password: 
              # tls: true
              # skip-cert-verify: true
              # udp: true
          append-proxy-groups: # 添加自定义策略组
            - name: 🇹🇷 土耳其节点
              type: select
              url: http://www.gstatic.com/generate_204
              interval: 300
              proxies:
                - DIRECT
                - 🚀 节点选择
            - name: 🇪🇺 欧洲节点
              type: select
              url: http://www.gstatic.com/generate_204
              interval: 300
              proxies:
                - DIRECT
                - 🚀 节点选择
            - name: 🇪🇺 欧盟节点
              type: select
              url: http://www.gstatic.com/generate_204
              interval: 300
              proxies:
                - DIRECT
                - 🚀 节点选择
            - name: 🚰 大流量
              type: select
              url: http://www.gstatic.com/generate_204
              interval: 300
              proxies:
                - DIRECT
              use:
                - hightraffic
                #- hightraffic2
            - name: 🚰 大流量选择器
              type: select
              url: http://www.gstatic.com/generate_204
              interval: 300
              proxies:
                - DIRECT
              use:
                - hightraffic
                #- hightraffic2
            - name: 🚰 大流量负载均衡
              type: load-balance
              url: http://www.gstatic.com/generate_204
              interval: 300
              use:
                - hightraffic
                #- hightraffic2
            - name: 🚰 大流量自动选择
              type: url-test
              url: http://www.gstatic.com/generate_204
              interval: 300
              use:
                - hightraffic
                #- hightraffic2
          mix-proxy-providers:  #添加自定义规则组
            hightraffic: 
              type: http 
              path: ./Proxy/hightraffic.yaml 
              #大流量机场的订阅链接,需要是 clash 格式
              url: https://
              interval: 21600 
              health-check:  
                  enable: true
                  url: http://www.gstatic.com/generate_204
                  interval: 300
          commands:
            # 向 策略组 内添加节点
            #- proxy-groups.🚰 大流量.proxies=[]proxyNames|^(?=(.Trojan.*(香港)))\1((?!(Hongkong)).)*$
            #- proxy-groups.🚰 大流量负载均衡.proxies=[]proxyNames|^(?=(.Trojan.*(香港)))\1((?!(Hongkong)).)*$
            # 向 其他策略组 添加 该策略组
            - proxy-groups.🚀 节点选择.proxies.0+🚰 大流量 # 向 🚀 节点选择 策略组添加组名🚰大流量  
            - proxy-groups.🚀 节点选择.proxies.0+🚰 大流量负载均衡
            - proxy-groups.🚀 节点选择.proxies.0+🚰 大流量自动选择
            - proxy-groups.Ⓜ️ 微软云盘.proxies.0+🚰 大流量
            - proxy-groups.Ⓜ️ 微软云盘.proxies.0+🚰 大流量负载均衡
            - proxy-groups.Ⓜ️ 微软云盘.proxies.0+🚰 大流量自动选择
    
          prepend-rules:  #添加自定义规则
            # 自定义开始
            - DOMAIN-SUFFIX,example.com,♻️ 自动选择
    38 条回复    2023-12-21 21:40:05 +08:00
    enzyme
        1
    enzyme  
       310 天前 via iPhone
    用 proxy-providers 和 rule-providers
    eb0c6551
        2
    eb0c6551  
       310 天前
    我也想找到一个比较好的办法,我目前用免费的 Cloudflare Workers ,直接暴力替换和编辑 yaml 文件再返回,相当于自己又订阅“转换”了一层。
    SenLief
        3
    SenLief  
       310 天前 via iPhone
    自己托管规则在 gist ,然后修改 gist 更新即可。
    aptupdate
        4
    aptupdate  
       310 天前 via iPhone   ❤️ 2
    https://github.com/LittlePonyX/ClashXKindly-config
    可以试试这个,如果是 Meta 内核的话就能更简单点。
    AS4694lAS4808
        5
    AS4694lAS4808  
       310 天前 via Android
    目前是一个文件写好所有规则,包括 proxy ,proxy-provider ,rule-provider ,精心设置的 rule (比如 MATCH 选择, 选择 use Direct 和一个 proxy-provider ,方便随时切换白名单模式和 gfw 模式),然后传到公网私有 git ,供所有客户端订阅。
    shunia
        6
    shunia  
       310 天前
    1 楼正解,我也是上个月才知道的。需要根据原始订阅链接,手写一份 yml ,以后就基本可以一劳永逸了。

    ```
    proxy-providers:
    {定一个名字比如机场}:
    url: {clash 的原始订阅链接}
    {...其他字段比如更新频率}

    rule-providers:
    reject:
    url: {三方规则的链接,比如 Loyalsoldier 或者 ACL4SSR}
    {...其他规则}
    ```

    剩下的内容保留原始订阅文件的大部分内容,去掉并对应更改原始订阅里的 rules 就好了。

    另外还学了一个 relay 的设置方法,感觉有的时候也挺有用的: https://gist.github.com/miaomiaoclub/6947f7cb93846301f1658da0edcd61bf
    kongxiao00532
        7
    kongxiao00532  
       310 天前
    马一波 每次更新以后改规则太痛苦了
    sp670
        8
    sp670  
       310 天前   ❤️ 1
    一直记事本手搓的路过。。。
    ryalu
        9
    ryalu  
       310 天前   ❤️ 1
    用 proxy-providers 和 rule-providers, 自己定义好模版,然后自己弄个脚本解析下订阅链接并填充到模板中,这个只需要手动生成一次就行。我自己搞了个可以参考下 https://github.com/ryan961/clashset
    banmuyutian
        10
    banmuyutian  
       310 天前   ❤️ 1
    我的做法:fork 一份 ACL4SSR 按个人需求修改,部署 subconverter 到自己的轻量服务器,这样多端都可以拿到统一配置了
    happy23
        12
    happy23  
       310 天前 via iPhone
    前段时间刚在捣鼓,目前是自己搭建了 subconverter ,然后在 subconverter 自定义了规则。
    ae
        13
    ae  
       310 天前
    关注一下
    xipuxiaoyehua
        14
    xipuxiaoyehua  
       310 天前
    有没有可能 subconveter 就可以自定义配置呢
    zhywang
        15
    zhywang  
       310 天前
    自己写个 python 脚本,定义好分组逻辑,然后用这个脚本生成最终的 yml 不就好了,估计简单需求逻辑代码 100 行以内就可以搞定
    K8dcnPEZ6V8b8Z6
        16
    K8dcnPEZ6V8b8Z6  
       310 天前
    自己手搓 然后把原始规则作为 provider 就好
    规则这种东西真的只能各用各的
    Mrcocoa
        17
    Mrcocoa  
       310 天前
    之前用的 proxy-providers ,在 mac clash pro ,整合了两三和机场的节点,然后每次点开 clash 选节点就很卡,难道节点太多了?
    xausky
        18
    xausky  
       310 天前
    自己写 config 挂到 gist 然后 subconverter 连接里面贴上自己的配置地址就像我这个: https://gist.github.com/xausky/44a5472f515713067202faa649ea303f/raw/rules.ini
    traffic
        19
    traffic  
    OP
       310 天前
    可能有几位误解了,不是说要在 subconverter 中自定义配置地址。

    subconverter 中已经添加了 ACL4SSR 的配置,然后导入到 Clash For Windows ,再进行修改。

    我目前让 AI 写了一个 Cloudflare Workers 脚本,相当于在线实现 Clash For Windows 的 Parsers 。
    但很可惜不能用,我不懂 JS 所以没办法排错,有没有大佬看看
    即:
    - 传入 2 个 YAML ,一个完整的原始 Clash YAML 配置,一个和 Clash For Windows 的 Parsers 一样的 YAML
    - 根据 Parsers 对原始 YAML 进行修改
    - 返回修改过的 YAML

    https://paste.gg/p/anonymous/7af30bc8183949f5ad3a6b3293bc1315
    sheg
        20
    sheg  
       310 天前   ❤️ 1
    NoInternet
        21
    NoInternet  
       310 天前
    我是在 openclash 里编辑,然后从配置文件里复制出来
    MYDB
        22
    MYDB  
       310 天前 via iPhone
    根据 wiki 说明所有内容纯手写的……用到哪个写哪个,至于节点订阅更新,稍微大点的机场半年不会变
    Mythologyli
        23
    Mythologyli  
       310 天前 via Android
    @traffic 直接在 ACL4SSR 基础上改好,写个新的 config 给 subconvertor 用就好,为啥要在客户端改
    tony1016
        24
    tony1016  
       310 天前
    我放在自建的 nextcloud ,用 proxy-provider 引入机场,规则自定义
    traffic
        25
    traffic  
    OP
       310 天前
    @Mythologyli #23 首先是因为手动覆盖规则比较麻烦,其次是自动更新上游也比较麻烦,再者是规则里面似乎是不能添加节点的?
    LAMoon
        26
    LAMoon  
       310 天前
    直接 github 自己写一个就行了
    Solar666
        27
    Solar666  
       310 天前
    🐎
    Yuesh1
        28
    Yuesh1  
       309 天前
    Mythologyli
        29
    Mythologyli  
       309 天前
    @traffic
    https://imgur.com/a/wrbydFY
    更新上游的话,config 里可以直接用 URL 的方式使用上游的规则 list ,连手动 Merge 都省了。自己的规则 /分组额外加进去就可以
    如果需要覆盖 ACL4SSR 已有的规则,直接自己创一个规则排在最前面,Clash 会优先匹配
    至于添加节点,这就是 subconverter 的基本功能,可以看看 subconverter 的 README
    traffic
        30
    traffic  
    OP
       309 天前
    @Mythologyli #29 我知道可以 subconverter 可以添加,但我是将某个订阅的所有节点添加到某个组,比如大流量机场订阅单独放一个组,而不合并到原策略组中。
    而覆盖规则我分的节点比较杂,ruleset 这种写法不太适合我,且可能要根据机场调整。
    f0rger
        31
    f0rger  
       308 天前 via iPhone
    其实上面都说了,subconverter 本身就支持自定义,包括你说的 cfw 以及其他的设备,最多就是 ini 配置不一样,这点你可以直接在 worker 里面判断来源的 ua 头使用不同的 ini 就可以实现了。你所使用的 acl 那个配置你有打开看看吗,你打开看看就明白了,不明白的就看 acl 的在 gh 上的那个文档
    VxJiahua
        32
    VxJiahua  
       307 天前 via Android
    我只知道软路由 openclash ,自己写策略组
    wayne3602
        33
    wayne3602  
       246 天前
    @shunia 请问这个 relay 是什么意思呢?我导入自建的节点(节点都有效),在节点选择里选了 iRimo Private Relay ,但是 iRimo Private Relay 的延迟超时,但可以科学上网,他是类似于自动选择吗
    shunia
        34
    shunia  
       244 天前
    @wayne3602 #33 relay 已经被 tunnel 代替了,可以搜一下帖子,和我发的 gist 是同一个作者。
    作用我个人觉得是两个:
    一个是确保出口 ip 稳定,某些情况下有点用;
    一个是你有一个高速稳定的国内中转的机场,可以拿它的高速中转衔接任何目标服务器,基本上可以无视目标服务器的网络(实际还是受延迟影响的);

    比如你有 oracle 的免费服务器但是直连很渣,那么前面配一个贼便宜的高速中转机场,就可以把 oracle 变成可以高速访问了。不过注意是浪费两次流量。

    不过话说回来,实际情况下可能作用都很有限,我配好了一个 tunnel ,大部分情况下不如我的机场本身稳定和快速,比较鸡肋。
    wayne3602
        35
    wayne3602  
       244 天前 via Android
    @shunia 有点高级哈哈,研究研究
    HeMinWon
        36
    HeMinWon  
       134 天前
    @enzyme proxy-providers 如何做正则匹配
    traffic
        37
    traffic  
    OP
       98 天前
    让 GPT4 写了一个 python 版的,command 实现有点不正确,其他的基本没啥问题。
    我 command 用的不多懒得改了,使用方法已经写在里面了。

    https://paste.gg/p/anonymous/907d4221f0234c07b3ef55bbc37e104e
    traffic
        38
    traffic  
    OP
       98 天前
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2794 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:21 · PVG 20:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.