通用广告拦截

导读:

  1. 规则类型与语法
  2. 实用配置示例
  3. 完整配置模板
  4. 重要注意事项

Shadowrocket(小火箭)的重写规则(Rewrite)主要用于修改 HTTP/HTTPS 请求的 URL、请求头(Header)或响应体(Body),以下是完整的规则语法和使用指南:

规则类型与语法

URL Rewrite(URL 重写)

正则匹配模式 替换内容 类型

常见类型:

  • 302 - 临时重定向(改变 URL)
  • 307 - 临时重定向(保留请求方法,POST 仍是 POST)
  • reject - 拒绝连接
  • reject-200 - 返回 200 空响应
  • reject-img - 返回 1x1 透明图片
  • reject-dict - 返回空 JSON
  • reject-array - 返回空数组 []

Header Rewrite(请求头重写)

正则匹配模式 头名称 头值 动作

动作类型:

  • request-add - 添加请求头
  • request-replace - 替换请求头
  • request-del - 删除请求头
  • response-add - 添加响应头
  • response-replace - 替换响应头
  • response-del - 删除响应头

Body Rewrite(需要开启 MITM)

正则匹配模式 替换内容 动作

动作类型:

  • request-body-replace - 替换请求体
  • response-body-replace - 替换响应体

实用配置示例

强制 HTTPS(升级 HTTP 到 HTTPS)

[URL Rewrite]
^http://(www\.)?google\.com https://$1google.com 302
^http://(www\.)?baidu\.com https://$1baidu.com 302
^http://(.*)\.cn https://$1.cn 302

去广告(Reject)

[URL Rewrite]^https?://.+?\.(ad|ads|advertise|advertising)\..+ _ reject
^https?://ad\. _ reject
^https?://ads\. _ reject
# 特定广告域名
^https?://googleads\.g\.doubleclick\.net _ reject-200
^https?://app\.ads\.lan _ reject-img

修改 User-Agent(伪装客户端)

[Header Rewrite]
# 知乎去 APP 弹窗(伪装成微信访问)
^https?://www\.zhihu\.com User-Agent Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/7.0.15(0x17000f27) NetType/WIFI Language/zh_CN
# 百度贴吧去广告(伪装成旧版客户端)
^https?://tieba\.baidu\.com User-Agent Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15

解锁区域限制(修改 X-Forwarded-For)

[Header Rewrite]
^https?://www\.netflix\.com X-Forwarded-For 8.8.8.8 request-replace

响应体修改(需要 MITM)

[URL Rewrite]
# 示例:修改 API 返回
^https?://api\.example\.com/v1/config .* response-body-replace
[MITM]
hostname = api.example.com

完整配置模板

[URL Rewrite]
# 强制 HTTPS
^http://(www\.)?example\.com https://$1example.com 302
# 去广告
^https?://ad\.example\.com _ reject
^https?://track\.example\.com _ reject-200
[Header Rewrite]
# 添加自定义 Header
^https?://api\.example\.com X-Custom-Header Value request-add
# 删除追踪 Header
^https?://.* X-Tracking-Id _ request-del
# 修改响应头(去除 X-Frame-Options 允许 iframe)
^https?://example\.com X-Frame-Options _ response-del
[MITM]
# 需要解密的域名(Body Rewrite 必须)
hostname = api.example.com, www.example.com
enable = true

重要注意事项

  1. MITM 证书:使用 Body Rewrite 或部分 Header Rewrite 需要安装并信任 Shadowrocket 的 MITM 证书(设置 → 证书 → 生成新的 CA 证书 → 安装 → 系统设置中信任)

  2. 正则表达式:匹配模式使用正则语法,注意转义特殊字符(如 写成 \.

  3. 规则优先级:规则按顺序匹配,先匹配的先执行,建议将精确规则放在前面,通用规则放在后面

  4. 调试方法

    • 开启"日志"功能查看重写是否生效
    • 使用"抓包"功能检查实际请求/响应内容
  5. 性能影响:过多的重写规则(特别是复杂正则)可能影响网络性能,建议精简规则

  6. HTTPS 解密:iOS 13+ 需要手动信任证书:设置 → 通用 → 关于本机 → 证书信任设置 → 开启 Shadowrocket 证书

需要特定网站的重写规则(如去广告、解锁功能)可以告诉我具体需求,我可以提供针对性的规则。

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