有没有优雅的 Clash 规则修改方式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
traffic
V2EX    宽带症候群

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

  •  2
     
  •   traffic 2023-05-24 02:10:18 +08:00 17269 次点击
    这是一个创建于 876 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我目前的 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, 自动选择
    41 条回复    2025-04-26 16:35:39 +08:00
    enzyme
        1
    enzyme  
       2023-05-24 05:46:43 +08:00 via iPhone
    用 proxy-providers 和 rule-providers
    eb0c6551
        2
    eb0c6551  
       2023-05-24 05:55:41 +08:00
    我也想找到一个比较好的办法,我目前用免费的 Cloudflare Workers ,直接暴力替换和编辑 yaml 文件再返回,相当于自己又订阅“转换”了一层。
    SenLief
        3
    SenLief  
       2023-05-24 07:22:26 +08:00 via iPhone
    自己托管规则在 gist ,然后修改 gist 更新即可。
    aptupdate
        4
    aptupdate  
      nbsp;2023-05-24 07:34:29 +08:00 via iPhone   2
    https://github.com/LittlePonyX/ClashXKindly-config
    可以试试这个,如果是 Meta 内核的话就能更简单点。
    AS4694lAS4808
        5
    AS4694lAS4808  
       2023-05-24 07:42:27 +08:00 via Android
    目前是一个文件写好所有规则,包括 proxy ,proxy-provider ,rule-provider ,精心设置的 rule (比如 MATCH 选择, 选择 use Direct 和一个 proxy-provider ,方便随时切换白名单模式和 gfw 模式),然后传到公网私有 git ,供所有客户端订阅。
    shunia
        6
    shunia  
       2023-05-24 09:46:38 +08:00
    1 楼正解,我也是上个月才知道的。需要根据原始订阅链接,手写一份 yml ,以后就基本可以一劳永逸了。

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

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

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

    另外还学了一个 relay 的设置方法,感觉有的时候也挺有用的: https://gist.github.com/miaomiaoclub/6947f7cb93846301f1658da0edcd61bf
    kongxiao00532
        7
    kongxiao00532  
       2023-05-24 09:49:05 +08:00
    马一波 每次更新以后改规则太痛苦了
    sp670
        8
    sp670  
       2023-05-24 10:06:09 +08:00   1
    一直记事本手搓的路过。。。
    ryan961
        9
    ryan961  
       2023-05-24 10:16:56 +08:00   1
    用 proxy-providers 和 rule-providers, 自己定义好模版,然后自己弄个脚本解析下订阅链接并填充到模板中,这个只需要手动生成一次就行。我自己搞了个可以参考下 https://github.com/ryan961/clashset
    banmuyutian
        10
    banmuyutian  
       2023-05-24 10:17:01 +08:00  
    我的做法:fork 一份 ACL4SSR 按个人需求修改,部署 subconverter 到自己的轻量服务器,这样多端都可以拿到统一配置了
    lihang1329
        11
    lihang1329  
       2023-05-24 10:38:53 +08:00
    happy23
        12
    happy23  
       2023-05-24 10:55:07 +08:00 via iPhone
    前段时间刚在捣鼓,目前是自己搭建了 subconverter ,然后在 subconverter 自定义了规则。
    ae
        13
    ae  
       2023-05-24 11:19:19 +08:00
    关注一下
    XiaoyehuaDev
        14
    XiaoyehuaDev  
       2023-05-24 11:20:32 +08:00
    有没有可能 subconveter 就可以自定义配置呢
    zhywang
        15
    zhywang  
       2023-05-24 11:45:58 +08:00
    自己写个 python 脚本,定义好分组逻辑,然后用这个脚本生成最终的 yml 不就好了,估计简单需求逻辑代码 100 行以内就可以搞定
    K8dcnPEZ6V8b8Z6
        16
    K8dcnPEZ6V8b8Z6  
       2023-05-24 11:49:37 +08:00
    自己手搓 然后把原始规则作为 provider 就好
    规则这种东西真的只能各用各的
    Mrcocoa
        17
    Mrcocoa  
       2023-05-24 15:43:43 +08:00
    之前用的 proxy-providers ,在 mac clash pro ,整合了两三和机场的节点,然后每次点开 clash 选节点就很卡,难道节点太多了?
    irrigate2554
        18
    irrigate2554  
       2023-05-24 16:44:48 +08:00
    自己写 config 挂到 gist 然后 subconverter 连接里面贴上自己的配置地址就像我这个: https://gist.github.com/xausky/44a5472f515713067202faa649ea303f/raw/rules.ini
    traffic
        19
    traffic  
    OP
       2023-05-24 17:00:34 +08:00
    可能有几位误解了,不是说要在 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  
       2023-05-24 17:27:00 +08:00   1
    NoInternet
        21
    NoInternet  
       2023-05-24 17:46:06 +08:00
    我是在 openclash 里编辑,然后从配置文件里复制出来
    MYDB
        22
    MYDB  
       2023-05-24 18:00:19 +08:00 via iPhone
    根据 wiki 说明所有内容纯手写的……用到哪个写哪个,至于节点订阅更新,稍微大点的机场半年不会变
    Mythologyli
        23
    Mythologyli  
       2023-05-24 18:44:44 +08:00 via Android
    @traffic 直接在 ACL4SSR 基础上改好,写个新的 config 给 subconvertor 用就好,为啥要在客户端改
    tony1016
        24
    tony1016  
       2023-05-24 19:02:58 +08:00
    我放在自建的 nextcloud ,用 proxy-provider 引入机场,规则自定义
    traffic
        25
    traffic  
    OP
       2023-05-24 19:29:45 +08:00
    @Mythologyli #23 首先是因为手动覆盖规则比较麻烦,其次是自动更新上游也比较麻烦,再者是规则里面似乎是不能添加节点的?
    LAMoon
        26
    LAMoon  
       2023-05-24 20:11:33 +08:00
    直接 github 自己写一个就行了
    Solar666
        27
    Solar666  
       2023-05-24 20:13:36 +08:00
    Yuesh1
        28
    Yuesh1  
       2023-05-24 20:26:21 +08:00
    Mythologyli
        29
    Mythologyli  
       2023-05-25 01:06:18 +08:00
    @traffic
    https://imgur.com/a/wrbydFY
    更新上游的话,config 里可以直接用 URL 的方式使用上游的规则 list ,连手动 Merge 都省了。自己的规则 /分组额外加进去就可以
    如果需要覆盖 ACL4SSR 已有的规则,直接自己创一个规则排在最前面,Clash 会优先匹配
    至于添加节点,这就是 subconverter 的基本功能,可以看看 subconverter 的 README
    traffic
        30
    traffic  
    OP
       2023-05-25 01:53:09 +08:00
    @Mythologyli #29 我知道可以 subconverter 可以添加,但我是将某个订阅的所有节点添加到某个组,比如大流量机场订阅单独放一个组,而不合并到原策略组中。
    而覆盖规则我分的节点比较杂,ruleset 这种写法不太适合我,且可能要根据机场调整。
    f0rger
        31
    f0rger  
       2023-05-25 23:09:51 +08:00 via iPhone
    其实上面都说了,subconverter 本身就支持自定义,包括你说的 cfw 以及其他的设备,最多就是 ini 配置不一样,这点你可以直接在 worker 里面判断来源的 ua 头使用不同的 ini 就可以实现了。你所使用的 acl 那个配置你有打开看看吗,你打开看看就明白了,不明白的就看 acl 的在 gh 上的那个文档
    VxJiahua
        32
    VxJiahua  
       2023-05-27 11:40:02 +08:00 via Android
    我只知道软路由 openclash ,自己写策略组
    wayne3602
        33
    wayne3602  
       2023-07-27 15:55:13 +08:00
    @shunia 请问这个 relay 是什么意思呢?我导入自建的节点(节点都有效),在节点选择里选了 iRimo Private Relay ,但是 iRimo Private Relay 的延迟超时,但可以科学上网,他是类似于自动选择吗
    shunia
        34
    shunia  
       2023-07-28 22:12:09 +08:00
    @wayne3602 #33 relay 已经被 tunnel 代替了,可以搜一下帖子,和我发的 gist 是同一个作者。
    作用我个人觉得是两个:
    一个是确保出口 ip 稳定,某些情况下有点用;
    一个是你有一个高速稳定的国内中转的机场,可以拿它的高速中转衔接任何目标服务器,基本上可以无视目标服务器的网络(实际还是受延迟影响的);

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

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

    https://paste.gg/p/anonymous/907d4221f0234c07b3ef55bbc37e104e
    traffic
        38
    traffic  
    OP
       2023-12-21 21:40:05 +08:00
    traffic
        39
    traffic  
    OP
       2024-10-10 20:44:19 +08:00
    发现了这个项目,已经用上了
    https://github.com/InoryS/Clash-Parser-Online
    alun8522
        40
    alun8522  
       177 天前
    @traffic 大佬 这个有相关使用教程么 我现在的需求是想要 服务器上的 clash 能支持类似 windows 客户端 clash verge 的全局扩展脚本功能
    traffic
        41
    traffic  
    OP
       172 天前
    @alun8522 #40 就是这种功能啊,教程他不都写了吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     871 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:59 PVG 04:59 LAX 13:59 JFK 16:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86