Shadowrocket 广告屏蔽规则深度配置与优化实战指南

基础概念与工作原理

1 规则匹配机制

Shadowrocket 采用自上而下的规则匹配策略,一旦匹配成功即停止后续检查,广告屏蔽的核心逻辑是:

  • REJECT:直接阻断连接(返回空响应或重置连接)
  • PROXY/DIRECT:正常放行(广告规则通常不涉及)

2 规则优先级(重要)

用户自定义规则 > 订阅规则 > 配置文件默认规则

建议:将广告屏蔽规则置于配置文件最顶端,确保优先拦截。


规则类型详解与广告屏蔽应用

1 域名精确匹配(DOMAIN)

# 语法:DOMAIN,域名,策略
DOMAIN,ads.example.com,REJECT

适用场景:特定广告服务器,如:

  • DOMAIN,googleadservices.com,REJECT
  • DOMAIN,doubleclick.net,REJECT

2 域名后缀匹配(DOMAIN-SUFFIX)

# 拦截整个广告域名及其子域名
DOMAIN-SUFFIX,google-analytics.com,REJECT
DOMAIN-SUFFIX,facebook.com,REJECT  // 谨慎使用,可能误杀

优势:一条规则覆盖 www.ads.comapi.ads.comtracker.ads.com 等所有子域。

3 域名关键词(DOMAIN-KEYWORD)

# 匹配域名中包含特定关键词的请求
DOMAIN-KEYWORD,analytics,REJECT
DOMAIN-KEYWORD,tracking,REJECT

风险提示:容易过度拦截(如 analytics.google.comanalyticstools.com),建议配合 AND/OR 逻辑使用。

4 IP 段拦截(IP-CIDR)

# 针对硬编码 IP 的广告 SDK
IP-CIDR,120.232.0.0/14,REJECT
IP-CIDR,203.205.0.0/16,REJECT

注意:需确保 Shadowrocket 已开启 IPv6 解析 时同步配置 IP-CIDR6


高阶规则组合技巧

1 逻辑规则(AND/OR/NOT)

# 仅拦截特定路径下的广告(需配合 MITM)
AND,((DOMAIN,api.example.com),(URL-REGEX,^/ads/)),REJECT
# 排除特定应用
NOT,((USER-AGENT,MyApp*)),(DOMAIN,ad.com),REJECT

2 正则表达式(URL-REGEX)

# 拦截特定广告路径
URL-REGEX,^https?://.*/advertisement/\d+\.jpg,REJECT
URL-REGEX,^https?://api\.app\.com/v\d+/ads,REJECT

3 进程级拦截(PROCESS-NAME)

# 针对特定 App 的广告 SDK
PROCESS-NAME,com.tencent.mm,REJECT  // 微信内置浏览器广告

实战配置模板

1 基础广告拦截配置(通用版)

# 1. 国内主流广告平台
DOMAIN-SUFFIX,360.cn,REJECT
DOMAIN-SUFFIX,360safe.com,REJECT
DOMAIN-SUFFIX,admaster.com.cn,REJECT
DOMAIN-SUFFIX,adsage.com,REJECT
DOMAIN-SUFFIX,adsmogo.com,REJECT
DOMAIN-SUFFIX,adview.cn,REJECT
DOMAIN-SUFFIX,appsflyer.com,REJECT
DOMAIN-SUFFIX,behe.com,REJECT
DOMAIN-SUFFIX,domob.cn,REJECT
DOMAIN-SUFFIX,duomeng.cn,REJECT
DOMAIN-SUFFIX,guomob.com,REJECT
DOMAIN-SUFFIX,immob.cn,REJECT
DOMAIN-SUFFIX,inmobi.com,REJECT
DOMAIN-SUFFIX,mob.com,REJECT
DOMAIN-SUFFIX,mobvista.com,REJECT
DOMAIN-SUFFIX,umeng.com,REJECT
DOMAIN-SUFFIX,umengcloud.com,REJECT
DOMAIN-SUFFIX,union.mi.com,REJECT
# 2. 国际广告巨头
DOMAIN-SUFFIX,doubleclick.net,REJECT
DOMAIN-SUFFIX,googleadservices.com,REJECT
DOMAIN-SUFFIX,google-analytics.com,REJECT
DOMAIN-SUFFIX,googlesyndication.com,REJECT
DOMAIN-SUFFIX,googletagmanager.com,REJECT
DOMAIN-SUFFIX,googletagservices.com,REJECT
DOMAIN-SUFFIX,facebook-analytics.com,REJECT
DOMAIN-SUFFIX,fbcdn.net,REJECT
# 3. 视频广告(需配合脚本)
DOMAIN-SUFFIX,ad.cmvideo.cn,REJECT
DOMAIN-SUFFIX,ad.youku.com,REJECT
DOMAIN-SUFFIX,atm.youku.com,REJECT
DOMAIN-SUFFIX,aty.sohu.com,REJECT
DOMAIN-SUFFIX,stats.tudou.com,REJECT
# 4. 运营商劫持
DOMAIN-SUFFIX,114so.cn,REJECT
DOMAIN-SUFFIX,go.10086.cn,REJECT
DOMAIN-SUFFIX,hivedata.99.com,REJECT

2 精细化配置(按应用分类)

# 微信去广告(部分)
DOMAIN-SUFFIX,wxsnsdythumb.wxs.qq.com,REJECT  // 朋友圈视频广告缩略图
DOMAIN-SUFFIX,badjs.weixinbridge.com,REJECT
# 小红书
DOMAIN-SUFFIX,img.xiaohongshu.com,REJECT  // 需配合 URL 正则过滤广告图片
# 知乎
DOMAIN-SUFFIX,zhihu-web-analytics.zhihu.com,REJECT
DOMAIN,appcloud.zhihu.com,REJECT

MITM 解密与 HTTPS 广告拦截

1 为什么需要 MITM?

现代 App 普遍采用 HTTPS 传输广告数据,普通域名规则无法拦截加密流量中的广告。

2 配置步骤

  1. 生成证书:Shadowrocket → 配置 → 证书 → 生成新的 CA 证书
  2. 安装证书:iOS 设置 → 通用 → VPN与设备管理 → 安装描述文件
  3. 信任证书:设置 → 通用 → 关于本机 → 证书信任设置 → 开启
  4. 配置解密
    [MITM]
    hostname = *.googlevideo.com, *.youtube.com, *.bilibili.com, *.zhihu.com

[Script]

YouTube 去广告(需配合脚本引擎)

youtube_ad = type=http-request,pattern=^https:\/\/youtubei.googleapis.com\/youtubei\/v1\/(browse|next|player|search|reel\/reel_watch_sequence),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/Youtube/dist/youtube.request.preview.js


---
## 六、脚本拦截(进阶)
对于动态加载的广告,需使用 JavaScript 脚本:
### 6.1 常见脚本类型
```conf
# 响应体修改(去除广告节点)
^https?://api\.zhihu\.com/topstory/recommend url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js
# 请求体重写(伪装会员去广告)
^https?://api\.bilibili\.com/x/v2/account/mine\?access_key url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js

2 性能优化建议

  • 使用 script-path 引用远程脚本时,建议开启 缓存
  • 避免过多脚本同时运行(建议不超过 5 个),防止内存占用过高

规则维护与故障排查

1 更新策略

  1. 自动更新:配置 → 远程文件 → 开启自动更新(建议每日)
  2. 本地备份:定期导出 .conf 文件,防止规则源失效

2 误杀处理

若出现 App 功能异常:

  1. 开启 日志记录(Shadowrocket → 日志)
  2. 查找被 REJECT 的域名
  3. 添加例外规则:
    DOMAIN,api.critical-service.com,DIRECT

3 性能监控

  • 规则数量建议控制在 3000 条以内,过多会导致延迟增加
  • 使用 DOMAIN-SETRULE-SET 替代大量单条规则,提升匹配效率

推荐规则源(持续维护)

规则源 特点 适用场景
ConnersHua 精简高效,误杀率低 日常使用
DivineEngine 分类详细,更新频繁 深度定制
blackmatrix7 含大量去广告脚本 视频/社交 App
lhie1 国内优化好 大陆用户

订阅示例

RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/Guard/Advertising.list,REJECT

总结与最佳实践

  1. 分层防御:域名规则(静态)+ MITM(HTTPS)+ 脚本(动态)
  2. 白名单机制:对银行、政务类 App 添加 DIRECT 例外,避免功能异常
  3. 定期清理:每月检查规则有效性,删除已失效的广告域名
  4. 隐私保护:广告拦截同时建议开启 DNS over HTTPS(DoH)防止 DNS 劫持

如需针对特定 App(如 TikTok、Instagram、Bilibili 等)的精细化去广告方案,请提供具体规则内容,我可以为您进行逐行解析和优化建议。

您可以还会对下面的文章感兴趣: