好 — 我把在 Windows 上用 Fiddler 抓取 MuMu(网易/模拟器)流量的完整操作笔记做成了可复制的实操步骤、常见问题与解决方案。包含:代理配置、HTTPS 解密、CA 证书安装(含 Android 7+ 的限制)、 adb 命令、以及遇到问题的排查清单。你可以直接按步骤跑一遍。

目标

在宿主机(Windows)上运行 Fiddler,拦截并分析 MuMu 模拟器里 App / 浏览器的 HTTP/HTTPS 请求/响应。

前提

  • Windows 主机能联网并安装 Fiddler(或 Fiddler Classic)。
  • 已安装 ADB(Android Debug Bridge)工具,并能访问 MuMu(adb devices 能看到设备)。
  • MuMu 模拟器可上网(通过 NAT),或能设置代理。
  • 若需拦截 HTTPS,后续会说明证书安装与 Android 版本限制。

步骤一:准备与开启 Fiddler

  1. 下载并安装 Fiddler Classic(或 Fiddler Everywhere)。
  2. 启动 Fiddler,打开 Tools → Options → Connections
    • 勾选 Allow remote computers to connect(允许远程主机连接)。
    • 确认 Fiddler listens on port(默认 8888),可自行修改。
  3. 如果要抓 HTTPS,打开 Tools → Options → HTTPS
    • 勾选 Capture HTTPS CONNECTsDecrypt HTTPS traffic
    • 若提示生成证书,接受并生成根证书(Fiddler 会在系统证书存储中加入根证书)。
  4. 在 Windows 防火墙中允许 Fiddler / 端口(8888)入站,或临时关闭防火墙以便验证。

步骤二:确认宿主机 IP(供模拟器代理使用)

在命令行运行:

ipconfig

找到你的主机在与 MuMu 互通的网卡 IP(常见是 192.168.1.xxx10.0.x.x)。记下该 IP,下面称为 <HOST_IP>

注意:MuMu 与宿主机网络模式通常是 NAT,宿主机 IP 一般可被模拟器访问。若不确定,用 ping <HOST_IP> 在模拟器 shell 中测试(见 adb shell)。


步骤三:在 MuMu 中配置代理(两种方法)

方法 A:系统 Wi-Fi 代理(持久 / 适用性更好)

  1. 在 MuMu 打开 Settings → Network & internet → Wi-Fi(或长按当前网络) → 修改网络 → 显示高级选项。
  2. Proxy 一项选择 Manual,填写:
    • Proxy hostname: <HOST_IP>
    • Proxy port: 8888(或你在 Fiddler 中设置的端口)
  3. 保存并重连网络。此时大部分应用的 HTTP/HTTPS 流量会走代理(但见下面 Android 7+ HTTPS 限制)。

方法 B:使用 ADB 全局代理(命令行,临时)

adb shell settings put global http_proxy &lt;HOST_IP>:8888

清除代理:

adb shell settings put global http_proxy :0
# 或
adb shell settings delete global http_proxy

方法 B 有时对新版 Android/Wi-Fi 设置影响不同,且只对 HTTP 有效;HTTPS 需要应用支持系统代理。


步骤四:验证代理是否工作(简单测试)

  1. 在 Fiddler 界面看是否有来自 MuMu 的请求出现。
  2. 在模拟器里打开浏览器访问 http://httpbin.org/get 或某个明文 HTTP 地址,观察 Fiddler 是否捕获。
  3. 若看到流量,说明代理设置生效;若没有,检查防火墙或 <HOST_IP> 是否正确。

步骤五:拦截 HTTPS(最容易出坑的部分)

方式一:安装 Fiddler 根证书为“用户证书”

  1. 在 Fiddler 中 Tools → Options → HTTPS → Actions → Export Root Certificate to Desktop(导出 .cer 文件),文件名例如 FiddlerRoot.cer
  2. 把证书推到模拟器并安装:
adb push FiddlerRoot.cer /sdcard/
# 在模拟器上:Settings → Security → Install from storage,选择 /sdcard/FiddlerRoot.cer 并安装为“用户证书”

  1. 浏览器(系统浏览器)通常会信任用户证书,Fiddler 即可解密 HTTPS。你会在 Fiddler 中看到解密后的请求/响应。

限制(重要)

  • Android 7.0(Nougat)起应用默认不信任用户安装的 CA 证书(仅信任 system CA),除非该应用使用了 networkSecurityConfig 明确允许 user CAs。因此:
    • 系统浏览器通常还是信任的(视设备实现)。
    • 大多数第三方 App(特别是采用 okhttp / 自定义网络安全配置的企业 App)不会信任用户证书 → 无法被 Fiddler 解密 HTTPS。

方式二:把证书加入 System CA(需 root 权限)

只有在模拟器被 root 或有权限把证书放入 /system/etc/security/cacerts 才可,使所有应用信任 Fiddler CA。

大致步骤(仅在有 root 的模拟器可行):

  1. 将证书转换为 DER 格式并生成哈希文件名:
# 在 Windows / WSL / Linux 上
openssl x509 -inform PEM -in FiddlerRoot.cer -outform DER -out FiddlerRoot.der
# 得到 hash 名称(Android 6及以前用 subject_hash_old)
openssl x509 -inform DER -in FiddlerRoot.der -subject_hash_old -noout | head -1
# 例如输出 abcd1234
# 重命名为 abcd1234.0
mv FiddlerRoot.der abcd1234.0

  1. 通过 adb push 到 system 证书目录(需要 remount 可写并 root):
adb root
adb remount
adb push abcd1234.0 /system/etc/security/cacerts/
adb shell chmod 644 /system/etc/security/cacerts/abcd1234.0
adb reboot

  1. 设备重启后,系统 CA 中将包含 Fiddler CA,所有 App 的 HTTPS 都能被解密。

警告:修改系统证书存在风险,仅用于测试环境。生产设备不要这样做。

方式三:修改 App 的 networkSecurityConfig(源码/重打包)

如果你能修改 App(测试版),在 res/xml/network_security_config.xml 中允许 user certs 或直接添加 debug-only 信任。适用于你控制的 App。


步骤六:MuMu 特殊注意点(兼容性)

  • 有的 MuMu 版本自带 root 功能或可一键获取 root;若是无 root 的发行版,无法把证书放到 system CA。
  • MuMu 的 Android 版本决定对用户 CA 的信任策略(Android 7+ 限制),建议查看 MuMu 的 Android 版本(系统设置 → 关于手机)。
  • MuMu 可能对网络做 NAT,host IP 若无法访问可尝试 10.0.2.2(部分模拟器的特殊地址指向宿主机);但 MuMu 不一定支持 10.0.2.2,更稳妥用宿主真实 IP。

步骤七:抓包调优、导出、筛选技巧

  • 在 Fiddler 中使用 Filters 筛选 Process / Host / URL,把噪声流量(Windows 更新、服务)过滤掉。
  • 若要只看 MuMu 流量,在 Fiddler 的 Filters 里启用 Show only traffic from browser 并加上主机 IP 或端口条件。
  • 导出会话:File → Export Sessions → All Sessions(支持 SAZ/ HAR 等格式)。
  • 查看请求体 / 响应体:选中会话,查看 Inspectors(Raw / JSON / Text / Image / WebForms)。
  • 若遇到网页资源未正常渲染,检查是否跨域或证书问题导致资源被阻止。

常见问题与排查清单

  1. Fiddler 没捕获到任何请求
    • 确认 Fiddler 允许远程连接并监听正确端口;Windows 防火墙是否阻止。
    • 确认 MuMu 的代理是否设置为 <HOST_IP>:8888(系统 Wi-Fi 代理或 adb 设置)。
    • 在模拟器 adb shell ping <HOST_IP> 测试连通性。
  2. 能抓到 HTTP,但 HTTPS 不显示解密内容
    • 确认 Fiddler 的 HTTPS 解密已启用。
    • 模拟器是否安装了 Fiddler CA(用户证书或系统证书)。
    • App 是否拒绝用户 CA(Android 7+ 限制或 App 使用证书固定 pinning)。
  3. 个别 App 无法被解密(即使装证书)
    • 很可能该 App 使用了 certificate pinning(证书绑定)或自定义 trust manager → 需要使用 Frida 等工具 hook 或在测试环境禁用 pinning。
    • 或 App 的 networkSecurityConfig 明确禁止 user CAs。
  4. 代理配置重复 / 无效
    • 清除 adb 全局代理后重设,或重启模拟器以刷新网络配置。
    • 若有 VPN / 宿主代理冲突,检查链路。
  5. 证书安装失败 / 系统不认
    • 检查证书格式(DER vs PEM)。Fiddler 导出可选 DER。
    • 尝试用系统安装界面安装,或用 root 放到 system CA。

额外技巧与高级方案

  • 使用 Charles / mitmproxy:原理相同,操作也类似;mitmproxy 更适合脚本化。
  • adb reverse(针对本机服务):若要模拟器访问宿主机某服务,可用 adb reverse tcp:8080 tcp:8080(仅对 ADB 设备有效,模拟器需支持)。
  • 若 App 做了 pinning:可用 Frida 动态 hook 绕过 pinning(测试用途),或使用修改过的 APK / debug build。
  • 日志与抓包结合:将 App 日志(logcat)与 Fiddler 抓包时间点对齐,便于问题定位: adb logcat > app.log

最后小结(快速步骤回顾)

  1. 启动 Fiddler,允许远程连接并启用 HTTPS 解密。
  2. 确定 <HOST_IP>(宿主机 IP)。
  3. 在 MuMu 中设置系统代理(<HOST_IP>:8888)或用 adb shell settings put global http_proxy <HOST_IP>:8888
  4. 导出并安装 Fiddler 根证书到模拟器(用户证书),或把其放入 system CA(需要 root)。
  5. 在 Fiddler 中观察/过滤/导出会话;遇 HTTPS 问题按上面排查清单处理。