导读:
Shadowrocket 的重写(Rewrite)功能允许你修改 HTTP/HTTPS 请求和响应,常用于广告拦截、请求重定向、修改请求头/响应体等,以下是详细设置指南:
进入重写设置
- 打开 Shadowrocket → 配置(Config)
- 选择当前使用的配置文件 → 点击 编辑(Edit)
- 选择 重写(Rewrite)选项卡
- 点击右上角 添加规则,或从 URL 导入规则集
重写规则语法
基本格式:
[类型] [正则表达式] [替换内容/操作] [标志]
常见重写类型
| 类型 | 说明 | 示例 |
|---|---|---|
url |
URL 重写/重定向 | ^http://(.*) https://$1 |
302/307 |
临时重定向 | ^http://old.com http://new.com 302 |
header |
修改请求头 | ^https?://api.x.com header-add X-Auth token123 |
header-del |
删除请求头 | ^https?://api.x.com header-del User-Agent |
reject |
拦截请求(用于去广告) | ^https?://ad.x.com reject |
reject-img |
拦截并返回 1x1 像素图 | ^https?://banner.x.com reject-img |
body |
修改响应体(需 MITM) | ^https?://api.x.com body-replace "old":"new" |
配置示例
URL 重定向(HTTP 转 HTTPS)
^http://(.*\.google\.com) https://$1 302
修改 User-Agent
^https?://www.example.com header-replace User-Agent Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X)
删除特定请求头(防追踪)
^https?://api.example.com header-del X-Forwarded-For
^https?://api.example.com header-del X-Real-IP
广告拦截
^https?://googleads\.g\.doubleclick\.net reject
# 拦截特定路径
^https?://www\.youtube\.com/api/stats/ads reject
响应体修改(需开启 MITM)
^https?://api\.weibo\.cn/2/statuses/extend body-replace "ad":\[\{"id"[^{]*\}\] "ad":[]
使用模块(Module)管理规则
对于复杂规则,建议创建模块文件(.sgmodule):
#!name=我的重写规则 #!desc=自定义广告拦截和优化 #!author=YourName #!icon=https://example.com/icon.png [URL Rewrite] # 强制 HTTPS ^http://(www\.)?example\.com https://$1 302 [Header Rewrite] # 修改 Accept-Language ^https?://www\.google\.com header-replace Accept-Language en-US [MITM] hostname = %APPEND% api.example.com, www.google.com
导入方式:在 Shadowrocket 中通过 URL 安装模块,或保存为 .sgmodule 文件通过 AirDrop/文件共享导入。
关键注意事项
HTTPS 解密(MITM)
修改 HTTPS 请求/响应体必须开启 MITM:
- 设置 → 证书 → 生成新的 CA 证书 → 安装
- 在 iOS 设置 → 通用 → 关于本机 → 证书信任设置 中启用完全信任
- 在重写规则中指定
hostname(域名)
正则表达式转义
- 特殊字符需要转义:
\.\/\?\+\* - 使用 或 捕获组,用
$1$2引用
性能优化
- 避免过于宽泛的正则(如
^https?://.*) - 将最常用规则放在前面
- 使用
reject而非302到无效地址来拦截广告
调试技巧
- 开启 设置 → 高级 → 日志记录
- 使用 最近请求(Recent Requests)查看实际请求的 URL 和 Header
- 规则冲突时,列表上方的规则优先
常用规则源(远程导入)
你可以直接订阅现成的规则集:
- 广告拦截:
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rewrite/Shadowrocket/AllInOne/AllInOne.sgmodule - 去重定向:
https://raw.githubusercontent.com/DivineEngine/Profiles/master/Shadowrocket/Module/General.sgmodule
导入方法:Shadowrocket 首页 → 右上角 → 类型选择 Module → 粘贴 URL → 下载安装。
提示:修改响应体(body)功能强大但可能影响 App 正常运行,建议先测试再长期使用,遇到问题时可通过 Shadowrocket 的 日志 功能排查规则是否匹配成功。