目录:
一、charles是什么?
二、charles使用前准备
三、SSL安装证书常见问题
四、Charles主要功能
1.charles界面简介
2.常用功能介绍
(1)过滤网络请求
(2)模拟慢速网络
(3)修改网络请求内容
(4)给服务器做压力测试
------------------------------
一、charles是什么?
1.Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。
2.该软件是用Java写的,能够在Windows,Mac,Linux上使用。
3.支持抓去http、https协议的请求,不支持socket
4.charles会自动配置IE浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了
二、charles使用前准备
1.安装Charles的时候要先装好Java环境。
2.需要Mac上的破解版
3.需要下载根证书
4.移动设备如果想抓https的请求数据,需要安装ssl证书
5.代理设置:
三、SSL安装证书常见问题
1.ios 10.3以上,Charles抓https的请求都会失败,提示错误信息为
Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate.
解决方法是:
设置->通用->关于本机->证书信任设置,把安装的证书后面的开关打开。
注:虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
2.华为、小米手机有点特殊。
浏览器下载好证书后,不能直接安装,提示打不开文件,需要到设置-wifi,点击高级,安装证书
3.需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,可以在该请求上右击,选择 Enable,如下图所示:
四、Charles主要功能
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
1.charles界面简介
1.clear
2.stop recording/start recording
3.start throtting/stop throtting
4.Enable breakpoints/disable breakpoints
5.compose
6.repeat
7.显示模式
charles抓包的显示,支持两种模式,Structure和Sequence,其特点分别如下。
Structure 视图将网络请求按访问的域名分类。可以很清晰的看到请求的数据结构,而且是以域名划分请求信息的,可以很清晰的去分析和处理数据
Sequence 视图将网络请求按访问的时间排序。可以很清晰的看到全部请求,不用一层一层的去点开,这里是以数据请求的顺序去执行的。
大家可以根据具体的需要在这两种视图之前来回切换。
2.常用功能介绍
(1)过滤网络请求
通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:
方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://wonapi.maxleap.com , 那么只需要在 Filter 栏中填入wonapi 即可。
方法二:在 Charles 的菜单栏选择 “Proxy”–>“Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:
通常情况下,我们使用方法一做一些临时性的封包过滤,使用方法二做一些经常性的封包过滤。
方法三:
方法三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
(2)模拟慢速网络
在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。
在 Charles 的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:
如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
修改网络请求内容
(3)修改网络请求内容
有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。
1.在相应的网络请求上点击右键,选择 “beakpoints”
2.重新执行这个请求
3.点击edit,编辑请求,点击execute
4.进入编辑响应页面。点击execute。
5.查看手机端响应结果。
注意:compose也能达到相同效果,但仅针对当前此次请求。而打了断点,每次发送这个请求,都会要求你去编辑。
(4)给服务器做压力测试
我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。
我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:
可以发现该请求的处理时间,是随着迭代次数的增加和并发数的增加,而增加的。
-------------------
扩展:
什么是SSL?
SSL(Secure Sockets Layer 安全套件层)
https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。
HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。