iOS代理工具MitM解密实战:HTTPS抓包、证书安装与App去广告完整教程2026
安全声明:MitM(中间人)功能是代理工具提供的本地 HTTPS 解密机制,仅对本设备流量生效,主要用途是运行广告过滤脚本和应用调试。所有解密操作均在本设备完成,不会将流量发送给第三方。请勿将此技术用于拦截他人通信。
文章说明:本文详细讲解 iOS 主流代理工具的 MitM 功能配置,包括 Shadowrocket(小火箭)、Surge(iOS/macOS)、Quantumult X(QX)三款工具的证书生成、安装、信任全流程,以及如何配合脚本实现 App 去广告、价格查询等实用功能。
什么是 MitM?为什么需要它?
HTTPS 协议通过 TLS 加密保护数据传输,正常情况下代理工具只能"转发"加密流量而无法读取内容。MitM(Man-in-the-Middle,中间人)机制通过在本设备安装自签名 CA 证书,让代理工具扮演"受信任的代理人"角色,对 HTTPS 流量进行解密、处理后再重新加密转发。
广告过滤
通过脚本识别并屏蔽 App 内的广告请求,彻底去除 App 内置广告,无需越狱。
流量分析
查看 App 发出的 API 请求内容,用于开发调试、了解 App 行为或数据追踪分析。
内容修改
通过重写规则修改 HTTP 响应头、注入 JavaScript 脚本,实现会员价格检测等功能。
Shadowrocket(小火箭)MitM 配置
第一步:生成并安装 CA 证书
进入 MitM 设置
打开 Shadowrocket → 底部"配置"标签 → 点击当前配置文件旁边的">"→ 滑动找到"HTTPS 解密"→ 打开开关
生成 CA 证书
点击"生成新的 CA 证书" → 证书生成完毕后点击"安装 CA 证书到系统"→ 系统弹窗确认,跳转到"设置"安装描述文件
在"设置"中安装描述文件
iOS 设置 → 通用 → VPN与设备管理 → 点击"Shadowrocket CA"→ 右上角"安装"→ 输入密码确认
信任证书(关键步骤!)
iOS 设置 → 通用 → 关于本机 → 证书信任设置 → 找到"Shadowrocket CA"→ 打开开关 → 确认"继续"
第二步:配置解密域名(hostnames)
在 Shadowrocket 配置文件的 MitM 区域添加需要解密的域名,不建议使用 * 通配全部(会导致部分 App 崩溃):
[mitm]
enable = true
ca-p12 = (自动生成的 Base64 证书内容)
ca-passphrase = (自动生成的密码)
hostname = api.weibo.cn, *.iqiyi.com, *.bilibili.com, -*.apple.com
# 注意:在域名前加 - 表示排除该域名(如 Apple 服务建议排除)
Surge MitM 配置(iOS & macOS)
Surge 的 MitM 功能最为完善,支持脚本(Script)和重写(Rewrite)联动,是专业用户首选。
iOS 端配置步骤
生成证书
Surge 主界面 → 底部"更多"→ "MitM" → 打开"启用 MitM" → "安装 CA 证书"
安装并信任
同 Shadowrocket 步骤:设置→通用→VPN与设备管理安装,再到"证书信任设置"打开信任开关
配置文件中添加解密域名
在 Surge 配置文件 [MitM] 段添加 hostname,Surge 支持通配符和排除语法
[MitM]
enable = true
ca-passphrase = your_passphrase
ca-p12 = (Base64证书内容)
hostname = *.weibo.com, api.weibo.cn, *.iqiyi.com
# 排除 Apple 和银行类域名(避免应用崩溃)
skip-server-cert-verify = false # 保持 false,验证服务端证书
[Script]
# 结合脚本实现去广告
bilibili-ads = type=http-response, pattern=https://api.bilibili.com/x/resource/show/skin, script-path=bilibili-ads.js, requires-body=true
[Rewrite]
# URL 重写规则(不需要解密也能用)
^https://example.com/ads reject-200
Quantumult X MitM 配置
Quantumult X 将 MitM 功能集成在"重写"(Rewrite)模块中,UI 操作比 Surge 更直观。
进入重写设置
右下角风车图标 → "重写" → 右上角"+" → "配置 MitM"
生成 CA 证书
点击"生成证书" → "安装证书" → iOS 系统弹窗安装描述文件
信任证书(必须!)
iOS 设置 → 通用 → 关于本机 → 证书信任设置 → 找到 Quantumult CA → 打开信任
添加解密 hostname
在 QX 配置文件 [mitm] 段添加 hostname,开启 MitM 总开关
[mitm]
passphrase = your_passphrase
p12 = (Base64证书内容)
hostname = *.weibo.com, api.weibo.cn
# 使用远程脚本(BoxJs 等)
skip_validating_cert = false
[rewrite_remote]
# 订阅远程重写规则集(含MitM hostname)
https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/Advertising.conf, tag=去广告规则, update-interval=86400, opt-parser=true, enabled=true
常见问题与解决方案
Q1:安装证书后 App 仍然提示"连接不安全"或 SSL 错误,怎么办?
最常见原因是忘记在"证书信任设置"中手动信任证书。iOS 安装描述文件只是"安装",但要作为受信任根证书使用,必须额外在"关于本机 → 证书信任设置"中打开开关。这个步骤与安装步骤是分开的,很多用户会遗漏。
Q2:开启 MitM 后某些 App 崩溃或白屏,如何解决?
部分 App 实现了 SSL Pinning(证书固定)技术,会主动验证服务端证书指纹,不接受第三方 CA。解决方法:在 hostname 中用 - 前缀排除该 App 的域名,或者专门针对该 App 关闭 MitM。银行类 App、支付类 App 几乎都有 SSL Pinning,强烈建议将其域名加入排除列表。
Q3:MitM 功能会影响代理节点速度吗?
解密 HTTPS 流量需要额外的 CPU 运算(TLS 握手+重加密),会轻微增加延迟(通常 5-15ms)。对于日常浏览影响微不足道,但高频大量解密(如抓包调试)会明显消耗 CPU 和电量。建议只对需要解密的特定域名启用 MitM,不要使用 * 全局解密。
Q4:MitM 证书更换设备后需要重新安装吗?
是的。CA 证书是与设备绑定的,更换设备或重装系统后需要重新生成并安装证书。部分工具(如 Surge)支持导出 CA 证书在多设备间共享,但对于安全性要求高的场景建议每台设备独立生成。
Q5:Shadowrocket 的 MitM 和 Surge 的 MitM 有什么区别?
功能上类似,但深度不同。Surge 的 MitM 与其 Script 引擎深度集成,支持复杂的 JS 脚本操作响应体、修改 HTTP Header;Shadowrocket 的 MitM 相对基础,主要用于触发脚本。Quantumult X 介于两者之间,通过"重写"规则支持 URL 替换、Header 修改和响应体修改,操作简单直观。
Q6:在哪里找安全可靠的脚本资源?
推荐来源:GitHub 上的开源脚本项目(如 NobyDa、DivineEngine 的脚本集)、各代理工具社区(Telegram 群组、论坛)。安全注意事项:只使用开源可审查的脚本,不要运行来源不明的 Base64 混淆脚本,定期检查已安装的脚本权限。
三款工具 MitM 能力对比
| 功能 | Shadowrocket | Surge | Quantumult X |
|---|---|---|---|
| HTTPS 解密 | ✓ | ✓ 最全面 | ✓ |
| JS 脚本引擎 | 基础 | 完整 | 较完整 |
| URL 重写 | ✓ | ✓ | ✓ |
| Header 修改 | 部分 | ✓ 完整 | ✓ |
| 远程脚本订阅 | 有限 | ✓ | ✓ 最便捷 |
| 操作难度 | 简单 | 较复杂 | 中等 |
配合 MitM 的实用脚本场景
开启 MitM 后,结合 JavaScript 脚本可以实现许多实用功能。以下是几个典型使用场景:
🚫 App 内广告过滤
通过拦截广告 API 请求(如 ad.example.com/show)并返回空响应,实现去除 App 内置广告。常见应用:哔哩哔哩开屏广告、微博广告、爱奇艺开屏等。
适用工具:Shadowrocket(脚本)/ Surge(Script)/ Quantumult X(重写)
💰 价格查询与比价
通过解析购物 App 的 API 响应,提取商品历史价格或其他地区价格,帮助判断是否处于真实低价。部分脚本还支持自动提醒降价。
常用脚本:京东比价脚本、淘宝历史价格等
🔓 会员功能解锁
通过修改 App API 响应中的会员标识字段,实现部分应用的功能解锁。注意:此操作可能违反应用服务条款,请自行评估法律风险。
仅供学习了解,请支持正版服务
🔍 App 行为分析
开发者/安全研究者可以通过 MitM 查看 App 发送的所有 API 请求,分析数据收集行为、调试 API 接口、查找安全漏洞等。
适合:iOS 开发者、隐私研究者
MitM 安全注意事项
⚠️ 重要安全提示
- • CA 证书权限极高:安装后代理工具可以解密任意 HTTPS 流量,务必保管好配置文件(含 p12 证书私钥)
- • 不要共享含 CA 的配置文件:他人获得你的 CA 私钥后可以冒充任意 HTTPS 站点
- • 银行和支付类 App 不要开启 MitM:即使有 SSL Pinning 保护,也建议明确排除这些域名
- • 只使用可审查的开源脚本:混淆过的商业脚本存在数据收集风险
- • 定期检查已安装的脚本:脚本订阅更新后内容可能改变,建议定期审查
高级技巧:远程脚本订阅与自动更新
手动添加脚本效率低,主流 iOS 代理工具支持"远程脚本订阅"功能,可以一键添加社区维护的脚本集并自动保持最新版本。
Quantumult X 远程重写订阅
[rewrite_remote]
# 订阅远程重写/MitM 规则集
# opt-parser=true 表示支持使用解析器处理配置文件
https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Rewrite_lhie.conf, tag=lhie去广告, update-interval=86400, opt-parser=false, enabled=true
https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rewrite/QuantumultX/Advertising/Advertising.conf, tag=blackmatrix7广告过滤, update-interval=86400, opt-parser=false, enabled=true
Surge 外部规则集与脚本
[Script]
# 远程脚本(定期自动更新)
bilibili-ads = type=http-response, pattern=^https://api\.bilibili\.com/x/resource/show/skin, script-path=https://raw.githubusercontent.com/example/bilibili-clean.js, requires-body=true, max-size=32768
[MITM]
hostname = *.bilibili.com, api.bilibili.com
脚本安全警告:远程脚本每次更新后内容可能发生变化。建议只订阅 GitHub 上有明确社区审核、Stars 数量较多的知名仓库,并关注仓库的 issue 和 commit 记录,及时发现异常更改。
MitM 快速配置检查清单
配置完成验收清单
各工具 MitM 功能详细对比
在三款主流 iOS 代理工具中,MitM 的实现深度和功能边界有明显差异:
🚀 Shadowrocket MitM 特点
- • 配置最简单,适合入门用户,安装证书后即可启用
- • 支持基础脚本(http-response / http-request 类型)
- • 支持 URL 重写(reject / 302 跳转 / 内容替换)
- • 脚本能力相比 Surge 有限,不支持 persistent-store(持久存储)
- • 配置文件中 hostname 修改后需重启才生效
⚡ Surge MitM 特点
- • 最完整的 JS 引擎,支持 $httpClient、$persistentStore 等 API
- • 支持 Mock API(模拟接口响应)用于开发调试
- • 支持 Body Rewrite(响应体内容替换,正则匹配)
- • 可在脚本中读写持久化变量(跨请求状态保持)
- • macOS 版额外支持 TCP Override 和端口转发
💎 Quantumult X MitM 特点
- • 远程重写订阅支持最友好,可一键订阅社区规则集
- • 支持 URL 正则匹配替换(rewrite 规则)
- • JS 脚本能力介于 Shadowrocket 和 Surge 之间
- • "抓包"功能界面直观,适合分析 App 流量行为
- • 支持通过 BoxJs 可视化管理脚本配置项
MitM 与 VPN 节点速度的关系
很多用户担心开启 MitM 会影响代理节点的连接速度。实际测试数据如下:
MitM 对速度的影响主要体现在首次 TLS 握手阶段(需要额外的证书验证和重加密操作),后续同一域名的连接因 TLS Session 复用而几乎无额外开销。对于日常浏览体验,5-15ms 的额外延迟基本感知不到,只有在频繁建立新连接的场景(如高并发 API 测试)才会有明显影响。
配合 VPN07 千兆带宽节点(实测速度 820Mbps+),即使开启 MitM 功能也能保持极高的实际传输速度,让 iOS 代理工具的脚本功能完全发挥而不损失性能。
常见 MitM 故障排查
问题:Safari 可以正常解密,但 App 仍然报 SSL 错误
解决方案:检查 App 是否实现了 SSL Pinning,在 hostname 中用 -*.appname.com 排除该 App 的所有域名。Safari 使用系统信任证书,而 App 可以自行实现证书验证逻辑,两者行为不同。
问题:重启 iPhone 后 MitM 突然失效,需要重新配置
原因通常是 CA 证书过期(部分工具生成的证书有效期为1年)。进入工具的 MitM 设置,查看证书到期时间,如已过期需重新生成并安装。建议每年在手机日历中设置提醒。
问题:脚本运行但没有效果(广告仍然显示)
排查步骤:① 确认 MitM 已对目标域名启用(hostname 中有对应域名);② 在工具的活动/日志面板确认脚本被触发(有执行记录);③ 检查脚本版本是否过期(App 更新后 API 路径可能变化);④ 在 Quantumult X 中使用"抓包"功能查看实际请求路径是否与脚本匹配。
问题:升级 iOS 系统后 MitM 无法正常工作
iOS 大版本升级(如 iOS 17 → iOS 18)有时会重置证书信任设置,但不会删除已安装的描述文件。解决方案:重新进入 iOS 设置 → 通用 → 关于本机 → 证书信任设置,重新打开对应 CA 证书的信任开关即可,无需重新安装证书。
问题:如何验证 MitM 是否正常工作
使用 Safari 访问任意 HTTPS 网站,点击地址栏左侧的锁图标查看证书信息——如果发行者显示为代理工具的 CA 名称(如"Shadowrocket CA"),说明 MitM 已在工作。如果发行者仍是原网站的 CA(如 DigiCert 或 Let's Encrypt),则 MitM 未生效,需检查证书信任设置。
2026年推荐组合:对于大多数用户,推荐使用 Shadowrocket + VPN07 订阅的组合——Shadowrocket 提供最完整的协议支持和易用的 MitM 配置,VPN07 提供 70+ 国家的高质量节点(千兆带宽,稳定运营十年)。如果你是开发者或脚本发烧友,则推荐 Surge 5 + VPN07,享受 Surge 强大的 MitM 脚本引擎。
💡 MitM 使用总结
MitM 是 iOS 代理工具中最强大但也最需要谨慎使用的功能之一。正确配置后,它能让你的代理工具从"网络通道"升级为"智能流量处理平台"——去广告、价格分析、流量调试无所不能。
关键原则:最小化解密范围(只添加真正需要的域名到 hostname),使用可信脚本来源(GitHub 开源可审查),排除敏感应用(银行、支付、医疗)。遵循这三个原则,MitM 功能可以安全地增强你的网络体验。