导读:
Shadowrocket 的远程脚本(Remote Script)功能允许你通过 JavaScript 动态修改 HTTP/HTTPS 请求和响应,常用于去广告、解锁功能、数据修改等场景。
在配置文件的 [Script] 段落中添加:
[Script] 脚本名称 = type=http-response,pattern=匹配URL,script-path=远程脚本URL,requires-body=1,max-size=0,timeout=30
关键参数说明:
type:http-request(请求阶段)或http-response(响应阶段)pattern: URL 正则匹配规则script-path: 远程脚本 URL(支持 http/https,会自动下载缓存)requires-body: 是否需要处理 body(0/1,修改响应内容需设为 1)max-size: 允许处理的最大响应体大小(0 表示无限制)timeout: 脚本执行超时时间(秒)
常用脚本模板
修改响应体(解锁/去广告)
// 远程脚本示例:修改 JSON 响应
let body = $response.body;
let obj = JSON.parse(body);
// 修改逻辑示例:解锁 VIP
obj.data.is_vip = true;
obj.data.vip_expire_time = "2099-12-31";
$done({body: JSON.stringify(obj)});
修改请求头
// type=http-request 脚本
let headers = $request.headers;
headers['User-Agent'] = 'CustomAgent/1.0';
headers['X-Auth-Token'] = 'your-token';
$done({headers: headers});
重定向
// 302 重定向
$done({status: 302, headers: {'Location': 'https://new-url.com'}});
实际配置示例
示例 1:YouTube 去广告(简化版)
[Script] YouTube去广告 = type=http-response,pattern=^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|search|reel\/reel_watch_sequence),requires-body=1,binary-body-mode=1,max-size=2097152,script-path=https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/Youtube/dist/youtube.response.preview.js
示例 2:Bilibili 解锁番剧
[Script] Bili解锁 = type=http-response,pattern=^https:\/\/app\.bilibili\.com\/x\/v2\/account\/myinfo,requires-body=1,script-path=https://raw.githubusercontent.com/Semporia/Scripts/master/Bilibili/Bilibili.js
示例 3:自定义脚本(修改 Cookie)
[Script] Cookie获取 = type=http-request,pattern=^https:\/\/api\.example\.com\/user,script-path=https://your-server.com/scripts/cookie.js
脚本内置 API
Shadowrocket 提供以下 JavaScript API:
| API | 功能 |
|---|---|
$request |
请求对象(headers, url, method, body) |
$response |
响应对象(status, headers, body) |
$done(obj) |
结束脚本并返回修改后的数据 |
$notify(title, subtitle, message) |
发送本地通知 |
$persistentStore.read(key) |
读取持久化存储 |
$persistentStore.write(value, key) |
写入持久化存储 |
$httpClient.get/post |
发起 HTTP 请求 |
$env.version |
获取 Shadowrocket 版本 |
注意事项
-
缓存机制:远程脚本下载后会缓存,修改脚本后需在 Shadowrocket 中更新外部资源(配置页面 → 点击右上角 ... → 更新外部资源)
-
MITM 证书:修改 HTTPS 响应需要安装并信任证书(设置 → 证书 → 生成/安装)
-
脚本权限:首次执行远程脚本时,Shadowrocket 会提示是否允许执行,需点击允许
-
调试方法:
- 使用
$notify()弹出变量内容 - 查看 Shadowrocket 日志(设置 → 日志)
- 使用
-
性能考虑:
requires-body=1会消耗更多内存,大文件(如视频)避免开启
推荐脚本源
- Maasea:
https://github.com/Maasea/sgmodule(YouTube、Apple 相关) - Semporia:
https://github.com/Semporia/Scripts(国内 App 解锁) - app2smile:
https://github.com/app2smile/rules(去广告合集) - RuCu6:
https://github.com/RuCu6/QuanX(通用规则)
提示:使用他人脚本时注意隐私安全,建议审查代码后再使用,尤其是涉及 Cookie 或 Token 获取的脚本。