news 2026/7/16 8:37:55

Charles搭配MuMu模拟器抓取HTTPS数据包实战(附疑难排查)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Charles搭配MuMu模拟器抓取HTTPS数据包实战(附疑难排查)

1. 环境准备与工具安装

第一次用Charles抓MuMu模拟器的HTTPS包时,我踩了个大坑——Android 7.0之后系统不再信任用户安装的证书。折腾了整整两天才发现问题根源,后来摸索出这套完整方案。先说说需要准备的家伙:

  • Charles 4.6+(官网下载或汉化版都行)
  • MuMu模拟器12(实测6.0版本会有ADB连接问题)
  • OpenSSL 3.0(证书转换必备)
  • ADB工具包(建议用MuMu自带的)

安装时有个细节要注意:Charles首次启动会提示防火墙权限,这时候一定要勾选"专用网络和公用网络",否则后续抓包会漏数据。我遇到过好几次因为漏选导致只能抓到HTTP请求的情况。

2. 证书配置全流程

2.1 生成系统级证书

普通用户证书在Android 7.0+上就是个摆设,必须把证书塞进系统信任区。具体操作:

  1. 在Charles导出证书:Help → SSL Proxying → Save Charles Root Certificate
  2. 用OpenSSL转换格式:
openssl x509 -inform PEM -subject_hash_old -in charles.pem

记住输出的哈希值(比如a2414e42),把证书重命名为a2414e42.0

踩坑提醒:Windows下用cmd执行时,如果报"openssl不是内部命令",需要把OpenSSL的bin目录加入系统PATH。我建议直接重启电脑生效。

2.2 推送证书到系统目录

这里需要ADB操作:

adb push a2414e42.0 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/a2414e42.0

如果遇到Read-only file system错误,先执行:

adb remount

这个步骤我失败过三次,后来发现是MuMu的root权限没开彻底。需要在模拟器设置中心→其他设置里,把"开启手机Root权限"和"可写系统盘"都勾上。

3. 网络代理配置技巧

3.1 Charles端设置

代理配置有个隐藏技巧:不要用默认8888端口!很多国产软件会占用这个端口导致冲突。我习惯用59999这种冷门端口,具体设置路径: Proxy → Proxy Settings → HTTP Proxy

SSL代理这里要特别注意:

  1. 勾选Enable SSL Proxying
  2. 添加Location时Host填*,Port填*
  3. 建议勾选"Use HTTP/2"

3.2 模拟器网络配置

MuMu的虚拟网络比较特殊,需要处理10.0.2.2这个特殊IP:

  1. 设置→WLAN→长按已连接网络→修改网络
  2. 代理选手动,主机名填10.0.2.2,端口填Charles的监听端口
  3. 高级选项里把"绕过本地代理"勾掉

实测发现Android 9+版本需要额外操作:

adb shell settings put global http_proxy 10.0.2.2:59999

4. 疑难问题排查指南

4.1 证书安装失败

症状:能抓到HTTP包但HTTPS全是乱码 排查步骤:

  1. 检查/system/etc/security/cacerts/下证书权限是否为644
  2. 执行adb shell ls -l /system/etc/security/cacerts/ | grep charles看证书哈希前缀是否匹配
  3. 在模拟器设置→安全→信任的凭证→系统,查看是否存在Charles证书

4.2 网络连接异常

症状:模拟器无法联网或Charles无数据 解决方案:

  1. 关闭Charles的Windows系统代理(Proxy→Windows Proxy取消勾选)
  2. 在Rewrite设置中添加规则:
    • Match Type选Host
    • Match Value填10.0.2.2
    • Replace Value填127.0.0.1
  3. 重启模拟器网络服务:
adb shell am broadcast -a android.net.wifi.WIFI_STATE_CHANGED

4.3 数据包不完整

症状:Response内容截断或缺失Header 优化方案:

  1. 在Charles的Throttle Setting里关闭带宽限制
  2. 调整Proxy→Recording Settings→最大缓存改为1024MB
  3. 对于WebSocket协议,需要单独启用SSL代理

有次分析某电商APP时,发现商品详情API总是抓不全。后来发现是Charles的"Enable gzip compression"没关,关闭后立即恢复正常。这种细节问题特别容易被忽略。

5. 高阶技巧与应用

5.1 批量导出证书

当需要多台设备协作时,可以批量处理证书:

Get-ChildItem *.pem | ForEach { $hash = openssl x509 -subject_hash_old -in $_ Rename-Item $_ "$hash.0" }

5.2 自动化配置脚本

我整理了个一键配置脚本:

#!/bin/bash # 自动配置MuMu抓包环境 adb connect 127.0.0.1:7555 adb root adb remount adb push ${CERT_NAME} /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/${CERT_NAME} adb shell settings put global http_proxy 10.0.2.2:59999 echo "配置完成,请重启模拟器"

5.3 特定APP抓包技巧

针对不同应用场景:

  • 微信小程序:需要额外配置WeChat X5调试
  • Flutter应用:在启动参数添加--disable-dart-ssl
  • 游戏加速器:关闭TCP Fast Open功能

最近帮朋友分析一个混合开发APP时,发现常规方法抓不到RN模块的请求。最后是通过在Charles的SSL Proxying Settings里添加具体域名解决的,这种问题需要具体问题具体分析。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 8:37:37

Grok Build:SpaceXAI 基于终端的 AI 编码代理,功能强大且支持多模式!

1. GitHub 平台功能与解决方案GitHub 平台提供了丰富的功能和多样的解决方案。在平台功能方面,有 AI 代码创作,如 GitHub Copilot 可借助 AI 编写更优质的代码,GitHub Copilot 应用程序是从问题到合并的直接代理,MCP 注册表新增集…

作者头像 李华
网站建设 2026/7/16 8:37:27

一文掌握 Git 核心工作流(从零配置到团队协作全流程)

1. Git入门:从零开始配置环境 第一次接触Git时,我盯着命令行窗口发呆了半小时——这玩意儿怎么比Linux命令还难记?后来发现其实Git就像个智能文件管家,只不过需要先给它办个"入职手续"。 安装Git最简单的方式是直接官网…

作者头像 李华
网站建设 2026/7/16 8:37:24

从源码到部署:mem_hot开发者必备的完整构建与调试指南

从源码到部署:mem_hot开发者必备的完整构建与调试指南 【免费下载链接】mem_hot mem_hot is a memory heat analysis tool designed to identify and analyze the heat of memory pages based on ARM SPE (Statistical Profiling Extension). 项目地址: https://g…

作者头像 李华
网站建设 2026/7/16 8:37:24

2026年秋招群面突围:AI全真模拟攻克发言节奏难题——3周从透明人到主导者实测方案

文章目录一、群面为什么让90%的求职者「隐形」?1.1 群面发言的三大认知误区1.2 传统备战 vs AI辅助备战二、测评方法论:群面场景的四维评估标尺2.1 测评维度定义2.2 评分标准三、5款AI群面/面试模拟工具逐一深度测评3.1 鹅来面 —— 1v1 AI面试官追问训练…

作者头像 李华
网站建设 2026/7/16 8:35:14

如何5分钟实现Unity游戏实时翻译:XUnity.AutoTranslator完全指南

如何5分钟实现Unity游戏实时翻译:XUnity.AutoTranslator完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否遇到过心仪的外语游戏却因为语言障碍而望而却步?XUnity.Aut…

作者头像 李华
网站建设 2026/7/16 8:32:29

计算机毕业设计之基于springboot和vue的城市交通信息平台系统的设计与实现

本文介绍了一款使用SpringBoot和Vue开发的城市交通信息平台系统,及其设计与实现过程。根据软件工程对软件系统开发定制的规则和标准,详细的介绍了系统的分析与设计过程,并且详细的概括了系统的开发与测试过程。本文的管理系统使用了java进行系…

作者头像 李华