导读:
Shadowrocket(小火箭)的重写规则(Rewrite)主要用于拦截和修改网络请求,包括 URL 跳转、请求头修改、内容注入、去广告等。
以下是完整的配置指南和常用示例:
规则基本结构
重写规则主要分为两类:
URL Rewrite(URL 重写)
[URL Rewrite]302 ^https?://old\.example\.com https://new.example.com reject ^https?://ad\.example\.com
Script(脚本重写)
[Script] # 格式:名称 = 类型, 匹配模式, 脚本路径, 其他参数 京东比价 = type=http-response, pattern=^https?://api\.m\.jd\.com, requires-body=1, script-path=jd_price.js
常用规则类型详解
| 类型 | 说明 | 示例 |
|---|---|---|
| 302 | 临时重定向(改变 URL) | 302 ^http://(www\.)?a\.com http://b.com |
| 307 | 临时重定向(保持请求方法) | 307 ^http://old\.com http://new.com |
| reject | 拒绝连接(丢包) | reject ^https?://ad\.com |
| reject-200 | 拒绝但返回 200 状态码 | reject-200 ^https?://tracking\.com |
| reject-img | 拒绝并返回 1px 图片 | reject-img ^https?://.*\.gif |
| header-add | 添加请求头 | header-add X-Custom-Value test |
| header-del | 删除请求头 | header-del User-Agent |
| header-replace | 替换请求头 | header-replace User-Agent "Mozilla/5.0" |
实用配置示例
去广告(Reject)
[URL Rewrite] # 通用广告拦截 reject ^https?://(www\.)?google\..*/(pagead|ads)/ reject ^https?://ad\..* reject ^https?://.*/ad\.js$ reject-img ^https?://.*/tracking\.gif$
URL 跳转(强制 HTTPS)
[URL Rewrite] # 强制 HTTP 转 HTTPS 302 ^http://(www\.)?example\.com https://www.example.com # 短链接跳转 302 ^https?://t\.cn/(.*) https://weibo.com/$1
修改请求头(伪装 User-Agent)
[URL Rewrite] # 修改 User-Agent(iPhone 伪装成微信内置浏览器) 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" # 添加自定义 Header header-add X-Forwarded-For 1.1.1.1
解锁/区域限制(302 重定向)
[URL Rewrite] # TikTok 解锁(示例,需配合节点) (?<=_region=)CN(?=&) US 307 (?<=&mcc_mnc=)4 2 307
脚本注入(需要 MITM)
[Script] # 响应体修改(如去除 APP 启动广告) 去广告 = type=http-response, pattern=^https?://api\.app\.com/launch, requires-body=1, script-path=remove_ad.js # 请求体修改 修改请求 = type=http-request, pattern=^https?://api\.example\.com/submit, requires-body=1, script-path=modify_request.js
MITM 配置(HTTPS 解密)
重写 HTTPS 请求必须开启 MITM 并安装证书:
[MITM] hostname = api.example.com, *.app.com, www.google.com
安装证书步骤:
- Shadowrocket → 配置 → 点击当前配置 → 编辑配置 → 开启 HTTPS 解密
- 生成证书 → 安装证书 → 系统设置 → 通用 → 关于本机 → 证书信任设置 → 开启信任
完整配置模板
[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 FINAL,DIRECT [URL Rewrite] # 去广告 reject ^https?://(www\.)?google\..*/(pagead|ads)/ # 强制 HTTPS 302 ^http://(www\.)?example\.com https://www.example.com [Script] # 示例脚本 示例脚本 = type=http-response, pattern=^https?://api\.example\.com/data, requires-body=1, script-path=example.js [MITM] hostname = api.example.com, *.google.com enable = true
注意事项
- 正则表达式:使用标准正则语法,
^表示开头, 表示结尾, 匹配任意字符 - 优先级:规则从上到下匹配,匹配成功即停止
- MITM 风险:解密 HTTPS 存在隐私风险,仅信任本地配置,不要安装不明来源的证书
- 性能影响:过多重写规则会影响网速,建议精简规则
- 脚本安全:脚本功能强大但危险,只使用可信来源的脚本
调试技巧:在 Shadowrocket 中开启"日志"功能,可以查看请求是否被正确重写。
需要特定功能的规则(如某 APP 去广告、解锁会员等),可以提供具体的域名或接口地址,我可以帮你编写精确的正则表达式。