Skip to content

Shadowrocket (小火箭) MitM 证书解密与 HTTPS URL 重写排障指南 ​

在 iOS 平台使用 Shadowrocket (小火箭) 的高级玩家,几乎都会接触到它的两大“黑科技”核心功能——MitM (中间人攻击 / Man-in-the-Middle HTTPS 解密) 与 Script / Rewrite (脚本执行与 URL 动态重写)。

借助这两大能力,你可以实现许多在普通代理客户端上无法想象的高阶操作:

  • 自动净化各大主流 App 内部的开屏广告、信息流牛皮癣广告;
  • 突破特定海外应用的地域限制与重定向跳转;
  • 实时修改 HTTP 响应体(Response Body),修改客户端界面展示甚至自动化签到打卡。

然而,在享受这些强大功能的同时,MitM 也是小火箭所有功能中配置门槛最高、最容易引发灾难性网络瘫痪的雷区。许多新手往往遇到以下三大死锁困境:

  • 按照网上教程在小火箭里点了“生成证书”,但一开启 HTTPS 解密,微信、支付宝、网银甚至苹果 App Store 瞬间全瘫痪,提示网络不可用或连接不安全;
  • 系统提示“证书未受信任”,无法解密任何目标域名;
  • 导入的广告拦截重写模块(Module)毫无效果,广告依然满天飞。

本文将深入 iOS 系统的安全沙箱与 X.509 密码学证书验证模型,为你带来一套不留隐患的 MitM 标准排障实战手册。


模块一:核心答案摘要与安全避坑铁律 (Answer-First) ​

1. 为什么装了证书依然提示“未受信任”?(iOS 致命两阶段认证) ​

许多用户以为在小火箭里点击“安装证书”并下载了描述文件就大功告成了,殊不知 iOS 操作系统设计了极其严格的“两阶段安全隔离”:

  1. 第一阶段(安装描述文件):进入 iPhone「设置」→「已下载描述文件」点击安装。此时证书仅仅是被导入了系统沙箱,处于完全休眠的未激活状态;
  2. 第二阶段(手动赋予完全信任 - 90% 用户遗漏之处!):必须进入 iPhone「设置」→「通用」→「关于本机」→ 滑动到最底部点击 「证书信任设置」 → 在“针对根证书启用完全信任”列表中,手动找到 Shadowrocket 证书并将右侧开关拨至绿色开启!

2. 为什么开启 MitM 后微信与银行 App 瞬间崩溃? ​

  • 现代高安全级别 App(如微信、各大商业银行、支付宝、Apple 官方服务)在代码中普遍启用了 SSL Pinning (证书绑定/公钥固定) 技术;
  • 这些 App 在发起 TLS 握手时,完全不信任操作系统内置的根证书库,而是只认 App 安装包内部写死的官方合法证书公钥;
  • 当小火箭尝试在中间解密它们的流量时,会被 SSL Pinning 机制瞬间识别为“黑客中间人窃听”,App 会硬性断开连接以保护资产安全!
  • 铁律:严禁在 MitM 的主机名列表(Hostname)中填入通配符 *!必须只针对特定的广告域名或目标网站进行精准解密,微信、金融类域名必须坚决排除!

模块二:MitM 中间人解密与 URL 重写的工作拓扑 ​

看清数据包在小火箭内部的处理流水线,有助于精准定位规则失效点:

+-----------------------------------------------------------------------------------------+
|                               Shadowrocket MitM 数据解密与重写拓扑                       |
+-----------------------------------------------------------------------------------------+

  [iOS 客户端 App]                      [Shadowrocket 本地沙盒核心]                [远端目标服务器]
         │                                         │                                      │
         ├─ 1. 发起 HTTPS 请求: https://api.ads.com ─>│                                      │
         │  (Client Hello 握手)                    │                                      │
         │                                         ├─ 2. 检查该域名是否在 Hostname 列表中? │
         │                                         │                                      │
         │  ┌──────────────────────────────────────┴───────────────────────────────────┐  │
         │  ▼                                                                          ▼  │
   [命中 MitM 列表!]                                                            [未命中列表 (常规模式)]
         │                                                                             │  │
         ├─ 3. 小火箭使用本地自签 CA 动态签发伪造证书 ─┐                                      │  │
         │  (因系统已赋予完全信任,App 校验通过!)     │                                      │  │
         │<──────────────────────────────────────────┘                                      │  │
         │                                         ├─ 4. 小火箭代为向真实服务器建立 TLS ───>│
         │                                         │<─ 5. 获取真实密文并在本地内存完整解密 ──┤
         │                                         │                                      │
         │                                         ├─ 6. 执行 Rewrite / Script 规则清洗    │
         │                                         │   (删除广告字段 / 重写 JSON 响应)     │
         │                                         │                                      │
         │<─ 7. 将净化后的明文重新加密返回给 App ────┤                                      │
         ▼                                         ▼                                      ▼
  [App 显示干净无广告界面!]                   [整个过程在手机内部瞬时完成]

从拓扑可以看出,小火箭自身充当了一个“合法的中间人”,如果本地 CA 根证书没有被系统绝对信任,第一步 TLS 握手就会被 iOS 内核直接掐死。


模块三:标准化五步规程:从证书生成到完全信任实操 ​

请严格按照以下标准化顺序操作,任何步骤颠倒都会导致配置失败:

第一步:在小火箭中生成专属私有 CA 证书 ​

  1. 打开 Shadowrocket,点击底部菜单 「配置 (Config)」;
  2. 点击当前正在生效的规则文件(默认通常为 default.conf),在弹出菜单中点击 「编辑配置」;
  3. 找到并点击 「HTTPS 解密 (HTTPS Decryption)」;
  4. 勾选顶部的 「HTTPS 解密」 开关;
  5. 点击下方弹出的 「生成新的 CA 证书」,在警告弹窗中点击确定(此时小火箭会在手机本地安全生成专属的私钥与根证书)。

第二步:安装证书描述文件到系统 ​

  1. 点击小火箭界面中的 「安装证书到系统」;
  2. 手机自动呼出 Safari 浏览器,弹出提示框:“此网站正尝试下载一个配置描述文件,是否允许?”,点击 「允许」;
  3. 提示“已下载描述文件,请在设置中查看”。

第三步:在 iOS 设置中激活描述文件 ​

  1. 退出小火箭,打开 iPhone 系统自带的 「设置」;
  2. 在设置顶部的个人账号下方,找到并点击 「已下载描述文件」(若没有,进入「通用」→「VPN 与设备管理」);
  3. 点击名为 Shadowrocket Root Certificate Authority... 的描述文件,点击右上角 「安装」;
  4. 输入你的 iPhone 锁屏开机密码,在弹出的警告页面中再次点击右上角 「安装」 完成导入。

第四步:开启根证书完全信任(核心决胜步) ​

  1. 依然在系统 「设置」 中,进入 「通用」 → 点击第一项 「关于本机」;
  2. 滑动到最底部,点击最后一项 「证书信任设置」;
  3. 在“针对根证书启用完全信任”区域下方,找到 Shadowrocket ... 证书;
  4. 将右侧的开关拨至开启状态(变绿);
  5. 在弹出的根证书安全警告对话框中,果断点击 「继续」!

第五步:验证 MitM 运行状态 ​

返回小火箭的「HTTPS 解密」页面,此时证书状态应显示为绿色的 状态: 已信任,代表底层密码学基础设施已全量打通。


模块四:针对性保护:配置 Hostname 白名单与黑名单排除 ​

为了绝对防止微信、网银 App 遭受中间人拦截引发断网,必须精细化维护 Hostname (主机名列表)。

1. 严禁配置的通配符陷阱 ​

  • ❌ 绝对不要填写:*、*.*、*.com、*.cn;
  • 致命后果:会导致手机内所有 App 的加密握手全部被强行拆解,触发全系统大面积拒绝服务。

2. 标准的 Hostname 填写真实范例 ​

进入小火箭「HTTPS 解密」→「主机名」,只填写你需要真正解密广告或重写的特定二级域名:

text
# 仅针对特定的去广告目标域名开启解密
api.ad.example.com,
*.snssdk.com,
upload.media.target.com,

# 坚决排除高危金融与社交通讯域名 (加 - 减号排除)
-*.apple.com,
-*.icloud.com,
-*.qq.com,
-*.wechat.com,
-*.alipay.com,
-*.cmbchina.com

模块五:URL Rewrite 与 Script 模块实操语法速查 ​

配置好 MitM 后,如何在小火箭中编写或加载去广告重写规则?

1. 标准 URL Rewrite 语法规则 (3 种常见类型) ​

进入小火箭「配置」→「URL 重写」:

  • reject (阻断丢弃):用于彻底切断广告请求,相当于让广告接口返回 404;
    text
    ^https?:\/\/api\.example\.com\/v\d\/ad\/reject - reject
  • header (修改 HTTP 请求头):伪装请求来源或 User-Agent;
    text
    ^https?:\/\/api\.bilibili\.com\/header - header-replace User-Agent "Mozilla/5.0"
  • 302 (临时重定向):将特定的错误链接强制跳转至正确的安全页面;
    text
    ^https?:\/\/google\.cn 302 https://www.google.com

2. 现代懒人方案:一键安装 Module (模块) ​

现代小火箭支持模块化(Module)订阅。你无需手工编写繁琐的代码,只需在小火箭首页底部点击 「模块」 → 点击右上角 「+」 → 粘贴社区维护的成熟模块链接(如去微博开屏广告模块、知乎去广告模块),小火箭会自动将 MitM Hostname 与 Rewrite 规则一并无缝写入,极速省心。


模块六:真实生产环境 RCA 故障复盘案例 ​

案例一:开启 MitM 后 App Store 无法下载应用、提示“无法连接” ​

  • 故障现象:某 iPhone 用户按照教程开启小火箭 MitM 去视频广告后,发现系统自带的 App Store 彻底瘫痪,点击更新或下载 App 一直转圈,最终报错“无法连接到 App Store”。
  • 排错过程:
    1. 工程师查看该用户的「主机名 (Hostname)」列表,发现其中赫然写着 *;
    2. 根因在于苹果 iOS 系统的 App Store、iCloud 同步与 Apple ID 鉴权在底层强制启用了严格的客户端证书固定机制(SSL Pinning);
    3. 小火箭试图使用自签证书解密 *.apple.com 流量,iOS 系统内核的安全检测模块立即判定遭到中间人伪造,主动阻断所有通信。
  • 最终解决:在 Hostname 中删除通配符 *,添加 -*.apple.com 与 -*.icloud.com 排除规则,App Store 秒级恢复下载。

案例二:微信电脑端/平板端扫码登录提示“网络异常” ​

  • 故障现象:用户在手机小火箭开启 HTTPS 解密后,使用手机微信扫描电脑端微信二维码时,手机界面反复提示“网络连接不可用,请稍后重试”,关闭小火箭后则恢复。
  • 排错过程:
    1. 抓包审查小火箭的流量日志,发现微信扫码鉴权请求发送到了 long.weixin.qq.com;
    2. 该域名被误包含在第三方去广告模块的 MitM 解密名单中;
    3. 腾讯微信内核检测到非官方证书的中间人握手,直接安全熔断。
  • 最终解决:在小火箭配置的 [MITM] 区域底部追加 hostname = -*.qq.com, -*.wechat.com,扫码登录秒级成功。

模块七:常见问题答疑 (FAQ) ​

Q1:我更换了新 iPhone,需要重新走一遍证书信任流程吗? ​

答:是的,必须重新操作一遍。小火箭生成的 CA 私钥和证书仅保存在当前这台 iPhone 的硬件安全隔离区中。即便你通过 iCloud 备份将 App 恢复到了新手机上,iOS 出于最高安全策略,新手机上的证书完全信任开关依然是默认关闭的,必须重新进入「证书信任设置」手动开启。

Q2:小火箭的 MitM 解密会不会把我的账号密码上传到他们的服务器? ​

答:绝对不会。小火箭的 MitM 采用的是纯本地端(Local-loopback)解密:

  • 证书由你的手机 CPU 现场生成;
  • 私钥直接加密存放在手机内部沙盒中,永远不会通过网络发出;
  • 解密、改写、重新加密的全过程在手机内存中完成,开发者和任何第三方均无法拿到你的解密明文。

Q3:开启 HTTPS 解密会不会导致手机明显发热和耗电? ​

答:如果 Hostname 仅针对几十个特定的广告域名,由于现代苹果 A 系列 / M 系列芯片内置了强悍的 AES 硬件加解密协处理器,额外的电量损耗微乎其微(通常小于 1%);但如果你误开了全局通配符 * 导致手机里所有的流量都在反复拆包重新加密,CPU 负担将明显加重并导致发热。


模块八:容灾备用与全链路保障 ​

在调试小火箭高级 MitM 与重写功能时,若发生网络全盘中断,请随时使用以下保障通道:

⚠️网络排障决策分支:服务器与节点故障应急响应
STATUS: HIGH_AVAILABILITY_FALLBACK
若您已完成前述步骤(确认本地网络畅通、系统代理开启且端口正确),但所有节点依然全部超时、测速全红或订阅无法更新,这通常意味着当前机场的国内中转入口被封锁、服务器宕机或发生服务异常。此时继续折腾客户端已无意义,建议启动跨机房独立专线应急备用方案:
小白免配置
飞猫云 (Feimao)专属客户端直连
起步门槛:¥7/月 (50GB/月)
线路特点:免导入订阅, 官方客户端登录即连
专属优惠:flycat888
性价比专线
微风网络 (Breeze)IEPL 专线 + VLESS
起步门槛:¥137/年 (100GB/月)
线路特点:全原生 IP 覆盖, 7×24小时真人/AI客服
专属优惠:flat888

模块九:版本维护记录与参考标准 ​

维护属性详细登记信息
文档版本v1.1.0 (全量落地版)
最新审核校对时间2026-10-25
参考苹果官方安全标准Apple Security: Trusting manually installed certificate profiles in iOS, NetworkExtension Framework
测试验证客户端Shadowrocket v2.2.x (iOS 17.5 / iOS 18.0)
发布与维护单位网络诊断实验室 (NetZhenduan.cc) 移动端安全与证书审计组

网络诊断实验室(NetZhenDuan.cc)坚持独立技术实测与客观数据呈现。部分测速与线路评测内容包含商业推广标记(Sponsored),返利佣金不影响最终评测结论与用户付费价格。