{关键词}基本配置格式详解

导读:

  1. 常用脚本模板
  2. 实际配置示例
  3. 脚本内置 API
  4. 注意事项
  5. 推荐脚本源

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 版本

注意事项

  1. 缓存机制:远程脚本下载后会缓存,修改脚本后需在 Shadowrocket 中更新外部资源(配置页面 → 点击右上角 ... → 更新外部资源)

  2. MITM 证书:修改 HTTPS 响应需要安装并信任证书(设置 → 证书 → 生成/安装)

  3. 脚本权限:首次执行远程脚本时,Shadowrocket 会提示是否允许执行,需点击允许

  4. 调试方法

    • 使用 $notify() 弹出变量内容
    • 查看 Shadowrocket 日志(设置 → 日志)
  5. 性能考虑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 获取的脚本。

您可以还会对下面的文章感兴趣: