移动端 App 测试入门(3)----Charles使用
1. 什么是Charles
Charles(俗称青花瓷)是一款跨平台 HTTP/HTTPS 代理抓包调试工具,支持 Windows、macOS、Linux,是前端、移动端、测试工程师最常用的接口调试工具。
本质是本地代理服务器(默认监听 8888 端口),专门监控、拦截、修改电脑 / 手机 / 小程序所有网络请求,可完整解析加密 HTTPS 流量,相比 Fiddler 更适配 Mac、移动端抓包,界面直观易用。
2. Charles工作原理(中间人 MITM 代理)
2.1 基础 HTTP 抓包流程(明文)
- 电脑 / 手机配置代理:IP 为电脑本机 IP,端口 8888,所有网络流量强制走 Charles;
- 客户端(浏览器 / App)发请求 → 先到达 Charles;
- Charles 复制记录完整请求(URL、Header、参数、Cookie),再转发给真实服务器;
- 服务器返回响应 → 先到 Charles,记录响应体、状态码;
- Charles 把数据原样返回给客户端。 数据流:客户端 ↔ Charles代理 ↔ 远程服务端
2.2 HTTPS 解密核心原理(中间人机制)
HTTPS 默认端到端加密,Charles 靠自签根证书实现解密,分两条加密链路:
- Charles 向客户端出示Charles 根证书,和手机 / 电脑建立第一条 SSL 加密通道;
- Charles 再用正常证书和目标服务器建立第二条 SSL 加密通道;
- Charles 在中间完成解密→查看 / 修改→重新加密转发;
- 前提:客户端必须手动安装并信任 Charles 根证书,否则会报证书不安全、抓不到明文 HTTPS 内容。
简单类比:Charles 像中介,客户端以为在直连服务器,服务器以为在直连客户端,所有对话中介都能看见、修改。
3. 抓取http请求
我们安装Charles后默认就会抓取我们电脑浏览器的所有http请求无需做任何配置,如果要抓取App端的请求则需要进行如下设置:
先保证电脑和手机是使用同一个wifi,打开手机的wifi,点击修改网络,添加如下代理信息,
注意:这里的代理主机名是电脑的局域网ip,可以通过ipconfg命令查询:
端口号8888对应的是Charles默认的代理端口号:
配置完成后即可抓取到
4. 抓取https请求
4.1 电脑端安装证书
https请求是加密的我们需要安装证书才能看到https请求信息:
配置代理
4.2 手机端安装证书
给手机端也按照证书:
在手机浏览器访问:
charlesproxy.com/getssl
或:chls.pro/ssl
会自动下载证书
安装:
打开模拟器设置 → 安全 → 加密与凭据 →安装证书 → 从存储设备安装→ 选择下载的文件
注意:安卓7版本之后ssl协议不再信任用户凭证,需要把证书安装到系统目录。
我们直接通过文件管理器把我们安装的用户证书文件移动到系统证书目录下即可
用户证书文件目录:/data/misc/user/0/cacerts-added/
系统证书文件目录:/etc/security/cacerts/
5. 弱网配置
配置位置:
配置面板:
参数说明:
- 带宽 (kbps)
- 单位:千比特每秒(注意和 KB/s 区分:1 KB/s = 8 kbps)
- 下载:模拟服务器传给客户端的最大下行速度,数值越小网速越慢;
- 上传:模拟客户端发给服务器的最大上行速度; 示例图中 57.6kbps 下载、33.6kbps 上传,是老式拨号 Modem 极低网速。
- 利用率 (%):取值 0~100 表示实际占用带宽的比例,不是跑满你设置的带宽上限。 例:带宽设 1000kbps,利用率 70% → 实际可用带宽只有 700kbps; 用来模拟网络拥堵、带宽被其他程序抢占的场景。
- 往返延迟 (ms):客户端发请求到服务器、再收到响应的来回基础延迟。250ms 属于偏高延迟(4G 一般几十 ms,2G / 弱网常 200~800ms);数值越大,接口加载、页面响应越卡顿,模拟远距离服务器、基站信号差。
- MTU (bytes) 最大传输单元:单条网络数据包最大字节大小。576:老式拨号网络标准小包;宽带一般 1500;MTU 越小,数据包拆分越多,网络传输效率越低,容易出现分包超时、加载缓慢。
- 可靠性 (%):代表数据包不丢包的概率,100% = 0 丢包;90% = 10% 概率丢包;丢包后会触发重传,页面 / 接口明显卡顿、加载失败、图片裂图;测试弱网下接口重试、断线重连逻辑必调这个参数。
- 稳定性 (%):控制延迟、带宽是否平稳,100% 代表完全稳定无波动;
数值越低,网络抖动越大:延迟忽高忽低、网速忽快忽慢,模拟地铁 / 电梯里信号跳变场景。 - 不稳定质量 (%)(左右两框:下载 / 上传)配合「稳定性」使用,定义抖动幅度上限:例:稳定性 50%、不稳定质量 80% → 延迟 / 带宽会在基准值 ±80% 范围内剧烈浮动;用来模拟信号时好时坏、网速跳变的真实手机移动网络。
补充使用场景总结
- 模拟 2G / 拨号极低网速:调小下载 / 上传带宽;
- 模拟跨地域高延迟接口:增大往返延迟 ms;
- 模拟网络丢包闪退 / 加载失败:降低可靠性(<100%);
- 模拟地铁信号抖动:降低稳定性 + 调高不稳定质量;
- 只针对单个接口弱网:勾选「仅针对所选 hosts」,添加目标域名。
