mihomo icon indicating copy to clipboard operation
mihomo copied to clipboard

[Feature] mrs支持AdGuard规则转换

Open ivECySinTaN opened this issue 1 year ago • 8 comments

Verify steps

  • [X] 我已经在 Issue Tracker 中找过我要提出的请求 I have searched on the issue tracker for a related feature request.
  • [X] 我已经仔细看过 Documentation 并无法找到这个功能 I have read the documentation and was unable to solve the issue.

Description

今天升级meta内核,发现开始搞mrs格式的规则文件了,好事,节省内存.

就是不知道能否参考下singbox,https://github.com/SagerNet/sing-box/commit/439f181f80fef985cb1d8cc8e71d6d0fd36dbb75 https://sing-box.sagernet.org/configuration/rule-set/adguard/ 支持把现成的AdGuard规则转换成mrs的.虽然通过域名作为广告拦截用途作用有限,但能过滤隐私收集和一半以上的广告还是没问题的,希望开发者能考虑下.

另外,mrs作为二进制文件,是否应不再区分domain或ipcidr,就是说可以用mihomo convert-ruleset yaml/text XXX.yaml XXX.mrs转换成既包含domain又包含ipcidr的mrs规则文件(类似classical?

Possible Solution

No response

ivECySinTaN avatar Sep 04 '24 08:09 ivECySinTaN

mrs 仅为 domain-set 内存映射,用于减少加载时分支内存和 CPU 占用率。和减少内存问题无关

Skyxim avatar Sep 04 '24 08:09 Skyxim

@ivECySinTaN 请自行将adg的dns规则转换成clash域名格式再转换即可

xishang0128 avatar Sep 04 '24 08:09 xishang0128

至于 Adguard DNS filter 规则存在大量三方规则提供者转换的 domain-set 格式

Skyxim avatar Sep 04 '24 08:09 Skyxim

mrs 仅为 domain-set 内存映射,用于减少加载时分支内存和 CPU 占用率。和减少内存问题无关

那看来是我太久没更新的问题,我原本内存占用在140M左右,更新后变成90M左右了

请自行将adg的dns规则转换成clash域名格式再转换即可 至于 Adguard DNS filter 规则存在大量三方规则提供者转换的 domain-set 格式

提出这个请求有这么个原因

比如有规则中有a.com和b.com分别需要直连和代理 其中x.a.com和y.b.com是广告规则 但js.x.a.com和api.y.b.com是又分别需要直连和代理

DOMAIN,js.x.a.com,DIRECT DOMAIN,api.y.b.com,PROXY DOMAIN-SUFFIX,x.a.com,REJECT DOMAIN-SUFFIX,y.b.com,REJECT DOMAIN-SUFFIX,a.com,DIRECT DOMAIN-SUFFIX,b.com,PROXY

写成ruleset需要5个文件 RULE-SET,A,DIRECT RULE-SET,B,PROXY RULE-SET,C,REJECT RULE-SET,E,DIRECT RULE-SET,F,PROXY

而转换的Adguard规则只需要3个文件

一份由Adguard规则转换的mrs文件 @@||js.x.a.com^ @@||api.y.b.com^ ||x.a.com^ ||y.b.com^

RULE-SET,mrs文件,REJECT RULE-SET,E,DIRECT RULE-SET,F,PROXY

嘴有点笨,说的不是能清楚,但是大致这么个意思,希望谅解

ivECySinTaN avatar Sep 04 '24 09:09 ivECySinTaN

一份由Adguard规则转换的mrs文件 @@||js.x.a.com^ @@||api.y.b.com^ ||x.a.com^ ||y.b.com^

这是无法做到的,一个集合肯定一个是一个策略。这是设计目标

Skyxim avatar Sep 04 '24 09:09 Skyxim

这是无法做到的,一个集合肯定一个是一个策略

不行吗? 等于是 @@||js.x.a.com^ @@||api.y.b.com^ 这两个标记为跳过

然后拦截 ||x.a.com^ ||y.b.com^

我是看singbox可以的,但又无法抛弃clash的fallback 所以来提一提,不行就算了,五个就五个文件吧 打扰了,不好意思 添麻烦了

ivECySinTaN avatar Sep 04 '24 09:09 ivECySinTaN

adguard的文本替换或者过滤js中的关键字有语法吗

nil-ref avatar Sep 07 '24 03:09 nil-ref

这是无法做到的,一个集合肯定一个是一个策略

不行吗? 等于是 @@||js.x.a.com^ @@||api.y.b.com^ 这两个标记为跳过

然后拦截 ||x.a.com^ ||y.b.com^

我是看singbox可以的,但又无法抛弃clash的fallback 所以来提一提,不行就算了,五个就五个文件吧 打扰了,不好意思 添麻烦了

插一句嘴,我看anti-ad现在在他的girhub上提供mrs的规则了 你可以看一下 https://github.com/privacy-protection-tools/anti-AD

k3bc999 avatar Dec 04 '24 13:12 k3bc999