测试必备工具之最强抓包神器 Charles,你会了么?

前言

测试必备工具之最强抓包神器 Charles,你会了么?

作为软件测试工程师,大家在工作中肯定经常会用到各种抓包工具来辅助测试,比如浏览器自带的抓包工具-F12,方便又快捷;

比如时下特别流行的Fiddler工具,使用各种web和APP测试的各种场景的抓包分析;比如Wireshark,专注于调试网络问以及和分析网络协议包分析...

然而,今天我要给大家分享的一款抓包工具叫做Charles,同样也是一个抓包神器!

Charles是一款的抓包修改工具,其实也是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。

它是用Java编写的,能支持Win体验可以使用免费试用版本,试用时间为30天。试用期过后每次只能试用30分钟,并且每次启动也会有延时。

Charles主要功能非常丰富,包括:

1、截取HTTP和HTTPS网络协议

2、支持重发网络请求,方便后端调试

3、支持网络请求的截获并动态修改

4、支持网络请求的截获并动态修改

5、支持模拟网络

下载安装包

测试必备工具之最强抓包神器 Charles,你会了么?

去Charles的官网,下载这个工具的安装包:

https://www.charlesproxy.com/download/

测试必备工具之最强抓包神器 Charles,你会了么?

安装

测试必备工具之最强抓包神器 Charles,你会了么?
测试必备工具之最强抓包神器 Charles,你会了么?

双击这个安装包,并且一路next即可完成安装。

运行软件

测试必备工具之最强抓包神器 Charles,你会了么?

安装完成之后,找到这个文件的桌面快捷方式 

测试必备工具之最强抓包神器 Charles,你会了么?

双击打开即可运行软件。

测试必备工具之最强抓包神器 Charles,你会了么?

打开即可看到如上图的界面。

设置代理

测试必备工具之最强抓包神器 Charles,你会了么?

如开头讲到的,Charles是通过将自己设置为电脑或者浏览器的代理从而达到抓包的目的的。

所以设置代理是在菜单栏【Proxy】—【windows Proxy】,勾选即可。

测试必备工具之最强抓包神器 Charles,你会了么?

设置为代理之后,就可以开始抓取数据包了。

视图

测试必备工具之最强抓包神器 Charles,你会了么?

从工具打开后的主页面可以发现,Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

1、Structure 视图将网络请求按访问的域名分类。

这种视图我个人认为非常方便阅读和查找数据报文,因为同一个域名的所有新增请求都会添加到这个域名类中,而不会因为数据包过多而导致不方便查找的问题。

测试必备工具之最强抓包神器 Charles,你会了么?

2、Sequence 视图将网络请求按访问的时间排序

这个视图跟其他的抓包工具就基本类似了。这种视图的一个弊端就是数据包过多会不太方便查找。

测试必备工具之最强抓包神器 Charles,你会了么?

过滤安装包

测试必备工具之最强抓包神器 Charles,你会了么?

Charles也考虑到了数据包过多不方便查找的问题,所以提供了网络请求过滤功能。通过过滤监控指定服务器的请求。

要设置Charles数据包的过滤,有三种方法:

方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。

例如我们的服务器的地址是:http://www.lemfix.com/ , 那么只需要在 Filter 栏中填入"lemfix'即可。回车后即可过滤出对应的数据包。

测试必备工具之最强抓包神器 Charles,你会了么?

方法二:抓完包之后,在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上“Focus” 一项,如下图所示:

测试必备工具之最强抓包神器 Charles,你会了么?

这样可以快速地过滤出去一些不关心网络请求(收起到other hosts里),只显示我选中的数据包。

方法三:在 Charles 的菜单栏选择 “Proxy”–>“Recording Settings”,然后选择 Include 栏,点击“add”新增加一个项目,然后填入需要监控的协议(如http),主机地址(想过滤的域名或者IP),端口号。

配好之后,点击OK。这样就可以只截取目标网站的封包了。如下图所示:

测试必备工具之最强抓包神器 Charles,你会了么?

通常情况下,第一、二种方法可以用于临时性包过滤,如果有些服务器是你经常性访问的,可以用方法三设置为常规过滤规则。

经过以上的步骤,就可以使用Charles工具开始愉快的抓包了!