Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

22 Commits

Folders and files

Repository files navigation

AdRulesUltra

Build and release AdRulesUltra rulesets Latest release Release downloads Ads domains Allow domains Malware domains Total rules MRS size

AdRulesUltra 是一个独立的广告与恶意域名规则聚合项目。它定时拉取多个上游 DNS 规则源,合并、去重并转换为多种客户端可直接使用的规则集,包括 mihomo .mrs、sing-box .srs、Clash YAML、dnsmasq、SmartDNS、Surge 与 AdGuard 文本。

当前合并的上游:

产物

GitHub Actions 会每天拉取上游仓库,生成并发布这些 Release 资产。下列文件名中的 {kind} 为 ads / allow / malware:

文件 适用 说明
adrules_ultra_{kind}.mrs mihomo / Clash Meta domain 二进制规则集
adrules_ultra_{kind}_ipcidr.mrs mihomo / Clash Meta ipcidr 二进制;空集也会发布(0 条规则的合法 MRS)
adrules_ultra_{kind}_singbox.srs sing-box >= 1.10 二进制 rule-set;exact / suffix / subdomain / wildcard 分别映射
adrules_ultra_{kind}_singbox.json sing-box source 编译 .srs 的源 JSON
adrules_ultra_{kind}_clash.yaml Clash / mihomo text behavior: domain payload
adrules_ultra_{kind}_clash_ipcidr.yaml Clash / mihomo text behavior: ipcidr;空集发布 payload: []
adrules_ultra_{kind}.txt mihomo text domain text rule-provider,保留 +. / . 原语义
adrules_ultra_{kind}_ipcidr.txt mihomo text ipcidr text;无规则时写注释占位,仍会发布
adrules_ultra_{kind}_domains.txt Pi-Hole 等 仅 exact + suffix 字面域名;不含 subdomain-only / wildcard
adrules_ultra_{kind}_surge.txt Surge DOMAIN / DOMAIN-SUFFIX / DOMAIN-WILDCARD / IP-CIDR
adrules_ultra_{kind}_surge2.txt Surge DOMAIN-SET exact 与 .suffix;不含 subdomain-only / wildcard
adrules_ultra_{kind}_adguard.txt AdGuard / 兼容工具 exact 保持 hosts 精确;suffix 用 `
adrules_ultra_{kind}_easylist.txt AdGuard Home DNS 与 adguard 文本同形
adrules_ultra_{ads,malware}_dnsmasq.conf dnsmasq 仅 suffix 阻断;不为 allow 生成
adrules_ultra_{ads,malware}_smartdns.conf SmartDNS 仅 suffix 阻断;不为 allow 生成
manifest.md - 本次转换统计和上游提交
stats.json - README 动态徽章读取的规则数量和 MRS 体积
SHA256SUMS - Release 资产校验和

使用教程

1. 直接使用 Release

使用 latest/download 地址即可长期订阅最新产物。推荐把本项目规则放进 sub-rules,让 @@ 例外规则使用 PASS:命中白名单时只退出 AdRulesUltra 子规则,后续仍会继续匹配你自己的代理、直连、地区分流规则。

rule-providers:
  adrules_ultra_allow:
    type: http
    behavior: domain
    format: mrs
    path: ./ruleset/adrules_ultra_allow.mrs
    url: https://github.com/Lynricsy/AdRulesUltra/releases/latest/download/adrules_ultra_allow.mrs
    interval: 86400

  adrules_ultra_allow_ipcidr:
    type: http
    behavior: ipcidr
    format: mrs
    path: ./ruleset/adrules_ultra_allow_ipcidr.mrs
    url: https://github.com/Lynricsy/AdRulesUltra/releases/latest/download/adrules_ultra_allow_ipcidr.mrs
    interval: 86400

  adrules_ultra_ads:
    type: http
    behavior: domain
    format: mrs
    path: ./ruleset/adrules_ultra_ads.mrs
    url: https://github.com/Lynricsy/AdRulesUltra/releases/latest/download/adrules_ultra_ads.mrs
    interval: 86400

  adrules_ultra_ads_ipcidr:
    type: http
    behavior: ipcidr
    format: mrs
    path: ./ruleset/adrules_ultra_ads_ipcidr.mrs
    url: https://github.com/Lynricsy/AdRulesUltra/releases/latest/download/adrules_ultra_ads_ipcidr.mrs
    interval: 86400

  adrules_ultra_malware:
    type: http
    behavior: domain
    format: mrs
    path: ./ruleset/adrules_ultra_malware.mrs
    url: https://github.com/Lynricsy/AdRulesUltra/releases/latest/download/adrules_ultra_malware.mrs
    interval: 86400

rules:
  - SUB-RULE,(NETWORK,tcp),adrules_ultra_filter
  - SUB-RULE,(NETWORK,udp),adrules_ultra_filter
  # 这里继续放你原本的代理、直连、地区分流规则。
  - MATCH,DIRECT

sub-rules:
  adrules_ultra_filter:
    - RULE-SET,adrules_ultra_allow,PASS
    - RULE-SET,adrules_ultra_allow_ipcidr,PASS,no-resolve
    - RULE-SET,adrules_ultra_ads,REJECT
    - RULE-SET,adrules_ultra_ads_ipcidr,REJECT,no-resolve
    - RULE-SET,adrules_ultra_malware,REJECT
    - MATCH,PASS

*_ipcidr 资产始终发布:有规则时用 mihomo 编译;无规则时写入已验证的 0 条规则空 MRS,以及带注释的 text / payload: [] YAML。
这样客户端订阅固定 URL 不会 404。stats.json 的 ipcidrs 计数会忽略注释占位行。

不要把 adrules_ultra_allow 直接写成 DIRECT,否则命中 @@ 例外的域名会强制直连,无法继续匹配你后面的代理规则。也不要把 PASS 白名单和 REJECT 拦截规则平铺在同一个 rules 列表里,否则白名单 PASS 后仍可能继续命中后面的广告拦截规则。

2. 手动下载校验

mkdir -p ruleset
cd ruleset

base=https://github.com/Lynricsy/AdRulesUltra/releases/latest/download
curl -fLO "$base/adrules_ultra_allow.mrs"
curl -fLO "$base/adrules_ultra_ads.mrs"
curl -fLO "$base/adrules_ultra_malware.mrs"
curl -fLO "$base/adrules_ultra_ads_ipcidr.mrs"
curl -fLO "$base/adrules_ultra_allow_ipcidr.mrs"
curl -fLO "$base/adrules_ultra_malware_ipcidr.mrs"
curl -fLO "$base/SHA256SUMS"

sed 's#  dist/#  #' SHA256SUMS | sha256sum -c --ignore-missing

SHA256SUMS 里会列出本次 Release 的全部资产;--ignore-missing 允许你只下载自己启用的规则集。空的 *_ipcidr 也会进入清单(0 条规则占位)。

3. 自动更新来源

仓库自带 GitHub Actions:每天 UTC 20:23 拉取四个上游,生成多格式文本,调用 mihomo 生成 .mrs、调用 sing-box 生成 .srs,再发布到 Release。需要立即刷新时,也可以在 Actions 页面手动运行 Build and release AdRulesUltra rulesets。

Release tag 约定:

  • 新 release 使用日期 tag:snapshot-YYYYMMDD(UTC 日期),例如 snapshot-20260727
  • release notes 会额外记录 CONTENT_ID(dist/SHA256SUMS 的 sha256 前 16 位),用于追溯转换器 + 上游 + 编译产物
  • 同日重跑:若远端同 tag 资产完整且 SHA256SUMS 一致则跳过发布;残缺或不一致会删除后重建,不再覆盖旧 asset
  • 历史长 tag(拼接上游完整哈希的旧格式)会保留,不影响 releases/latest 下载

转换策略

转换器只保留能被 mihomo domain / ipcidr MRS 安全表达的 DNS 级规则:

  • anti-AD 广告主列表直接读取 anti-ad-clash.yaml 的 payload
  • dead-horse 的 anti-ad-white-for-clash.yaml 会合入 adrules_ultra_allow
  • ||example.com^ 转为 +.example.com
  • @@||example.com^ 转入 adrules_ultra_allow
  • ||203.0.113.1^ 转为 203.0.113.1/32
  • ||216.239.35.0/24^ 转为 216.239.35.0/24
  • 0.0.0.0 ads.example.com 这类 hosts 规则转为 ads.example.com
  • ||example.com/path.js^、||example.com:8443^ 这类带 URL 路径/端口的规则会被跳过,不再静默扩大为整域拦截
  • ||ads*-normal*.example.com^ 这类可被 mihomo domain MRS 编译的 wildcard 会保留为 +.ads*-normal*.example.com
  • @@|blob:https://www.example.com 这类仅有 host、无路径/端口的 URL 例外会转入 adrules_ultra_allow
  • $important 会被接受,但 mihomo 只能靠规则顺序近似优先级
  • 导出其他格式时会区分:
    • exact: exact.example.com
    • suffix: +.example.com(apex + 子域)
    • subdomain-only: .example.com(仅子域,不命中 apex)
    • wildcard: 含 * 的模式
  • dnsmasq / SmartDNS 只接受明确的 suffix 阻断,exact 与 subdomain-only 不会被静默扩大
  • allow 不会输出 dnsmasq / SmartDNS 阻断配置

默认策略是保守转换:DNS/domain 规则集无法完整表达的语义一律跳过,而不是把路径、端口或修饰符降级成整域命中。带 @@ 的例外规则建议在 sub-rules 内用 PASS 近似“取消本项目拦截,然后回到主规则继续分流”。

这些规则会被跳过并写入统计:

  • 正则规则,例如 /example.*/
  • 带 URL 路径、query、fragment 或显式端口的规则(blocking / exception 均跳过)
  • 纯路径规则或无法解析 host 的 URL 规则
  • 只有 $domain= / $app= / $client= 这类条件、但没有拦截目标 host 的规则
  • 无法在 DNS 层完整表达的修饰符规则,例如 $script、$client、$dnstype、$dnsrewrite
  • 无法安全映射到 Clash wildcard 的复杂模式

本地运行

git clone --depth=1 https://github.com/liuzq2002/Adguard-Home-For-Magisk-Mod upstream-adguard
git clone --depth=1 https://github.com/privacy-protection-tools/anti-AD upstream-anti-ad
curl -fsSL https://raw.githubusercontent.com/privacy-protection-tools/dead-horse/master/anti-ad-white-for-clash.yaml -o upstream-anti-ad/anti-ad-white-for-clash.yaml
curl -fsSL https://raw.githubusercontent.com/lingeringsound/10007/main/reward -o upstream-coolapk-1007-reward.txt

uv run python -m scripts.build_rulesets \
  --adguard-source upstream-adguard \
  --anti-ad-source upstream-anti-ad \
  --coolapk-1007-reward-source upstream-coolapk-1007-reward.txt \
  --output dist \
  --adguard-commit "$(git -C upstream-adguard rev-parse HEAD)" \
  --anti-ad-commit "$(git -C upstream-anti-ad rev-parse HEAD)" \
  --dead-horse-commit "$(sha256sum upstream-anti-ad/anti-ad-white-for-clash.yaml | cut -d ' ' -f 1)" \
  --coolapk-1007-reward-commit "$(sha256sum upstream-coolapk-1007-reward.txt | cut -d ' ' -f 1)"

生成 .mrs 需要 mihomo,生成 .srs 需要 sing-box:

mihomo convert-ruleset domain text dist/adrules_ultra_ads.txt dist/adrules_ultra_ads.mrs
mihomo convert-ruleset domain text dist/adrules_ultra_allow.txt dist/adrules_ultra_allow.mrs
mihomo convert-ruleset domain text dist/adrules_ultra_malware.txt dist/adrules_ultra_malware.mrs

sing-box rule-set compile --output dist/adrules_ultra_ads_singbox.srs dist/adrules_ultra_ads_singbox.json
sing-box rule-set compile --output dist/adrules_ultra_allow_singbox.srs dist/adrules_ultra_allow_singbox.json
sing-box rule-set compile --output dist/adrules_ultra_malware_singbox.srs dist/adrules_ultra_malware_singbox.json

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages