Shadowrocket(小火箭)脚本功能 是基于 JavaScript 的高级功能,用于修改 HTTP/HTTPS 请求和响应,实现去广告、解锁功能、数据修改等,以下是详细使用指南:
脚本功能基础
脚本类型
- HTTP 请求脚本:修改请求头、URL、请求体(Body)
- HTTP 响应脚本:修改响应体、响应头(常用于去广告、破解会员)
- Cron 定时脚本:定时执行任务(如自动签到)
工作原理
脚本在流量经过小火箭时拦截并处理,仅对 HTTP/HTTPS 流量生效(HTTPS 需要开启 MITM 解密)。
配置方法
方法 A:通过模块(Module)添加(推荐)
- 打开 Shadowrocket → 配置 → 模块 → 右上角 +
- 输入模块链接(如神机规则、NobyDa 等提供的模块)
- 或创建本地模块,格式如下:
[Script]
# 格式:脚本名称 = 类型, 正则匹配, 脚本路径, 是否需要 MITM
京东比价 = type=http-response, pattern=^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig), requires-body=1, script-path=https://raw.githubusercontent.com/xxx/jd_price.js, enable=true
方法 B:直接编辑配置
- 配置 → 点击当前配置 → 编辑纯文本
- 在
[Script]段落添加脚本规则
脚本语法详解
基础结构
// 修改请求
var modifiedRequest = {
url: $request.url,
headers: $request.headers,
body: $request.body
};
$done(modifiedRequest);
// 修改响应
var modifiedResponse = {
status: 200,
headers: $response.headers,
body: JSON.stringify({"key": "value"})
};
$done(modifiedResponse);
常用变量
$request: 包含 url, method, headers, body$response: 包含 status, headers, body$done(): 结束脚本并返回修改后的数据$notify(title, subtitle, message): 发送通知$persistentStore: 持久化存储$httpClient: 发起网络请求
实用示例
示例 1:简单的响应修改(去广告原理)
// 解析原始响应
let body = JSON.parse($response.body);
// 修改数据(假设去除广告字段)
body.data.ads = [];
body.data.vip = true;
// 返回修改后的响应
$done({body: JSON.stringify(body)});
示例 2:请求重定向
// 修改请求 URL
$request.url = $request.url.replace("old-domain.com", "new-domain.com");
$done($request);
示例 3:添加自定义请求头
$request.headers['X-Custom-Header'] = 'value'; $request.headers['User-Agent'] = 'Mozilla/5.0'; $done($request);
获取现成脚本资源
知名脚本仓库
-
NobyDa(去广告、解锁)
https://github.com/NobyDa/Script
-
chavyleung(签到脚本)
https://github.com/chavyleung/scripts
-
yichahucha(京东比价、微博去广告)
https://github.com/yichahucha/surge
-
神机规则(综合性模块)
https://github.com/ConnersHua/RuleGo
使用方法
复制 raw 链接 → 在 Shadowrocket 中 配置 → 模块 → 安装 from URL
调试与排错
查看日志
- 设置 → 日志 → 开启 脚本日志
- 使用
console.log()在脚本中输出调试信息
常见问题
- 脚本不生效:检查 MITM 是否开启(HTTPS 必须),检查正则匹配是否正确
- 无限循环:避免脚本修改后的请求再次匹配到同一规则
- 性能问题:复杂脚本会增加耗电,避免在全局代理下运行过多脚本
本地脚本路径
iOS 本地脚本存储路径:文件 App → Shadowrocket → Scripts
注意事项
- HTTPS 解密:修改 HTTPS 响应必须安装并信任证书(配置 → 证书)
- 权限风险:脚本可以读取所有流量内容,只使用可信来源的脚本
- iOS 限制:部分 App 使用 SSL Pinning,脚本无法解密
- 语法严格:JavaScript 区分大小写,注意 JSON 解析时的转义
推荐工作流
- 先使用现成模块测试
- 在 配置 → 通用 → HTTP 抓取 中分析请求结构
- 编写简单脚本本地测试
- 使用 GitHub 托管脚本并引用 raw 链接
需要具体某个功能的脚本示例(如特定 App 去广告或解锁),可以告诉我具体需求,我可以提供更精确的代码。