Charles+MuMu模拟器进行app抓包和调试教程
Charles+MuMu模拟器进行app抓包和调试教程
- 1.Charles下载与安装
- 2.破解
- 3.配置
- 1.Charles HTTPS 解密配置
- 1. 允许模拟器连接(Access Control)
- 2. 开启 SSL 解密(抓 HTTPS)
- 3. 允许透明 HTTP 代理(Enable transparent HTTP proxying)
- 4. 安装并信任根证书(电脑)
- 2.MuMu 模拟器下载安装及代理配置
- 1. 模拟器下载安装
- 2. 模拟器代理设置和Windows代理设置
- 1.模拟器代理配置
- 2.Windows代理设置(默认开启,若未开启请按下操作设置)
- 3. 安装 Charles 证书:
- 4. 验证charles抓包测试
- 4.Charles界面
- 1.顶部菜单栏
- 2. 工具栏
- 3. 主视图切换(Structure / Sequence)
- 4. 请求区
- 5. 底部状态栏
- 5.基础功能
- 1. 过滤请求:
- 1.基础过滤(Filter 输入框):只过滤 请求 URL、请求头、响应体 里的内容。
- 2.Focused
- 3.Settings
- 2. 重复/编辑请求:
- 3. 构造新请求:
- 4. 断点拦截:
- 5. Mock 本地数据:
- 6. 接口重定向:
- 7. 弱网模拟(流量配置):
- 8. 自动改写规则:
Charles 是一款强大的跨平台 HTTP 代理服务器、监视器和反向代理工具。它能够拦截、记录和修改客户端(如浏览器、APP)与服务器之间的网络通信,是 Web 开发、API 调试、性能优化和安全测试领域不可或缺的利器。
接下来通过Charles结合MuMu模拟器进行app抓包和调试。
1.Charles下载与安装
- 官网下载:[https://www.charlesproxy.com/previous-release/download.do#)
双击.msi
点击Next
勾选→Next
选中安装路径→Next
2.破解
1、打开破解地址: https://www.zzzmode.com/mytools/charles/
随便输入数据后点击生成,不要关闭该弹窗
2. 打开charles,点击help,选中Register Charles将获取到的注册码填入对应位置,点击Register重新启动.
3.验证:Help → About Charles
试用期内:显示 “Trial Version”+ 剩余天数
已过期:明确写 “Trial Expired”
已激活:显示 “Registered to: 你的注册信息”
3.配置
1.Charles HTTPS 解密配置
1. 允许模拟器连接(Access Control)
Proxy → Access Control Settings
添加Add:0.0.0.0/0(允许所有设备)
保存并重启 Charles
2. 开启 SSL 解密(抓 HTTPS)
Proxy → SSL Proxying Settings → 勾选 Enable SSL Proxying → 点击 Add,保存并重启 Charles
3. 允许透明 HTTP 代理(Enable transparent HTTP proxying)
打开Charles,点击proxy->proxy settings ,填入代理端口(默认:8888),勾选透明代理Enable transparent HTTP proxying,能自动识别并处理设备的代理请求,减少兼容性问题。
4. 安装并信任根证书(电脑)
Help → SSL Proxying → Install Charles Root Certificate(安装证书)
2.MuMu 模拟器下载安装及代理配置
1. 模拟器下载安装
1.MUMU模拟器下载: MuMuInstaller_1.5.0.7_v2.7.33.0x64_zh-Hans_1691722368.exe
2.安装:
双击.exe,选中自定义安装,勾选协议
打开时选中"继续使用当前版本"
打开浏览器,默认 访问百度页面,正常访问的话模拟器网络没问题
2. 模拟器代理设置和Windows代理设置
1.模拟器代理配置
1.配置WIFI代理
鼠标左键长按,弹出修改网络
代理:手动
代理服务器主机名:电脑IP地址
代理服务器端口:Charles端口,默认8888
修改后重启
2.Windows代理设置(默认开启,若未开启请按下操作设置)
1.开始 → 设置
2. 输入"代理服务器设置"
3. 输入Charles代理的ip和端口,下图是windows系统默认配置的Charles代理服务器的ip(127.0.0.1)和端口。
3. 安装 Charles 证书:
- Charles 导出证书:Help → SSL Proxying → Save Charles Root Certificate → 保存为 zhengshu.pem(D盘)
将保存的证书直接拖进模拟器中,模拟器会提示“已保存到共享文件夹”
查看证书
- MuMu 开启 root:模拟器右上角菜单 → 设置中心 → 其他设置 → 勾选 ROOT 权限 → 保存重启
3.安装证书
确定后需要设置vpn还是啥,忘记截图了,总归就是4个数字,后边用输入密码验证才能打开模拟器界面(类似手机锁屏)
4. 验证charles抓包测试
📌 前提:模拟器与电脑连接 同一 Wi-Fi,且 Charles 代理已开启
模拟器里打开浏览器,访问百度网址:https://www.baidu.com/
Get请求:
Post请求:
4.Charles界面
1.顶部菜单栏
| 菜单 | 核心作用 |
|---|---|
| File | 新建 / 保存 / 导出抓包会话(比如把抓到的请求保存成 .chls 文件) |
| Edit | 复制 / 删除请求、修改 Charles 偏好设置 |
| View | 调整界面布局、显示 / 隐藏工具栏 |
| Proxy | 代理核心设置:端口、SSL 解密、手机接入控制都在这里 |
| Tools | 高级功能:断点、弱网模拟、本地映射、重定向都在这里 |
| Window | 切换会话、打开日志 / 监控窗口 |
| Help | 查看帮助、安装 / 导出根证书 |
2. 工具栏
| 工具 | 功能 |
|---|---|
| 黄色刷子 | 清除当前会话里的所有请求 |
| 红色圆点 | 录制开关(你现在是打开状态,Recording 字样在右下角) |
| 带锁图标 | SSL 代理开关(开启后才能解密 HTTPS 包) |
| 乌龟图标 | 弱网模拟开关(模拟 2G/3G 网络延迟) |
| 六边形图标 | 切换到无干扰模式(隐藏无关请求) |
| 铅笔图标 | 手动修改请求 / 响应 |
| 刷新图标 | 重放选中的请求 |
| 对勾图标 | 验证请求 / 响应的 JSON 格式 |
| 扳手 / 齿轮 | 快速打开常用设置(代理、SSL、断点) |
3. 主视图切换(Structure / Sequence)
两种查看请求的模式:
Structure(域名树模式):按域名分组显示请求,方便你快速找到某个网站 / APP 的所有接口
Sequence(时间线模式):按请求发生的时间顺序排列,方便看请求的先后流程
4. 请求区
左侧请求列表区:显示所有抓到的请求
右侧请求详情区:
| 名称 | 内容 |
|---|---|
| Overview | 请求的基本信息(URL、方法、状态码) |
| Headers | 请求头 / 响应头 |
| Request | 请求体(POST 参数、表单数据) |
| Response | 服务器返回的内容(JSON、HTML、图片等) |
| Summary | 请求耗时、大小等统计信息 |
5. 底部状态栏
左下角:显示当前选中请求的完整信息(你现在显示的就是一个小米手机的网络请求)右下角:Recording 字样表示 Charles 正在录制抓包,红色圆点也处于点亮状态。
5.基础功能
1. 过滤请求:
1.基础过滤(Filter 输入框):只过滤 请求 URL、请求头、响应体 里的内容。
按域名、状态码、Content-Type 过滤,避免信息过载,这里是模糊匹配,只要请求里包含关键词就会被筛选出来,适合快速排查。
1.按域名过滤
baidu / api.baidu.com :只显示 Host 里包含 baidu 的请求
2.按状态码过滤
200 / 404 : 只显示状态码为 304 的请求
3.按Content-Type过滤
json / image:只显示响应类型为 JSON 或图片的请求
2.Focused
不勾选(默认):只是在当前列表里隐藏不匹配的请求,列表结构不变。
勾选:会把匹配的请求隐藏。
3.Settings
1.只过滤 请求 URL、请求头、响应体 里的内容
2.可以设置 白名单 / 黑名单,比如只允许显示某些域名,或者直接屏蔽某些域名。
3.支持正则表达式匹配,适合复杂场景
^hm.baidu.com:只匹配以 hm.baidu.com 开头的请求
2. 重复/编辑请求:
接口重放、参数修改验证、幂等性测试
Repeat:
右键请求 → Repeat
Charles 会立即重新发送一次这个请求,新的请求会出现在列表里,状态码和响应和原请求一致(或不同,看接口是否幂等)
Repeat Advanced(批量 / 并发重复:
Edit:
3. 构造新请求:
自定义 Method/Headers/Body 发请求,替代部分 Postman 场景
步骤:Tools → Compose(Ctrl + M)
4. 断点拦截:
拦截请求/响应,手动修改后放行(请求发出去之前拦住、响应回来之前拦住),用于构建异常的测试场景
Proxy → Breakpoint Settings或Charles 顶部工具栏 → 找到六边形红点图标
Proxy → Breakpoints Settings
访问淘宝官网登录接口进行断点配置:
- 右键点击接口链接,选择“Breakpoints”
- 在浏览器刷新对应接口的页面
- 此时会自动跳转到Charles并显示出接口请求信息
- 点击“Edit Request”,修改请求的信息,点击“Execute”
- 点击"Structure",向下的绿色箭头
5. Mock 本地数据:
将线上接口映射到本地 JSON 文件,前端独立开发调试。
核心是用你自己准备的本地文件 / 固定数据,替换掉服务器真实返回的响应,前端拿到的就是你自定义的假数据,适合调试各种边界场景、异常数据,不用依赖后端接口。
教程:
- 准备Mock数据文件
先根据接口的响应格式,写一个本地文件baidu.json:
百度网页接口:- 给请求配置Map Local(Mock)
百度网站为例:
右键百度接口 → Map Local… →点击 Choose,选择你刚才写好的 baidu.json 文件 →OK- 验证 Mock 是否生效
回到模拟器 / APP,重新访问百度网页:
访问地址:
Tools → Map Local
没有触发Moke之前的接口响应界面:
触发后:
6. 接口重定向:
将测试环境域名指向预发/本地服务
下面访问https://www.taobao.com 重定向到 https://www.baidu.com为例:
配置重定向:Tools → Map Remote…
模拟器访问淘宝官网重定向,跳转到百度官网。
7. 弱网模拟(流量配置):
用来给你的网络请求加上限速、延迟、丢包等限制,模拟用户在 2G/3G / 地铁等弱网环境下的网络表现.
Proxy → Throttle Settings
勾选 Enable Throttling → 选择 3G 或自定义带宽/延迟,选中后下方是对应的配置
保存后工具栏的乌龟图标启动变绿色,可以直接点击乌龟图标开启或关闭弱网
模拟器访问百度页面,设置弱网前:
设置弱网后:肉眼可见总耗时从21ms→ 130ms,总延迟了109ms
8. 自动改写规则:
当某个网络请求命中预设条件时,Charles 自动拦截它,并按规则修改其 请求头、参数、URL、响应体、状态码 等,无需人工干预。
批量修改 Header、Query、Response,如注入测试 Token
步骤:Proxy → Rewrite
访问百度页面:
新增Location 匹配规则
配置自动替换的值,将访问百度页面返回的json格式中的err_no的值为0修改成1
Type:修改位置(请求体,请求头,url,响应体,响应头)
Where:请求,响应
Match:修改前name:名称,Value:值
Replace:修改后name:名称, Value:值
访问百度页面,并查看返回值0是否修改成1
其他类型自行测试,今天的学习到此结束
