文本处理 {关键词} 替换内容 [全局匹配]

Shadowrocket(小火箭)Rewrite 脚本 是用于重写 HTTP/HTTPS 请求和响应的规则配置,可实现去广告、URL 重定向、请求头修改、数据注入等功能。

以下是完整的配置指南和常用脚本示例:


基础语法结构

在 Shadowrocket 配置文件中,[Rewrite] 模块支持以下格式:

[Rewrite]
# 1. URL 重定向
302 ^https?://old-domain\.com(.*) https://new-domain.com$1
307 ^https?://example\.com/api https://api.example.com
# 2. 拒绝连接(去广告)
reject ^https?://ad\.example\.com
reject-dict ^https?://api\.example\.com/ads  # 返回空JSON {}
reject-array ^https?://api\.example\.com/popups  # 返回空数组 []
# 3. Header 操作
header-add User-Agent "CustomBrowser/1.0"
header-del X-Tracking-ID
header-replace Accept-Language "zh-CN,zh;q=0.9"
# 4. 脚本处理(需配合 [Script] 模块)
script-response-body https://raw.githubusercontent.com/user/script.js

常用实战脚本

去广告通用规则

[Rewrite]
# 屏蔽常见广告域名
reject ^https?://(googleads|googlesyndication|doubleclick)\.g\.doubleclick\.net
reject ^https?://(ads|adserver|analytics)\.[a-zA-Z0-9.-]+\.com
reject ^https?://static\.[a-z]+\.com/ads/

URL 重定向(简化/优化)

[Rewrite]
# 知乎去广告 + 简化
302 ^https?://www\.zhihu\.com/question/(.*) zhihu://questions/$1
302 ^https?://link\.zhihu\.com/\?target=(.*) $1
# 京东强制 HTTPS
302 ^http://(www\.)?jd\.com https://www.jd.com
# Bilibili 番剧解锁(示例)
302 ^https?://api\.bilibili\.com/pgc/view/app/season https://代理服务器/bilibili/season

请求头修改(伪装/去追踪)

[Rewrite]
# 移除追踪头
header-del X-Requested-With
header-del X-Forwarded-For
header-del Cookie  # 谨慎使用
# 修改 User-Agent(模拟微信内置浏览器)
header-replace User-Agent "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15A372 MicroMessenger/8.0.0(0x18000028) NetType/WIFI Language/zh_CN"

高级 JavaScript 脚本

对于复杂逻辑(如修改响应体 JSON),需配合 Script 模块:

配置结构:

[Script]
# 格式:脚本类型 = 匹配模式, 脚本URL/本地路径, 是否需要MITM
# 修改响应体
http-response ^https?://api\.example\.com/user/info requires-body=1,script-path=https://raw.githubusercontent.com/user/modify-response.js
# 修改请求体
http-request ^https?://api\.example\.com/upload requires-body=1,script-path=local-request.js
# 定时任务(cron)
cron "0 9 * * *" script-path=check-in.js

示例脚本(修改响应体):

// modify-response.js
// 功能:删除响应中的广告字段
let body = $response.body;
let obj = JSON.parse(body);
// 删除广告数组
if (obj.data && obj.data.ad_list) {
    obj.data.ad_list = [];
}
// 修改 VIP 状态(示例,仅供学习)
if (obj.data && obj.data.vip_info) {
    obj.data.vip_info.is_vip = true;
    obj.data.vip_info.expire_time = "2099-12-31";
}
$done({body: JSON.stringify(obj)});

MITM 配置(HTTPS 解密必需)

重写 HTTPS 流量必须开启 MITM

[MITM]
hostname = api.example.com, *.google.com, www.zhihu.com
# 证书配置(Shadowrocket 会自动生成,或导入自定义)
enable = true

操作步骤

  1. Shadowrocket → 配置 → 编辑配置 → HTTPS 解密 → 开启
  2. 安装并信任证书(设置 → 通用 → VPN与设备管理 → 安装描述文件)
  3. 设置 → 通用 → 关于本机 → 证书信任设置 → 开启 Shadowrocket 证书

完整配置模板

[General]
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local
dns-server = 8.8.8.8, 1.1.1.1
[Rule]
DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-SUFFIX,baidu.com,DIRECT
FINAL,DIRECT
[Rewrite]
# 去广告
reject ^https?://m\.google\.com/ads
302 ^https?://short\.url/(.*) https://real-domain.com/$1
[Script]
http-response ^https?://api\.zhihu\.com/topstory requires-body=1,script-path=https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js
[MITM]
hostname = api.zhihu.com, *.google.com
enable = true

注意事项

  1. 性能影响:过多 Rewrite 规则会增加延迟,建议精简正则表达式
  2. HTTPS 限制:iOS 15+ 对证书校验更严格,部分 App 可能无法解密(如银行 App)
  3. 规则冲突:Rewrite 优先级高于普通代理规则,注意避免循环重定向
  4. 脚本安全:仅使用可信来源的远程脚本,避免隐私泄露

调试技巧:在 Shadowrocket 中开启"日志"功能(设置 → 日志记录),查看 Rewrite 是否生效。

需要特定 App 的 Rewrite 规则(如 TikTok 解锁、YouTube 去广告等),可以告诉我具体需求,我可以提供针对性脚本。

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