简介
Charles中文名叫青花瓷
它是一款基于HTTP协议的代理服务器
通过成为客户端或者浏览器的代理
然后截取请求和请求结果达到分析抓包的目的。
特点
- 跨平台
- win
- linux
- mac
- 半免费
- 启动等待
- 运行30分钟会强制重启
原理
前置步骤
- 需要运行Charles并配置代理
- 在客户端上面需要配置代理
步骤
- 由客户端发送请求
- Charles接收再发送给服务端
- 服务端返回请求结果给Charles
- 由Charles转发给客户端
优点(相对于fiddler)
- 跨平台
- 支持按域名和按接口查看报文,简洁明了
- 支持反向代理
- Charles的网络限速可以选择网络类型
- 支持AMF协议的解析
安装与配置
安装
https://www.charlesproxy.com/download/
破解
https://www.zzzmode.com/mytools/charles/
下载完成之后,将charles.jar放到Charles的安装目录下的lib文件夹,覆盖同名文件。
组件介绍
Charles代理设置
- 获取
客户端代理设置
- Android
- win (Charles抓取本机的请求,此项会默认设置,本机之外的IP需要手动设置,如上)
应用
支持HTTP与HTTPS代理
-
获取 代理服务器的IP 和 代理的端口
-
在客户端配置代理
- 如果代理服务器与客户端为同一台主机,(即我们在客户端安装Charles作为代理服务器),相关参数会自动配置,如上图
- 否则需要我们在客户端(PC端和移动端)手动配置,(配置方法参上)
-
至此就可以对HTTP协议的请求进行抓包,断点调试,弱网测试,重发等操作
-
对于HTTPS协议的请求,我们需要在客户端安装证书,以及在代理服务器上设置SSL代理,具体方式如下
Charles抓取https报文
-
win证书配置
-
Android证书配置
- chls.pro/ssl
- 去除勾选 windows proxy,排除干扰
-
Charles https 代理设置
除了以上的在客户端安装证书,我们还需要带代理服务器上进行如下设置
参数解释
Filter : 过滤,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求
Overview : 查看这次请求的详细内容,例如耗时详细列车了请求开始时间、结束时间,响应开始时间、结束时间,总耗时、DNS耗时、网络延时等。
对于Size也详细列出了请求头大小、响应头大小、压缩比例等内容。
URL:进行网络请求的链接;
Status:当前状态,complete表示请求完成;
Responce Code:返回码。不同的接口,不同的请求结果,返回码都不同;
Protocol:使用的协议;
Method:请求方式,如GET请求,POST请求等;
Kept Alive:判断当前是否正在链接(活跃);
Content-Type:发送的内容类型,如这里用的是XML文本,以UTF8的方式发送;
Client Address:客户端的IP地址;
Remote Address:远程服务器的IP;
Request Start Time:请求开始的时间;
Request End Time:请求结束的时间;
Response Start Time:返回开始的时间;
Response End Time : 返回结束的时间;
Duration : 总时间;
Request Header :请求的头部大小;
Response Header:返回的头部大小;
Request : 请求发送的大小;
Response:返回数据的大小;
Total:所有数据大小;
Request Compression : 请求压缩;
Response Compression : 返回压缩;
Request : 查看请求内容(底下的Headers,Query String,Cookies,Raw。)
Headers:发送请求的头部信息;
Query String : 发送参数列表;
Cookies: 浏览器缓存;
Raw:发送的原生数据,包括了头部和参数;
Reponse : 查看响应内容
Headers:是返回的头部信息;
Text:返回信息(除去头部)后的文本;
Hex:返回信息的16进制表示;
XML:我返回的数据是XML。如果你返回的是JSON,这里就会显示JSON;
XML Text:如果你返回JSON,这里会显示JSON Text;
Raw:返回的所有原生数据,包括头部;
Summary: 查看发送数据的一些简要信息(主机,状态码,数据的类型,header和body大下,加载时间,总时间)
Chart: Summary中简要信息以图表形式展示
Notes: 其他信息
支持流量控制(弱网测试)
proxy----->throttle setting----->勾选 enabel throttling
其余参数:
-
utilistion 使用率
-
round-trip 延迟
-
MTU 最大传输单元
-
最后一个是 网速不稳定性占比
正常情况请求http://47.94.164.249/usermsg
启用弱网http://47.94.164.249/usermsg
支持断点调试
作用:用来构建异常的测试场景,修改请求及响应
- 右击接口链接,选择"Breakpoints"
- 在浏览器刷新对应接口的页面,或在导航栏 Proxy 点击breakpoints settings
- 此时会自动跳转到Charles并显示出接口请求信息
- 点击"Edit Request" ,修改请求的信息,点击"Execute"
支持网络重发请求
以代替客户端的频繁点击操作
或者通过选中需要重发的请求,
点击重新发送请求按钮,也可实现.