当前位置: 首页 > news >正文

移动端 App 测试入门(3)----Charles使用

1. 什么是Charles

Charles(俗称青花瓷)是一款跨平台 HTTP/HTTPS 代理抓包调试工具,支持 Windows、macOS、Linux,是前端、移动端、测试工程师最常用的接口调试工具。
本质是本地代理服务器(默认监听 8888 端口),专门监控、拦截、修改电脑 / 手机 / 小程序所有网络请求,可完整解析加密 HTTPS 流量,相比 Fiddler 更适配 Mac、移动端抓包,界面直观易用。

2. Charles工作原理(中间人 MITM 代理)

2.1 基础 HTTP 抓包流程(明文)

  1. 电脑 / 手机配置代理:IP 为电脑本机 IP,端口 8888,所有网络流量强制走 Charles;
  2. 客户端(浏览器 / App)发请求 → 先到达 Charles;
  3. Charles 复制记录完整请求(URL、Header、参数、Cookie),再转发给真实服务器;
  4. 服务器返回响应 → 先到 Charles,记录响应体、状态码;
  5. Charles 把数据原样返回给客户端。 数据流:客户端 ↔ Charles代理 ↔ 远程服务端

2.2 HTTPS 解密核心原理(中间人机制)

HTTPS 默认端到端加密,Charles 靠自签根证书实现解密,分两条加密链路:

  1. Charles 向客户端出示Charles 根证书,和手机 / 电脑建立第一条 SSL 加密通道;
  2. Charles 再用正常证书和目标服务器建立第二条 SSL 加密通道;
  3. Charles 在中间完成解密→查看 / 修改→重新加密转发
  4. 前提:客户端必须手动安装并信任 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. 弱网配置

配置位置:

配置面板:

参数说明:

  1. 带宽 (kbps)
    1. 单位:千比特每秒(注意和 KB/s 区分:1 KB/s = 8 kbps)
    2. 下载:模拟服务器传给客户端的最大下行速度,数值越小网速越慢;
    3. 上传:模拟客户端发给服务器的最大上行速度; 示例图中 57.6kbps 下载、33.6kbps 上传,是老式拨号 Modem 极低网速。
  2. 利用率 (%):取值 0~100 表示实际占用带宽的比例,不是跑满你设置的带宽上限。 例:带宽设 1000kbps,利用率 70% → 实际可用带宽只有 700kbps; 用来模拟网络拥堵、带宽被其他程序抢占的场景。
  3. 往返延迟 (ms):客户端发请求到服务器、再收到响应的来回基础延迟。250ms 属于偏高延迟(4G 一般几十 ms,2G / 弱网常 200~800ms);数值越大,接口加载、页面响应越卡顿,模拟远距离服务器、基站信号差。
  4. MTU (bytes) 最大传输单元:单条网络数据包最大字节大小。576:老式拨号网络标准小包;宽带一般 1500;MTU 越小,数据包拆分越多,网络传输效率越低,容易出现分包超时、加载缓慢。
  5. 可靠性 (%):代表数据包不丢包的概率,100% = 0 丢包;90% = 10% 概率丢包;丢包后会触发重传,页面 / 接口明显卡顿、加载失败、图片裂图;测试弱网下接口重试、断线重连逻辑必调这个参数。
  6. 稳定性 (%):控制延迟、带宽是否平稳,100% 代表完全稳定无波动;
    数值越低,网络抖动越大:延迟忽高忽低、网速忽快忽慢,模拟地铁 / 电梯里信号跳变场景。
  7. 不稳定质量 (%)(左右两框:下载 / 上传)配合「稳定性」使用,定义抖动幅度上限:例:稳定性 50%、不稳定质量 80% → 延迟 / 带宽会在基准值 ±80% 范围内剧烈浮动;用来模拟信号时好时坏、网速跳变的真实手机移动网络。

补充使用场景总结

  • 模拟 2G / 拨号极低网速:调小下载 / 上传带宽;
  • 模拟跨地域高延迟接口:增大往返延迟 ms;
  • 模拟网络丢包闪退 / 加载失败:降低可靠性(<100%);
  • 模拟地铁信号抖动:降低稳定性 + 调高不稳定质量;
  • 只针对单个接口弱网:勾选「仅针对所选 hosts」,添加目标域名。
http://www.jsqmd.com/news/1098912/

相关文章:

  • Claude Code深度体验:Anthropic的编程Agent到底有多强?
  • 【小白也能轻松玩转龙虾】虾壳云一键部署极简流程,低配主机流畅运行 OpenClaw v2.7.9(附最新安装包)
  • 虚拟线程落地实战:从原理到生产级最佳实践
  • 企业 AI 落地六大深坑:预算超支、系统闲置的根因与工程化破局路径
  • 测量显微镜在半导体前道检测中的应用有哪些?
  • 告别卡顿!Performance-Fish让你的《环世界》流畅如鱼得水
  • 基于sigrity的TDR/TDT仿真设计
  • Typora插件只读模式下代码块粘贴的技术挑战与精细化权限控制方案
  • 想做 AI 时代的 FDE?先过三关:找行业、定方向、以身入局
  • 3.2 APP测试实战:功能、性能与ADB全解析
  • 【小白也能轻松玩转龙虾】虾壳云一键部署排错教程,解决 OpenClaw v2.7.9 各类启动报错(附最新安装包)
  • 企业级接口自动化测试平台MeterSphere从零搭建与CI/CD集成实战
  • 别再为Jetson Nano的USB串口乱序头疼了!手把手教你用udev规则固定ROS小车所有外设(附完整配置脚本)
  • 如何永久保存微信聊天记录?WeChatMsg为你提供免费完整的解决方案
  • 2026昆明公司注销超全攻略:材料清单、避坑误区、办理流程
  • Java国密SM4-CBC加密实战:基于BouncyCastle的完整实现与避坑指南
  • SENAITE LIMS:开源实验室信息管理系统完整实战手册
  • 卡在 FDE 入门的哪一步了?先判断该扛还是该换
  • Windows电脑直接安装安卓应用?5分钟搞定APK安装器
  • ai-vi-1
  • xhs项目架构深度解析:小红书Web API逆向工程实践
  • 战略升级!从传统定位到数字定位
  • AUTOSAR E2E Profile规范介绍
  • NcmppGui:快速解锁NCM音乐文件的完整免费指南
  • 计算机毕业设计之高校科研成果管理系统
  • MySQL数据库从入门到精通:核心概念、SQL语法与实战教程
  • 堆的分代与垃圾回收
  • 终极Windows窗口强制调整工具:轻松解决顽固窗口大小问题
  • Web漏洞扫描工具实战指南:从选型配置到自动化集成
  • Python之yandex-annlib包语法、参数和实际应用案例