本文详解 Shadowrocket 脚本功能使用教程,涵盖重写规则编写、HTTP 请求修改及自动化场景,助您高效定制跨境办公网络环境。
核心概念:为何需要脚本功能
在复杂的国际网络加速场景中,仅靠基础的分流规则往往无法满足精细化需求,Shadowrocket 的脚本功能(Scripting)允许用户通过 JavaScript 直接干预 HTTP 请求与响应,实现去广告、视频区域解锁、Cookie 管理及接口数据修改等高级操作,掌握 Shadowrocket 脚本功能使用教程,是将工具从“可用”提升至“好用”的关键一步。
脚本类型与工作原理
Shadowrocket 支持两种主要脚本类型:HTTP 脚本与 MITM(中间人攻击)脚本,前者无需解密 HTTPS 流量,仅处理未加密或部分加密的请求头;后者需安装并信任 CA 证书,可完整读写 HTTPS 包体。
- Request 脚本:在请求发出前执行,常用于修改 User-Agent、添加自定义 Header 或重定向 URL。
- Response 脚本:在收到服务器响应后执行,用于替换页面内容、去除广告代码或修改 JSON 数据。
启用 MITM 是运行大多数高级脚本的前提,需在设置中开启"MITM"开关,导入 CA 证书,并在“主机名”列表中填入脚本所作用的域名,如 *.example.com。
实战步骤:编写与导入脚本
获取脚本资源
用户可从 GitHub 或专业社区获取现成的 .js 文件,对于有开发能力的用户,可直接在 App 内新建脚本。
配置重写规则
进入“重写”页面,点击"+"号添加规则,标准格式如下:
hostname = ^https?://api\.target\.com script-type = response pattern = ^https?://api\.target\.com/v1/data script-name = DataModifier.js
此处 hostname 定义拦截域,pattern 匹配具体 URL,script-name 对应本地脚本文件。
编写 JavaScript 逻辑
以下是一个简单的 Response 脚本示例,用于修改返回的 JSON 数据:
// DataModifier.js
let body = $response.body;
let obj = JSON.parse(body);
// 修改特定字段以适配跨境办公需求
if (obj.region === 'CN') {
obj.region = 'US';
obj.access_level = 'premium';
}
$done({ body: JSON.stringify(obj) });
代码中 $response.body 获取原始响应,$done() 提交修改后的数据。
高级场景:分流与脚本联动
脚本常与分流规则配合使用,Shadowrocket 支持 DOMAIN、DOMAIN-SUFFIX、IP-CIDR 及 GEOIP 等多种规则类型,优先级通常为:用户自定义规则 > 代理组规则 > 直连规则。
针对学术资源访问,可设置 DOMAIN-SUFFIX,edu.cn,DIRECT 确保国内流量直连,而对特定的海外 API 接口启用脚本修改,若需接管所有流量(含 UDP 游戏数据),建议开启 TUN 模式;若仅需处理 HTTP/HTTPS 网页浏览,系统代理模式更为轻量。
代理组的选择同样影响脚本效果。select 模式适合手动切换特定区域节点以配合脚本解锁内容;url-test 模式则自动选择延迟最低的节点,保障脚本处理后的数据传输稳定性。
常见问题排查 (FAQ)
现象:脚本不生效,页面内容未改变。
原因:未正确配置 MITM 主机名或证书未信任。
解决方法:检查“设置”中 MITM 开关是否开启,确保证书已安装并信任,且在 MITM 主机名列表中添加了通配符(如 *.domain.com)。
现象:App 提示 SSL 握手失败。 原因:部分应用启用了 SSL Pinning(证书锁定)。 解决方法:普通脚本无法绕过此限制,需寻找特定的去 Pin 脚本或模块,或放弃对该应用的 MITM 操作。
现象:修改后数据格式错误导致 App 崩溃。
原因:JavaScript 逻辑破坏了原始 JSON 结构。
解决方法:在脚本中加入 try...catch 块捕获异常,确保 $done() 始终返回合法数据。
灵活运用 Shadowrocket 脚本功能使用教程中的技巧,能极大提升网络工具的自动化水平,无论是优化跨境办公体验,还是定制个性化的学术资源访问策略,脚本都提供了无限可能,若您需要更稳定的底层节点支持以发挥脚本最大效能,可参考我们整理的高质量节点订阅推荐,选择低延迟、高带宽的专线服务,确保数据处理流畅无阻。
