除了fiddler工具之外,还有别的工具可以抓包。本章介绍其他几个常见的抓包工具。

5.1 常见的抓包工具

目前常见的http抓包工具如图5-1所示。

图5-1 常见的抓包工具

5.2 浏览器开发者工具

浏览器都自带一个开发者工具,该工具可用来抓包,很受开发人员喜欢。浏览器开发者工具的受众范围比fiddler的广,因为它很方便,不需要做什么设置。下面我们用chrome浏览器来进行讲解。

5.2.1 调出开发者工具

调研开发者工具的方式有以下几种。

方式1:按f12调出(很多人把这个工具叫作f12)。

方式2:在浏览器中,单击鼠标右键,然后选择“检查”。

方式3:在浏览器中,按快捷键ctrl+shift+i。

5.2.2 用chrome测试网页加载时间

使用chrome的开发者工具测试网页加载时间的操作步骤如下。

(1)打开chrome浏览器,然后打开开发者工具,选中network选项卡。

(2)访问一个网址,比如访问www.cnblogs.com/tankxiao,开发者工具能捕获所有的http请求,如图5-2所示。

图5-2 网页加载时间

从图5-2中可以看出单个请求的响应时间,可以看到这个网页发送了49个请求。总的网页响应时间是682毫秒,性能非常好。

5.2.3 用chrome捕获12306登录的post请求

chrome开发者工具在抓包时,如果页面发生了跳转,那么会把上一个页面的http请求清空。此时需要选中preserve log,以保留上次抓到的包。

我们用chrome来捕获12306的登录请求,该登录请求用的是post。具体步骤如下。

(1)在登录页面中输入用户名和密码,选中图片验证码后,单击“登录”按钮。

(2)在开发者工具中可以看到登录时发送的一系列请求。

(3)选中http请求,在headers选项卡中能看到该请求中的用户名和密码,如图5-3所示。

图5-3 抓12306登录的包

5.2.4 用chrome测试接口的响应时间

如图5-4所示,chrome中会显示每个请求的响应时间。

图5-4 单个请求的响应时间

5.2.5 过滤请求

因为可以操作的界面较小,查找http请求不方便,所以一般都需要用到过滤功能。

chrome开发者工具具有强大的过滤功能,可以让用户根据关键字来过滤,如图5-5所示。

图5-5 根据关键字过滤

在filter输入框中输入method:post,可以过滤post方法的http请求,如图5-6所示。

图5-6 根据http方法过滤

5.3 vconsole

微信小程序、手机版网页h5、手机app也需要调试bug,此时可以用第三方工具vconsole来完成。vconsole是一个轻量、可拓展的、针对手机网页的前端开发者调试面板。其用法和浏览器开发者工具差不多。vconsole如图5-7所示。

图5-7 vconsole工具

5.4 charles抓包工具

如果要在mac os系统中使用抓包工具,我们可以用charles。charles的工作原理与用法和fiddler有点类似。

5.4.1 charles工具的安装及使用方法

charles与其他工具的安装过程大致相同,按照页面提示操作即可。charles安装成功后,图标是一个花瓶,所以俗称青花瓷。charles是收费软件,如果不付费的话,每隔30分钟,需要重启charles。

5.4.2 在charles中安装根证书

在charles中安装根证书的步骤如下。

第1步:依次单击菜单栏中的help→ssl proxying→install charles root certificate,如图5-8所示。

第2步:这时候会弹出一个根证书界面,单击“添加”按钮,如图5-9所示。

第3步:证书添加成功,如图5-10所示。

图5-8 安装证书(1)

图5-9 安装证书(2)

图5-10 证书添加成功

第4步:双击证书以打开证书简介,把证书设置为信任,如图5-11所示。

图5-11 证书设置为信任

5.4.3 charles配置规则

charles的配置规则如图5-12所示。其中:

  • host为配置域名,*表示任意匹配;
  • port为网页浏览端口号,这里填443。

图5-12 设置规则

5.4.4 用charles捕捉网站登录的请求

打开charles,再用浏览器打开某网站并登录。找到登录的http请求,可以看到登录时发送的用户名和密码,如图5-13所示。

图5-13 捕捉某网站的登录请求

5.5 wireshark抓包工具

wireshark是非常流行的网络封包分析软件,功能十分强大。它可以截取各种网络封包,显示网络封包的详细信息。它是一个跨平台的软件,可以在unix系列、linux、mac os、windows等多个平台上进行网络协议的抓包工作。同时,它也是一个开源软件。如果想捕获tcp 3次握手协议,就应该使用wireshark。

wireshark的抓包原理是嗅探网卡,所以wireshark只能查看数据包,不能修改数据包。

5.5.1 wireshark捕捉http

wireshark捕捉http协议的步骤如下。

第1步:启动wireshark,此时会出现很多网络连接,选择一个正在使用的网络连接,如图5-14所示。

图5-14 选择网卡

第2步:输入过滤条件“http”,这样就只捕获http协议。在浏览器中访问http://files-cdn.
cnblogs.com/files/tankxiao/http.bmp,wireshark能捕获到http的报文。http请求和http响应是分开的,http请求有个向右的箭头,http响应有个向左的箭头,如图5-15所示。

图5-15 抓http包

第3步:选择http请求,右键单击并依次选择追踪流→tcp流,如图5-16所示。

图5-16 选择“追踪流”

第4步:打开一个对话框,可以看到完整的http请求和http响应,如图5-17所示。

图5-17 查看完整的http请求和http响应

5.5.2 用wireshark捕获https

fiddler和charles都需要安装证书后才能捕获https,用wireshark捕获https更麻烦。

某些浏览器支持将tls会话使用的对称密钥保存在外部文件中,以供wireshark加密使用。本节测试使用的是chrome 71版本和wireshark 5.0版本。捕获步骤具体如下。

第1步:配置系统变量。变量名为sslkeylogfile,变量值为c:ssl_keysslog.log,如图5-18所示。注意后缀名一定要用log,这样浏览器和服务器ssl协商的密钥信息才会存储到文件中。

图5-18 新建环境变量

第2步:在cmd中运行以下命令,

"c:program files (x86)googlechromeapplicationchrome.exe" --ssl-key-log-file=c:ssl_keysslog.log

运行成功后可以看到密钥文件已生成,如图5-19所示。

图5-19 密钥文件

第3步:在wireshark中配置密钥文件,依次选择编辑→首选项→protocols→tls,如图5-20所示。

图5-20 配置密钥文件

第4步:重启chrome,然后在chrome中访问
https://www.cnblogs.com/tankxiao,此时就可以抓到https的包了,如图5-21所示。

图5-21 用wireshark捕获https

5.6 本章小结

本章介绍了fiddler之外其他常见的抓包工具。平常抓包用得最多的是浏览器开发者工具。在windows上抓包首选fiddler,在mac计算机上无法使用fiddler,可以用charles。fiddler和charles是专门用来捕获http/https的。wireshark主要用来抓tcp/udp或者其他协议的包,而不会用来抓http。

本文摘自刚刚上架的《http抓包之接口自动化测试》

本书内容来自作者多年从事接口测试的经验总结,贴近实际,能帮助读者解决实际工作中的难题。本书的主要内容有http的基础知识;如何使用fiddler来抓http包;如何分析http包;如何通过jmeter和postman等发送http包,从而实现软件自动化测试和接口的自动化测试;如何使用抓包工具来实现安全测试和性能测试等;几个日常生活中应用比较广泛的综合实例。
本书图文并茂、实例丰富,方便读者参考并动手实践,适合前端开发工程师、测试工程师、线上故障技术人员、接口开发人员和web开发人员阅读。