"小火箭"(Shadowrocket)的 Rewrite 功能主要用于 URL 重写、请求/响应修改 和 脚本注入,以下是完整的配置指南和常用脚本示例:
基础配置结构
Shadowrocket 配置主要分为两个部分:
[Rewrite] 段(简单重写)
用于简单的 URL 跳转、请求头修改或拒绝连接。
[Rewrite]^https?://example\.com/old$ https://example.com/new 302 # 请求头修改 ^https?://api\.example\.com header-replace User-Agent "Mozilla/5.0" # 拒绝广告请求 ^https?://ad\.example\.com reject ^https?://tracking\.example\.com reject-img # 返回空图片
[Script] 段(复杂脚本)
用于需要 JavaScript 处理的复杂逻辑(修改响应体、计算签名等)。
[Script] # 格式:名称 = 类型, 正则, 脚本路径/链接, 是否需要MITM http-response ^https?://api\.example\.com/data requires-body=1,script-path=https://raw.githubusercontent.com/.../script.js http-request ^https?://api\.example\.com/auth requires-body=0,script-path=local_script.js
常用脚本示例
示例 1:解锁/去广告(响应体修改)
// unlock.js
let body = $response.body;
let obj = JSON.parse(body);
// 修改 VIP 状态
obj.data.is_vip = true;
obj.data.vip_expire = "2099-12-31";
$done({body: JSON.stringify(obj)});
配置:
[Script] 解锁VIP = type=http-response, pattern=^https?://api\.example\.com/user/info, requires-body=1, script-path=unlock.js
示例 2:请求头注入(Token 自动添加)
// auth.js
let headers = $request.headers;
headers['Authorization'] = 'Bearer YOUR_TOKEN_HERE';
headers['X-Custom-Header'] = 'injected_value';
$done({headers});
配置:
[Script] 自动鉴权 = type=http-request, pattern=^https?://api\.example\.com/, script-path=auth.js
示例 3:URL 参数修改
// modify_url.js
let url = $request.url;
// 添加额外参数
url = url + (url.includes('?') ? '&' : '?') + 'extra_param=value';
$done({url});
完整配置模板
[General] # 开启 MITM(HTTPS 解密必需) mitm = true # 证书配置(首次需在设置中安装并信任证书) ca-passphrase = Shadowrocket ca-p12 = 证书内容(base64) [Rule] # 确保相关域名走代理或直接连接 DOMAIN,api.example.com,DIRECT [Rewrite] # 简单重写示例 ^https?://short\.url/(\w+) https://example.com/redirect/$1 302 ^https?://.*\.googlevideo\.com reject-dict [Script] # 脚本示例 http-response ^https?://api\.example\.com/v1/users requires-body=1,script-path=https://raw.githubusercontent.com/.../unlock.js,tag=解锁会员 http-request ^https?://api\.example\.com/v1/ads requires-body=0,script-path=https://raw.githubusercontent.com/.../remove_ad.js,tag=去广告 [MITM] # 需要解密的域名(脚本修改 HTTPS 内容必需) hostname = api.example.com, *.example.com
关键注意事项
MITM(HTTPS 解密)配置
- 必须安装证书:配置 → 证书 → 生成新的 CA 证书 → 安装 → 系统设置中信任
- hostname 列表:在
[MITM]段明确列出需要解密的域名,支持通配符*.example.com
脚本类型选择
| 类型 | 用途 | requires-body |
|---|---|---|
http-request |
修改请求头、URL、请求体 | 0(默认)或 1 |
http-response |
修改响应头、响应体 | 1(修改 body 时必须) |
调试技巧
- 日志查看:Shadowrocket → 设置 → 日志(查看脚本报错)
- 本地测试:先将脚本保存到 iCloud/本地,确认无误后再使用远程链接
- 语法检查:JavaScript 严格区分大小写,注意
$done()必须调用
性能优化
- 避免在
http-request中做耗时操作(会阻塞请求) - 正则表达式尽量精确,避免过度匹配
- 使用
script-update-interval控制远程脚本更新频率
常用脚本仓库参考
- GitHub 搜索:
Shadowrocket Script、Quantumult X Script(语法兼容) - 常用规则集:神机规则、DivineEngine、ConnersHua
提示:Shadowrocket 的脚本语法与 Quantumult X 高度兼容,大部分 QX 脚本可直接使用,只需注意路径和参数格式的细微差别。
需要特定功能的脚本(如某个 App 的解锁)可以提供具体域名,我可以帮你编写对应的正则和脚本逻辑。