Shadowrocket(小火箭)Rewrite 脚本 是用于重写 HTTP/HTTPS 请求和响应的规则配置,可实现去广告、URL 重定向、请求头修改、数据注入等功能。
以下是完整的配置指南和常用脚本示例:
基础语法结构
在 Shadowrocket 配置文件中,[Rewrite] 模块支持以下格式:
[Rewrite]
# 1. URL 重定向
302 ^https?://old-domain\.com(.*) https://new-domain.com$1
307 ^https?://example\.com/api https://api.example.com
# 2. 拒绝连接(去广告)
reject ^https?://ad\.example\.com
reject-dict ^https?://api\.example\.com/ads # 返回空JSON {}
reject-array ^https?://api\.example\.com/popups # 返回空数组 []
# 3. Header 操作
header-add User-Agent "CustomBrowser/1.0"
header-del X-Tracking-ID
header-replace Accept-Language "zh-CN,zh;q=0.9"
# 4. 脚本处理(需配合 [Script] 模块)
script-response-body https://raw.githubusercontent.com/user/script.js
常用实战脚本
去广告通用规则
[Rewrite] # 屏蔽常见广告域名 reject ^https?://(googleads|googlesyndication|doubleclick)\.g\.doubleclick\.net reject ^https?://(ads|adserver|analytics)\.[a-zA-Z0-9.-]+\.com reject ^https?://static\.[a-z]+\.com/ads/
URL 重定向(简化/优化)
[Rewrite] # 知乎去广告 + 简化 302 ^https?://www\.zhihu\.com/question/(.*) zhihu://questions/$1 302 ^https?://link\.zhihu\.com/\?target=(.*) $1 # 京东强制 HTTPS 302 ^http://(www\.)?jd\.com https://www.jd.com # Bilibili 番剧解锁(示例) 302 ^https?://api\.bilibili\.com/pgc/view/app/season https://代理服务器/bilibili/season
请求头修改(伪装/去追踪)
[Rewrite] # 移除追踪头 header-del X-Requested-With header-del X-Forwarded-For header-del Cookie # 谨慎使用 # 修改 User-Agent(模拟微信内置浏览器) 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(0x18000028) NetType/WIFI Language/zh_CN"
高级 JavaScript 脚本
对于复杂逻辑(如修改响应体 JSON),需配合 Script 模块:
配置结构:
[Script] # 格式:脚本类型 = 匹配模式, 脚本URL/本地路径, 是否需要MITM # 修改响应体 http-response ^https?://api\.example\.com/user/info requires-body=1,script-path=https://raw.githubusercontent.com/user/modify-response.js # 修改请求体 http-request ^https?://api\.example\.com/upload requires-body=1,script-path=local-request.js # 定时任务(cron) cron "0 9 * * *" script-path=check-in.js
示例脚本(修改响应体):
// modify-response.js
// 功能:删除响应中的广告字段
let body = $response.body;
let obj = JSON.parse(body);
// 删除广告数组
if (obj.data && obj.data.ad_list) {
obj.data.ad_list = [];
}
// 修改 VIP 状态(示例,仅供学习)
if (obj.data && obj.data.vip_info) {
obj.data.vip_info.is_vip = true;
obj.data.vip_info.expire_time = "2099-12-31";
}
$done({body: JSON.stringify(obj)});
MITM 配置(HTTPS 解密必需)
重写 HTTPS 流量必须开启 MITM:
[MITM] hostname = api.example.com, *.google.com, www.zhihu.com # 证书配置(Shadowrocket 会自动生成,或导入自定义) enable = true
操作步骤:
- Shadowrocket → 配置 → 编辑配置 → HTTPS 解密 → 开启
- 安装并信任证书(设置 → 通用 → VPN与设备管理 → 安装描述文件)
- 设置 → 通用 → 关于本机 → 证书信任设置 → 开启 Shadowrocket 证书
完整配置模板
[General] bypass-system = true skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local dns-server = 8.8.8.8, 1.1.1.1 [Rule] DOMAIN-SUFFIX,google.com,PROXY DOMAIN-SUFFIX,baidu.com,DIRECT FINAL,DIRECT [Rewrite] # 去广告 reject ^https?://m\.google\.com/ads 302 ^https?://short\.url/(.*) https://real-domain.com/$1 [Script] http-response ^https?://api\.zhihu\.com/topstory requires-body=1,script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js [MITM] hostname = api.zhihu.com, *.google.com enable = true
注意事项
- 性能影响:过多 Rewrite 规则会增加延迟,建议精简正则表达式
- HTTPS 限制:iOS 15+ 对证书校验更严格,部分 App 可能无法解密(如银行 App)
- 规则冲突:Rewrite 优先级高于普通代理规则,注意避免循环重定向
- 脚本安全:仅使用可信来源的远程脚本,避免隐私泄露
调试技巧:在 Shadowrocket 中开启"日志"功能(设置 → 日志记录),查看 Rewrite 是否生效。
需要特定 App 的 Rewrite 规则(如 TikTok 解锁、YouTube 去广告等),可以告诉我具体需求,我可以提供针对性脚本。