导读:
Shadowrocket(小火箭)的 Rewrite(重写) 功能用于修改 HTTP/HTTPS 请求和响应,常用于去广告、解锁功能、URL重定向、修改请求头等。
以下是完整的 Rewrite 脚本指南:
基本语法格式
[Pattern] [Type] [Replacement] [Options]
| 字段 | 说明 |
|---|---|
| Pattern | 正则匹配URL(如 ^https?://api\.example\.com) |
| Type | 重写类型(见下文) |
| Replacement | 或目标地址 |
| Options | 可选标记(如 header) |
常用重写类型
URL 重定向
# 307临时重定向(保留请求方法)
^https?://api\.old\.com https://api.new.com 307
请求头修改(Header)
# 替换请求头 ^https?://api\.example\.com header-replace User-Agent "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X)" # 添加请求头 ^https?://api\.example\.com header-add X-Forwarded-For 1.1.1.1 # 删除请求头 ^https?://api\.example\.com header-del X-Requested-With
响应体修改(需开启MITM)
# 替换响应体文本(JSON/XML等) ^https?://api\.example\.com/v1/user response-body-replace "is_vip\":false" "is_vip\":true" # 正则替换 ^https?://api\.example\.com/v1/ads response-body-replace-regex "<div class=\"ad\">[\s\S]*?</div>" ""
请求体修改(需开启MITM)
# 修改POST数据 ^https?://api\.example\.com/upload request-body-replace "old_version" "new_version"
拦截(Reject)
# 直接拦截请求(用于去广告) ^https?://ad\.example\.com reject ^https?://track\.analytics\.com reject-dict
完整配置示例
[URL Rewrite] # 强制HTTPS ^https?://www\.example\.com https://www.example.com 302 # 去广告重定向(空响应) ^https?://ads\.example\.com reject [Header Rewrite] # 修改User-Agent模拟微信浏览器 ^https?://mp\.weixin\.qq\.com header-replace User-Agent "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/8.0.0(0x18000000) NetType/WIFI Language/zh_CN" # 添加Authorization ^https?://api\.service\.com header-add Authorization "Bearer token123" [Body Rewrite] # 解锁VIP(需MITM) ^https?://api\.music\.com/vip/status response-body-replace "vip\":0" "vip\":1"
配置步骤
添加Rewrite规则
- 打开 Shadowrocket → 配置 → 选择配置文件 → 编辑
- 找到 Rewrite 模块(或添加
[URL Rewrite]、[Header Rewrite]区块) - 粘贴规则
开启MITM(修改Body必需)
如需修改响应体/请求体,必须配置MITM:
- 设置 → 证书 → 生成新的CA证书
- 安装描述文件(设置 → 通用 → VPN与设备管理 → 安装)
- 关于本机 → 证书信任设置 → 开启 Shadowrocket 证书
- 在配置中启用 MITM:
[MITM] hostname = api.example.com, *.service.com
启用Rewrite
- 主界面 → 全局路由选择 配置 模式
- 确保 Rewrite 开关已开启(设置 → 高级 → Rewrite)
注意事项
- HTTPS限制:修改Body必须安装并信任MITM证书,且域名需在
[MITM]的hostname中声明 - 性能影响:过多正则匹配会影响网速,建议精简规则
- 语法严格:正则表达式需转义特殊字符(如 →
\.) - iOS限制:部分App使用SSL Pinning,无法MITM解密
- 备份配置:修改前建议导出配置备份
调试技巧
- 查看日志:设置 → 日志,观察请求是否匹配规则
- 测试正则:使用在线正则工具(如 regex101.com)测试 Pattern
- 分步验证:先使用
302重定向测试连通性,再尝试Body修改
需要特定功能的脚本(如某App去广告、解锁)可以提供具体URL,我可以帮你编写对应的正则规则。