↓ 跳过正文

Quantumult X 重写功能入门

·2175 字·5 分钟
作者
吾便宜

Quantumult X(圈 X)是 iOS 上功能最深的代理工具之一,而它的 rewrite(重写)功能,是新手和老手的分水岭。我当年第一次开 rewrite,把全网请求改崩、App 集体罢工,折腾一晚上才爬出来。这篇用踩坑复盘的方式,带你入门。

Quantumult X 重写功能示意图

插图来源:Storyset

先搞懂:rewrite 是干什么的
#

一句话:在请求发出前/响应回来后,把内容改掉。比如:

  • 把 App 开屏广告的请求直接拒绝(去广告)。
  • 把某个接口返回的"isVip: false"改成 true(解锁思路,仅限本地测试,请勿用于盗版)。
  • 把网页里的烦人弹窗元素删掉。

原理是中间人(MitM):Quantumult X 生成根证书装到 iPhone 上,解密 HTTPS 流量,改完再加密发出去。听起来吓人,但这是本地操作,数据不出手机。

踩坑复盘:我当年犯的三个错
#

坑一:上来就全开 MitM。我第一次把 MitM 主机名填成 *,结果银行 App 直接闪退、微信支付罢工。教训:MitM 只针对你想改的域名,别图省事写通配符。金融类 App 该直连直连。

坑二:乱装第三方 rewrite 规则。网上搜来的规则集,质量参差不齐,有的规则三年没更新,装上反而把正常功能搞坏。教训:规则一条一条加,出问题立刻关掉排查。

坑三:证书没装对。rewrite 不生效,90% 是证书问题:要去"设置-通用-关于本机-证书信任设置"里把 Quantumult X 的证书设为完全信任。少这一步,后面全白搭。

如果你是纯新手,建议先看科学上网入门和全平台客户端配置,把代理基础打牢再碰 rewrite——地基不稳,楼盖得越高塌得越惨。

入门步骤:第一个 rewrite
#

以"去掉某 App 开屏广告"为例:

  1. Quantumult X 里进入"重写",新建一条规则。
  2. 类型选 reject(拒绝请求),匹配开屏广告的域名(用 Quantumult X 自带的抓包/日志找)。
  3. 只对这个 App 生效,别全局。
  4. 保存,杀掉 App 重进,验证广告没了且功能正常。
  5. 备份配置:好不容易调好的规则,导出一份存好。

进阶思路:rewrite 能玩多深
#

  • 去广告:开屏、信息流广告,reject 是最常用的。
  • 响应体重写:用 script-response-body 改接口返回,需要写点 JS,适合爱折腾的。
  • 请求头修改:伪装设备、改地区,某些场景有用。

但有条红线:rewrite 改的是你手机本地的流量,别拿它去薅羊毛、破解付费——那是另一回事。技术是中性的,用法决定性质。

踩坑复盘续:进阶玩家才会踩的坑
#

坑四:rewrite 和分流规则打架。某 App 明明走了代理,rewrite 就是不生效——查了半天,发现是分流规则把它直连了,而 rewrite 只对特定模式下的流量生效。教训:rewrite 不生效时,先看分流,再看规则,最后看证书,排查有顺序。

坑五:脚本写崩把电量吃光。在 script-response-body 里写了个有问题的 JS,结果手机发烫、电量尿崩。教训:脚本先在小范围测试,打日志看执行情况,别一上来就全量开。

坑六:系统更新后证书失效。iOS 大版本升级,有时会把手动信任的证书重置,rewrite 集体罢工。教训:每次升级 iOS,第一件事就是检查证书信任状态。

三类常用 rewrite 模板(抄作业)
#

第一类:开屏广告 reject

  • 类型:reject
  • 匹配:广告统计、开屏广告域名(用 Quantumult X 的请求日志抓,App 启动瞬间冒出来的那几个一般就是)
  • 作用范围:只针对该 App 的 hostname

第二类:去信息流广告

  • 类型:reject 或 reject-200
  • 匹配:信息流广告接口路径
  • 注意:reject-200 返回空的 200,比直接 reject 更不容易让 App 报错

第三类:响应体重写

  • 类型:script-response-body
  • 场景:把接口返回里的广告位字段删掉
  • 门槛:要会写一点 JS,先从改 JSON 字段练手

模板是起点,不是终点。每个 App 的接口都在变,模板三个月不更新就可能失效——这就是为什么我说 rewrite 是"养"出来的,不是"配"出来的。

日常维护清单
#

  • 每月检查一次:规则还生效吗,App 更新后有没有罢工
  • 失效的规则及时删,别留着占坑
  • 新装 App,先裸跑三天,确认正常再决定加不加 rewrite
  • 配置文件每月导出备份一次(iCloud 丢配置的惨案每年都有)
  • 跟踪一两个 rewrite 规则分享源,但别无脑全装

进阶步骤:第一条响应体重写脚本
#

  1. 在 Quantumult X 里新建 rewrite,类型选 script-response-body。
  2. 匹配你要改的接口 URL(用日志抓准,别贪多)。
  3. 写 JS:解析响应体,改掉目标字段,再按原格式返回。
  4. 先只对这一个接口开,验证 App 功能正常。
  5. 生效后再考虑要不要推广到同类接口。

踩坑复盘:模块是个双刃剑
#

坑七:模块装太多互相打架。rewrite 玩熟了,自然会去碰模块(别人打包好的规则加脚本合集)。我最多时装了二十几个模块,结果某个 App 罢工,根本定位不到是哪个模块干的。教训:模块一次只装一个,观察三天再装下一个;出问题的第一反应是逐个禁用模块。

坑八:忽略模块更新。模块作者修了 bug 发了新版,你还在用半年前的旧版,白白踩本可避免的坑。教训:模块和规则集一样要定期更新,但更新前看一眼更新说明。

从 rewrite 到模块:升级步骤
#

  1. rewrite 单条规则玩熟了,再碰模块——顺序别反。
  2. 只从可信来源装模块,装之前看 star 数和最近更新时间。
  3. 装完先看模块说明:它改了哪些域名、动了哪些接口,心里有数。
  4. 观察三天,没问题再留用;有问题先禁用模块,再逐条排查。
  5. 模块的配置备份和 rewrite 规则一起导出,换设备一次到位。

玩到这一步,你已经超过 90% 的 Quantumult X 用户了。再往深走就是脚本和模块的天下,自建 Reality 节点那种属于服务端玩法,和 rewrite 是两条线,按兴趣选一条深入就行。