关于clash-verge merge 如何使用

之前写了个clash verge脚本订阅分享,有人问如何自定义规则的问题,我简单说下:

js脚本方式

function main(params) 传入了 params 参数是整个订阅文件的信息,是把yml配置转成js对象了,通过修改它的rules属性就可以更改/覆盖,如下图
image
js 脚本需要相关编程知识,这里就不说这种方式修改规则了;

下面是正题:

merge 方式修改

新建一个订阅,类型选择merge,保存后右键编辑文件:

配置文件是yml格式
要追加规则需要在这两个属性下写,prepend-rules: 在已有规则前追加, append-rules: 在已有规则后追加。

规则将按照从上到下的顺序匹配,列表顶部的规则优先级高于其底下的规则;因为一般机场配置最后有个 - MATCH,🐟 漏网之鱼 所以你写到append-rules 的规则都不会生效
所以建议写到prepend-rules

举例

DOMAIN,baidu.com,DIRECT
语法说明:
两个逗号分隔内容,依次是匹配类型,匹配值,代理或代理组或内置策略

上述规则意思就是: 使用域名匹配,匹配baidu.com, 匹配到后的策略是直连

内置策略: 文档

注:
如何要使用代理或代理组,一定要确认其名字是否存在,比如你按照某个机场写了个merge规则:DOMAIN-SUFFIX,google.com,🚀 节点选择,但是换了个机场规则就没用了,因为另一个机场没有名字叫🚀 节点选择的代理组or代理;

有多个merge和js 订阅时,注意顺序,因为是链式执行,比如说用了这里我分享的js 后,merge写规则就用不了机场里的代理组名了,因为js里把代理组覆盖了,只能用js里的代理组名了;或者你先添加了一个merge,然后再加我写的js脚本,那么你写的merge就不生效了,因为我js里是直接覆盖了规则;

效果:


其他
使用在线规则的merge配置:
自行把🛜代理模式替换成你自己使用机场的代理组名称

prepend-rules:
  - RULE-SET,applications,DIRECT
  - DOMAIN,clash.razord.top,DIRECT
  - DOMAIN,yacd.haishan.me,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,no-resolve
  - RULE-SET,cncidr,DIRECT,no-resolve
  - RULE-SET,telegramcidr,🛜代理模式,no-resolve
  - GEOIP,LAN,DIRECT,no-resolve
  - GEOIP,CN,DIRECT,no-resolve

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400
  icloud:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
    path: ./ruleset/icloud.yaml
    interval: 86400
  apple:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
    path: ./ruleset/apple.yaml
    interval: 86400
  google:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./ruleset/google.yaml
    interval: 86400
  proxy:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400
  direct:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400
  private:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
    path: ./ruleset/private.yaml
    interval: 86400
  gfw:
    type: http
    behavior: domain
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
    path: ./ruleset/gfw.yaml
    interval: 86400
  tld-not-cn:
    type: http
    behavior: domain
    url: "https://fastly.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://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
    path: ./ruleset/telegramcidr.yaml
    interval: 86400
  cncidr:
    type: http
    behavior: ipcidr
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400
  lancidr:
    type: http
    behavior: ipcidr
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
    path: ./ruleset/lancidr.yaml
    interval: 86400
  applications:
    type: http
    behavior: classical
    url: "https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt"
    path: ./ruleset/applications.yaml
    interval: 86400

更多细节可以参考文档 路由规则 - 虚空终端 Docs

33 个赞

高级,赞

感谢分享使用技巧

支持大佬!想问下merge可不可以改dns呢?默认机场配置把dns开了,可是我在校园网里用不了

merge里可以直接写dns属性进行覆盖

2 个赞

好的,谢谢大佬,这样容易多了哈哈

太强了佬!

我从来没管过这个,都是直接导入使用完事

感谢分享

感谢分享

感谢分享

感谢楼主科普

厉害了

记错了,修改下。

:crab::crab:带佬:cow::beer:

太全了 抱拳了 热佬

感激

学习一个了,佬们 :saluting_face:

很详细!解决了我的疑惑 :+1:

学到了