Skip to content

抓包工具 Charles

中文名:青花瓷 ,Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

Charles 主要的功能和使用场景包括

  • 截取 Http 和 Https 网络封包,抓取接口请求定位问题;抓取接口请求获取接口信息做接口测试;
  • 支持重发网络请求,方便后端调试;
  • 支持修改网络请求参数;
  • 支持网络请求的截获并动态修改,模拟慢速网络;

charles相当于一个插在服务器和客户端之间的“过滤器”;

当客户端向服务器发起请求的时候,先到charles进行过滤,然后charles再把最终的数据发送给服务器;

注意:此时charles发给服务器的数据,不一定是客户端请求的数据;charles在接到客户端的请求时可以自由的修改数据,甚至可以直接Block客户端发的请求;

服务器接收请求后的返回数据,也会先到charles,经过charles过滤后再发给客户端;

同理:客户端接收的数据,不一定就是服务器返回的数据,而是charles给的数据;

正因为上面的原理,所以charles能实现的功能,对前端开发者和测试人员来说非常有吸引力,相当于请求和响应都可控的,而且charles为了控制更加方面,提供很多简洁的操作;

Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

软件安装

下载地址: https://www.charlesproxy.com/

激活

Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

生成激活码

Charles只有30天免费试用期,期间会提示购买激活码。网上有免费生成激活码的工具。免费生成激活码在线网址:https://www.zzzmode.com/mytools/charles/

输入自定义用户名,点击生成即可获取激活码。

web抓包

Charles Web抓包非常简单,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置。

  • 确保 Charles 处于 Start Recording 状态。
  • 勾选菜单栏 Proxy — Windows Proxy 和 Proxy —Mozilla FireFox Proxy

接下来通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。

抓取HTTPS协议的请求

下载证书

点击help—ssl Proxying—install Charles Root Certificate

Charles安装证书

选中当前用户,点击下一步, 选择受信任的根证书颁发机构

提示导入成功,点击确定

浏览器安装Charles证书

点击help—SSL Proxying—Save Charles Root Certificate

选择Cer格式文件保存到本地, 记得文件夹需要添加一个新的名称

到浏览器安装cer证书。以google为例,点击 设置-隐私设置与安全性-安全-管理证书,导入证书

Charles设置抓取https请求

点击Proxying—SSL Proxying Setting,勾选Enable SSL Proxying,在include添加*:443 和 :,点击确定。

查看本机ip

  • 方法一: cmd -> ipconfig 找到ipv4地址
  • 方法二: 在charles中,help -> Local Ip Address查看。

https的 SSL端口配置

http是默认配置好的,要是默认安装完没配置好,我们就自己配置一下,默认的端口号是“8888”我们后面设置手机代理的的时候也要注意这个端口要保持一致。

手机端抓包

手机连接同一网络并配置代理

打开手机的设置页面;

选择【无线局域网】–> 点击【配置代理】–>【手动】;

接下里验证下手机请求,当我们看到Charles里能抓到这个连接,就说明配置没问题,看到unknown,这个不要紧,那是我们没有安装针对手机端的证书,下面继续我们手机端HTTPS证书安装

HTTPS协议

1、点击顶部菜单栏【Help】–>选择【SSL Proxying】,点击【install Charles Root Certificate】安装Charles根证书即可;

2、点击安装【Install Charles Root Certificate On a Mobile Device or Remote Browser】在移动设备上或远程浏览器安装证书即可;(这里和上面安装一样)

Charles过滤

通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://ceshi.com, 那么只需要在 Filter 栏中填入 ceshi 即可。

方法二:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:

弱网测试

Charles配置弱网设置

1、点击【Proxy】–>【Throttle Setting】

2、勾选上【Enable Throttle】,也可以勾选【only for selected host 】 设置一个指定注解访问进行网络限制,不影响其他软件;

3、在【Throttle preset】选择常见预设的网络情况,也可以在【Bandwidth】自己设置网络的上传和下载速率

修改请求数据

1、选择请求会话右键勾选【Breakpoints】这是我们会发现工具栏有个六边形按钮已经变为红色

2、设置断点,点击菜单栏【proxy】勾选【Breakoint Setting …】这是会弹出断点设置弹窗;

3、在弹出的断点设置弹窗,双击想打断点的接口,进行断点编辑;

4、编辑断点,如果修改Request数据,九江Request勾选,如果修改Response数据,就将Response勾选,当然你也可以都勾选;

5、在手机上重新进行请求,Charles 会自动进行拦截并跳转到请求数据修改页面;

这时,服务端给我们返回的数据就是有关jmeter的数据了

重复发送请求

在我们的测试工作中,可能你会发先一个bug,开发会让你在操作一遍,他要查看日志经i选哪个定位分析,这时候,在客户端上进行操作一遍就会麻烦,这是直接用Charles 发送一遍重复的请求就可以了,并且,重新发送请求也可以帮助我们进行功能测试;

选择需要重新发送请求的会话上,直接点击工具栏【重新按钮】

Compose编辑接口

在我们的测试工作中,可能需要发送不同的参数进行请求。选择需要修改的请求,右键选择【Compose】这时多出一个笔的请求;

服务器压力测试

Charles 还有一个比较有意思的功能,它能勾简单的给服务器进行压力测试;

1、在进行压力测试的请求会话上右击,选择【Repeat Advanced】

2、在弹出框中,输入并发线程数以及压力次数点击进行测试

TIP

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_56331124/article/details/144911651

粤ICP备20009776号