技术深度解析
`johnshall/shadowrocket-adblock-rules-forever` 的核心是一个规则聚合与优化引擎。该项目并未发明新的广告拦截技术,而是擅长将现有的拦截列表组合成单一的、针对 Shadowrocket 优化的格式。其工作流程非常直接:一个 GitHub Actions 定时任务每天在 UTC 时间 8:00 触发构建过程。构建脚本从多个来源获取规则,包括:
- EasyList – 通用网页广告拦截的黄金标准。
- EasyPrivacy – 专注于跟踪和分析域名。
- AdGuard DNS filter – 用于 DNS 级别拦截的全面列表。
- NeoDev Hosts – 一个社区维护的、针对中文广告网络的主机文件。
- 自定义补充 – 针对 iOS 特定应用和服务的手动精选规则。
然后,脚本执行去重、按优先级排序规则,并将其转换为 Shadowrocket 的 `RULE-SET` 格式。这种格式是一个纯文本文件,每行指定一个域名或 IP 范围以及相应的操作(例如 `DOMAIN-SUFFIX,doubleclick.net,REJECT`)。输出是一个单一的 `.conf` 文件,用户通过原始 GitHub URL 订阅。
性能考量: Shadowrocket 按顺序处理规则,因此项目维护者优化了规则顺序以最小化延迟。高流量广告域名(例如 `googleadservices.com`、`amazon-adsystem.com`)被放置在列表顶部附近,以确保快速匹配。该规则集目前包含约 150,000 条条目,对于现代 iOS 设备来说是可以接受的。基准测试显示,使用此规则集,Shadowrocket 平均每次请求增加的延迟不到 5 毫秒,而基于完整 VPN 的拦截器则为 15-30 毫秒。
| 指标 | shadowrocket-adblock-rules-forever | AdGuard Pro (iOS) | 1Blocker (iOS) |
|---|---|---|---|
| 规则数量 | ~150,000 | ~200,000 | ~100,000 |
| 更新频率 | 每日(自动) | 每周(手动) | 每两周(手动) |
| 平均每次请求延迟 | <5ms | 8-12ms | 6-10ms |
| 电池影响(每小时) | ~1% | ~3% | ~2% |
| 费用 | 免费 | $9.99/年 | $4.99/年 |
| GitHub 星标 | 27,961 | 不适用 | 不适用 |
数据要点: 该项目自动化的每日更新和轻量级规则集使其在延迟和电池效率方面具有明显的性能优势,优于商业替代方案。代价是规则数量略少,但经过精心策划的特性意味着误报更少。
该项目还维护了一个次要规则集,供希望进行更激进拦截的用户使用,包括针对社交媒体小部件、评论区和 Cookie 同意横幅的规则。这种模块化方法允许用户选择所需的过滤级别,而不会使主要规则文件变得臃肿。
关键参与者与案例研究
要理解这个项目的成功,必须审视 iOS 广告拦截的更广泛生态。Shadowrocket 本身是一个第三方代理客户端,可在 App Store 上获取,由一位中国独立开发者开发。它支持多种代理协议(Shadowsocks、V2Ray、Trojan 等)和一个强大的基于规则的路由引擎。该应用售价 $2.99,多年来一直是中国 iOS 社区的中流砥柱,但随着用户寻求替代那些耗电且拖慢连接的基于 VPN 的广告拦截器,其全球采用率也在增长。
维护者: GitHub 用户 `johnshall` 是一位化名开发者,一直活跃在中国开源社区。他还维护着其他几个基于规则的项目,包括一套用于绕过地理限制的代理规则。广告拦截规则项目最初是个人对一个较旧、现已废弃的仓库的复刻,但 `johnshall` 添加了关键的每日重建自动化功能,使其变得可靠。
竞争项目: 其他几个 GitHub 仓库提供类似功能,但都没有达到相同的星标数量或社区信任度。
| 项目 | 星标 | 更新频率 | 规则数量 | 显著特点 |
|---|---|---|---|---|
| johnshall/shadowrocket-adblock-rules-forever | 27,961 | 每日 | ~150K | 自动重建、精心策划、低延迟 |
| blackmatrix7/ios_rule_script | 18,200 | 每周 | ~200K | 包含流媒体服务规则 |
| lhie1/Rules | 5,400 | 每月 | ~80K | 专注于中文应用 |
| DivineEngine/Profiles | 3,100 | 每两周 | ~120K | 模块化规则集 |
数据要点: 星标数量差异显著。`johnshall` 的项目比最接近的竞争对手多出近 10,000 颗星,这表明每日更新频率和可靠性是关键差异化因素。用户显然看重一个无需他们手动检查更新的规则集。
案例研究:微信问题。 iOS 广告拦截器面临的最大挑战之一是处理超级应用(如微信)内的广告。微信从广泛的域名动态加载广告,其中许多域名也用于合法内容。`shadowrocket-adblock-rules-forever` 项目有一个专门针对微信广告域名的部分,并持续更新以应对微信频繁的域名变更。