基础概念与工作原理
1 规则匹配机制
Shadowrocket 采用自上而下的规则匹配策略,一旦匹配成功即停止后续检查,广告屏蔽的核心逻辑是:
- REJECT:直接阻断连接(返回空响应或重置连接)
- PROXY/DIRECT:正常放行(广告规则通常不涉及)
2 规则优先级(重要)
用户自定义规则 > 订阅规则 > 配置文件默认规则
建议:将广告屏蔽规则置于配置文件最顶端,确保优先拦截。
规则类型详解与广告屏蔽应用
1 域名精确匹配(DOMAIN)
# 语法:DOMAIN,域名,策略 DOMAIN,ads.example.com,REJECT
适用场景:特定广告服务器,如:
DOMAIN,googleadservices.com,REJECTDOMAIN,doubleclick.net,REJECT
2 域名后缀匹配(DOMAIN-SUFFIX)
# 拦截整个广告域名及其子域名 DOMAIN-SUFFIX,google-analytics.com,REJECT DOMAIN-SUFFIX,facebook.com,REJECT // 谨慎使用,可能误杀
优势:一条规则覆盖 www.ads.com、api.ads.com、tracker.ads.com 等所有子域。
3 域名关键词(DOMAIN-KEYWORD)
# 匹配域名中包含特定关键词的请求 DOMAIN-KEYWORD,analytics,REJECT DOMAIN-KEYWORD,tracking,REJECT
风险提示:容易过度拦截(如 analytics.google.com 与 analyticstools.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 配置步骤
- 生成证书:Shadowrocket → 配置 → 证书 → 生成新的 CA 证书
- 安装证书:iOS 设置 → 通用 → VPN与设备管理 → 安装描述文件
- 信任证书:设置 → 通用 → 关于本机 → 证书信任设置 → 开启
- 配置解密:
[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 更新策略
- 自动更新:配置 → 远程文件 → 开启自动更新(建议每日)
- 本地备份:定期导出
.conf文件,防止规则源失效
2 误杀处理
若出现 App 功能异常:
- 开启 日志记录(Shadowrocket → 日志)
- 查找被 REJECT 的域名
- 添加例外规则:
DOMAIN,api.critical-service.com,DIRECT
3 性能监控
- 规则数量建议控制在 3000 条以内,过多会导致延迟增加
- 使用
DOMAIN-SET或RULE-SET替代大量单条规则,提升匹配效率
推荐规则源(持续维护)
| 规则源 | 特点 | 适用场景 |
|---|---|---|
| ConnersHua | 精简高效,误杀率低 | 日常使用 |
| DivineEngine | 分类详细,更新频繁 | 深度定制 |
| blackmatrix7 | 含大量去广告脚本 | 视频/社交 App |
| lhie1 | 国内优化好 | 大陆用户 |
订阅示例:
RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/Guard/Advertising.list,REJECT
总结与最佳实践
- 分层防御:域名规则(静态)+ MITM(HTTPS)+ 脚本(动态)
- 白名单机制:对银行、政务类 App 添加
DIRECT例外,避免功能异常 - 定期清理:每月检查规则有效性,删除已失效的广告域名
- 隐私保护:广告拦截同时建议开启 DNS over HTTPS(DoH)防止 DNS 劫持
如需针对特定 App(如 TikTok、Instagram、Bilibili 等)的精细化去广告方案,请提供具体规则内容,我可以为您进行逐行解析和优化建议。