Sailing - SD-WAN | 更加可靠的互联网接入方案返回首页

Quantumult X 重写教程:本地规则、脚本与 MitM 配置排查

更新于 2026-10-24 · sailingnet.shop

简答:Quantumult X 重写用于拦截、拒绝、跳转或修改匹配到的网络请求;最稳妥的做法是先用一条本地规则验证,再按需启用 MitM 和脚本。涉及 HTTPS 内容时,还要生成证书、在 iOS 中安装并开启信任。最近核验于 2026-10-24。本文仅作配置说明,不代表任何品牌官网或官方下载站。

定义:Quantumult X 重写是基于 URL、请求头或响应内容匹配规则,对网络请求执行拒绝、跳转、修改或脚本处理的功能。

先试这一步:用最小规则确认重写是否工作

不要一开始就导入大型规则集或脚本。先打开 Quantumult X 的配置编辑界面,在 [rewrite_local] 区块加入一条只用于测试的 HTTP 规则:

^http://example.com/resource2/ url 302 http://example.com/new-resource2/

这类 302 示例以及远程重写资源的基本格式,可在项目维护者公开的 sample-import-rewrite.snippet 中核对。保存后访问匹配地址,再查看 HTTP 活动记录;如果没有命中,先检查规则是否启用、URL 是否完全匹配,以及请求是否实际经过 Quantumult X。

现象优先检查下一步
HTTP 规则不生效规则区块、正则、开关改用固定 URL 做最小测试
HTTPS 规则不生效MitM、证书信任、hostname先只配置一个明确域名
脚本没有输出脚本类型、资源地址、日志换成静态响应或通知测试
导入后应用异常规则冲突、脚本来源、匹配范围停用新增资源并逐项恢复

Quantumult X 重写、分流、脚本和 MitM 有什么区别

重写决定匹配到某个请求后要做什么,例如拒绝请求、返回空内容、302 或 307 跳转、修改请求头或响应内容。分流主要决定请求使用哪个策略,不负责修改响应正文。脚本是重写动作的一种扩展,可读取或修改请求、响应及部分持久化数据。MitM则用于让 HTTPS 流量能够被解析和处理,并不等于规则本身。

App Store 对 Quantumult X 的公开说明列出了 HTTP 活动记录、MitM HTTP 解密、302/307 跳转、请求与响应头体修改等能力,具体功能仍受系统、应用和目标站点实现影响,可参考 App Store 产品说明。

功能主要作用是否通常需要 MitM
分流选择直连、代理或其他策略通常不需要
HTTP 重写拒绝、跳转或修改明文请求不一定
HTTPS 内容重写处理加密后的请求或响应内容通常需要
JavaScript 重写用脚本处理请求、响应或返回值视脚本目标而定

从零配置 Quantumult X 重写:5 个步骤

  1. 备份当前配置。保存配置文件、订阅地址、本地脚本和自定义规则;分享前删除订阅令牌、密码及证书私钥。
  2. 开启重写功能。进入 Quantumult X 的配置或重写设置,确认 Rewrite 已启用。不同版本的按钮名称和位置可能略有变化。
  3. 仅在需要时生成 MitM 证书。如果只是做普通分流或部分 HTTP 规则,不必为了测试而开启 HTTPS 解密;需要处理 HTTPS 内容时,再生成对应证书并安装到 iPhone 或 iPad。
  4. 在系统中开启证书信任。Apple 说明,手动安装的证书不会自动获得 SSL/TLS 信任,需要进入“设置—通用—关于本机—证书信任设置”,在“启用完全信任的根证书”中开启对应证书,详见 Apple 官方证书信任说明。
  5. 先用一条本地规则验证。验证成功后,再添加远程资源或脚本;不要同时修改多个区块,否则出现问题时难以确定原因。

MitM 的 hostname 范围应尽量小,只填写确实需要处理的域名。完成测试后,如果不再需要 HTTPS 解密,可以停用重写和 MitM,并在系统中移除不再使用的证书配置。

本地规则怎么写:常用动作与最小示例

本地规则通常放在 [rewrite_local] 区块。基础结构可以理解为:匹配表达式 url 动作。官方示例配置列出了 reject、reject-img、reject-200、reject-dict、reject-array、302、307、request-header 以及脚本相关动作,具体字段可在 Quantumult-X sample.conf 中核对。

1. 拒绝或返回空内容

^http://example.com/ad/ url reject
^http://example.com/image-ad/ url reject-img
^http://example.com/json-ad/ url reject-dict

reject适合直接拒绝请求;reject-img返回一个极小图片;reject-dict返回空 JSON 对象。接口若严格要求特定状态码或字段,错误动作可能导致页面空白、登录失败或应用报错,因此应逐条测试。

2. 302 与 307 跳转

^http://example.com/old/ url 302 http://example.com/new/
^http://example.com/api/ url 307 http://example.com/api-v2/

302 和 307 都用于跳转,但具体请求方法和客户端处理行为可能不同。不要把跳转规则用于自己无法控制的接口,除非已确认目标路径、请求方法及响应格式。

3. 修改请求头

^http://example.com/resource/ url request-header ^GET /resource/ HTTP/1.1(\r\n) request-header GET /api/ HTTP/1.1$1

请求头规则需要同时关注 URL 和请求头的实际格式。若匹配表达式包含正则特殊字符,应按正则要求转义;规则顺序也会影响最终结果,建议一次只启用一条修改规则。

远程重写资源和 JavaScript 脚本怎么添加

远程资源适合集中维护,但风险也更高。官方示例配置在 [rewrite_remote] 区块中使用资源地址、tag 和 enabled 等参数,例如:

https://raw.githubusercontent.com/crossutility/Quantumult-X/master/sample-import-rewrite.snippet, tag=Sample, enabled=true

该格式可与 官方示例配置 对照。导入时优先使用项目作者公开的原始地址,检查文件内容是否包含预期的 [rewrite_local] 或 hostname 信息,并记录导入日期与版本。

  1. 复制可核验的 raw 文件地址,不要只复制网页展示页。
  2. 在 Quantumult X 的重写或资源管理界面添加远程资源,填写标签并启用。
  3. 下载后打开资源内容,确认规则没有扩大到不必要的域名。
  4. 先停用其他重写资源,再验证当前资源是否单独生效。
  5. 脚本报错时查看 HTTP 活动、脚本日志或应用提示,不要直接叠加更多脚本。

JavaScript 重写适合处理静态规则难以完成的请求或响应逻辑,但脚本可以读取和修改网络数据,因此不明来源的脚本可能造成隐私泄露、账号异常或配置损坏。导入前应查看源代码、维护者、权限需求和最近修改记录;无法核验来源的脚本不要使用。

规则不生效、HTTPS 报错和脚本超时怎么排查

  1. 确认流量经过 Quantumult X。先看应用是否处于接管状态,再观察 HTTP 活动中是否出现目标请求。
  2. 确认匹配范围。检查协议、域名、路径、大小写、查询参数和正则转义;不要只凭浏览器地址栏判断实际请求 URL。
  3. 确认 HTTPS 条件。检查 MitM 是否开启、hostname 是否包含目标域名、证书是否安装,以及 iOS“证书信任设置”是否已经开启。
  4. 检查规则顺序和冲突。同一个请求可能同时命中多条规则,先停用新增资源,再逐条启用,确认是哪一条改变了结果。
  5. 区分规则问题和线路问题。国内站点正常、只有境外站点慢或丢包时,才有必要进一步判断线路;如果所有站点都异常,应先检查 Wi-Fi、蜂窝网络、系统 VPN 冲突和 DNS。
  6. 脚本超时先改回静态规则。如果静态 reject 或跳转能生效,问题通常集中在脚本 URL、脚本逻辑、返回格式或外部请求上。

出现应用白屏、图片不显示、登录失败等现象时,优先停用最近添加的规则和脚本,恢复到备份配置,再逐项加回。不要为了“强制生效”扩大 hostname,也不要在未理解脚本内容时开启所有权限。

安全速查卡:导入前、验证中、使用后

阶段必须确认不建议做法
导入前来源、维护者、规则范围、脚本用途复制陌生群组中的整套配置
配置中先备份、先单条测试、限制 hostname同时启用多个远程资源
验证中观察请求记录、状态码、响应内容和日志只看页面是否打开
出现异常停用最近改动并恢复备份继续叠加规则或扩大匹配范围
使用后删除不用的证书、订阅和脚本长期保留不明来源的 MitM 配置

这套顺序的核心是把问题拆成四层:是否接管流量、是否匹配规则、是否具备 HTTPS 解密条件、脚本是否正确返回。每次只改变一层,定位速度通常比直接更换整份配置更快。

常见问题 FAQ

Quantumult X 重写一定要安装 MitM 证书吗?

不一定。普通分流和部分 HTTP 规则可以不使用 MitM;只有需要读取或修改 HTTPS 请求、响应内容时,通常才需要配置 hostname、生成证书并在 iOS 中开启信任。

为什么开启了 MitM,HTTPS 规则仍然不生效?

常见原因是目标域名没有加入 hostname、证书未安装、iOS 没有开启根证书信任,或请求并未经过 Quantumult X。建议先用一个明确域名和单条规则逐项验证。

reject、reject-200 和 reject-dict 应该怎么选?

它们返回的结果不同:reject 用于拒绝请求,reject-200 返回成功状态但无内容,reject-dict 返回空 JSON 对象。接口期待什么格式,决定了哪一种更合适,不能直接互换。

远程重写资源下载成功但没有效果,怎么办?

先确认资源已启用,内容中确实包含重写规则,并检查规则是否匹配当前 URL。随后停用其他重写资源,避免冲突;如果资源依赖 MitM,还要检查 hostname 和证书信任。

脚本重写和普通 URL 规则有什么区别?

普通规则适合固定的拒绝、跳转或简单头部修改;脚本可以根据请求或响应内容执行更复杂的判断,但也更难审计,可能受脚本返回格式、外部请求和运行时限制影响。

配置 Quantumult X 前需要备份什么?

至少备份配置文件、订阅地址、本地规则、脚本和自定义策略。分享或上传前,应删除订阅令牌、节点密码、账号信息及证书私钥,避免敏感数据泄露。

常见问题

Quantumult X 重写一定要安装 MitM 证书吗?

不一定。普通分流和部分 HTTP 规则可以不使用 MitM;只有需要读取或修改 HTTPS 请求、响应内容时,通常才需要配置 hostname、生成证书并在 iOS 中开启信任。

为什么开启了 MitM,HTTPS 规则仍然不生效?

常见原因是目标域名没有加入 hostname、证书未安装、iOS 没有开启根证书信任,或请求并未经过 Quantumult X。建议先用一个明确域名和单条规则逐项验证。

reject、reject-200 和 reject-dict 应该怎么选?

它们返回的结果不同:reject 用于拒绝请求,reject-200 返回成功状态但无内容,reject-dict 返回空 JSON 对象。接口期待什么格式,决定了哪一种更合适,不能直接互换。

远程重写资源下载成功但没有效果,怎么办?

先确认资源已启用,内容中确实包含重写规则,并检查规则是否匹配当前 URL。随后停用其他重写资源,避免冲突;如果资源依赖 MitM,还要检查 hostname 和证书信任。

脚本重写和普通 URL 规则有什么区别?

普通规则适合固定的拒绝、跳转或简单头部修改;脚本可以根据请求或响应内容执行更复杂的判断,但也更难审计,可能受脚本返回格式、外部请求和运行时限制影响。

配置 Quantumult X 前需要备份什么?

至少备份配置文件、订阅地址、本地规则、脚本和自定义策略。分享或上传前,应删除订阅令牌、节点密码、账号信息及证书私钥,避免敏感数据泄露。

相关阅读

参考资料

  1. Quantumult-X sample.conf:重写动作与配置示例
  2. Apple 官方支持:在 iOS 中信任手动安装的证书