前言
相信做了测试一段时间的小伙伴都会开始意识到抓包对于测试的重要性,它涉及到功能测试、性能测试、自动化测试、安全测试和数据库测试等等。可以说我们要想做好测试就必须和抓包打交道,脱离抓包的测试是不合格的。人们都说黑客利用Wireshark等抓包工具监视别人,但是你同时会发现,监视也是测试的重要组成部分。你会通过监视来判断pass或是fail,你会通过监视来定位bug,你会通过监视来分析性能测试的结果……
1、什么是抓包
我们一般所指的“监视”,其实有个专业名称——抓包。抓包是指在计算机网络中,通过使用抓包工具截获(捕获)和分析网络数据包的过程。网络数据包是在计算机网络上传输的基本单元,它包含了通信中的信息、源地址、目标地址、接口信息、传输协议类型等重要信息。
2、抓包有什么作用
抓包在计算机网络和软件开发领域中有多种用途,其主要功能包括:
1)网络调试和故障排查:抓包是网络调试和故障排查的关键工具。通过捕获和分析网络数据包,可以识别网络通信中的错误、异常和延迟。这有助于开发人员和网络管理员快速定位和解决问题,确保系统正常运行。
2)性能优化:通过监视和分析网络流量,可以评估应用程序的性能,并找出导致性能瓶颈的原因。这有助于优化网络通信,提高应用程序的响应速度和效率。
3)用户行为分析:对于网络应用程序,抓包可用于分析用户的操作行为,了解他们与应用程序之间的交互。这对于优化用户体验和改进应用设计非常有帮助。
4)安全审计:抓包用于监控网络流量,检测潜在的安全威胁和异常行为。安全专业人员可以通过抓包来分析攻击、异常流量和潜在的漏洞,以提高系统的安全性。
5)协议分析:抓包工具能够解析和分析各种网络协议,帮助理解应用程序的通信机制。这对于开发人员理解系统的工作原理、确保协议遵循和检测潜在问题非常有价值。
6)网络性能评估:抓包工具可以用于评估网络的整体性能,包括检查带宽利用率、网络拓扑结构等,从而更好地了解网络的运行状况。
说了这么多那我们测试人员能用到哪些呢,那我进一步总结一下:
1)当发现测试设备或者网站等表现不符合预期时,抓包是进一步定位问题的最常用方法。比如你在地址栏中输入了某网站的内容,结果却返回502错误,那这个时候你得会通过抓包就可以得到大体的问题原因。
2)抓包可以对抓取的数据进行分析,并进行伪造,这是功能测试、性能测试和自动化测试中常见的手法。比如,在网站测试中,我们通过抓取到的数据包,然后更改里面的IP地址进行欺骗,看看服务器端作何回应。又比如一般的机顶盒测试,我们可以通过抓取数据包,并用脚本去和电视终端联通。
3)通过抓包我们可以判断Bug是归前端还是归后台,特别是开发在前后端分离后,测试对于Bug的前后端指派需要更精准,这就要求我们能够通过抓包分析Bug的前后端归属,那么可以通过抓包工具,确实是数据传递问题还是前端显示的问题。如果抓出来的数据就有问题的话,那么一般是后端的问题;如果抓出来的数据是正确的,那么基本上可以断定是前端显示的问题。
3、分层去抓包
我们都知道,数据在发送的过程中是层层封装一个头部的,最终通过物理接口发送出去,而数据的接收过程则刚好反过来,所以我们根据这个特点可以在抓包中有舍有得,就是需要哪一层的数据,就去协议栈把哪一层的数据捞出来,这个捞的过程就得靠我们的抓包工具了。(友情推荐几款:Wireshark、Fiddler、tcpdump、tcpflow、Ethereal、Charles,我用Fiddler较多。)这种分层抓包对于我们过滤且快速抓取有用信息是十分有益的,如果你想要抓取应用层的数据却要去底层捞数据那么还得一层层解封装,甚至可能还得解密,这就费时费力太低效了。
PS:这里将我常用的两款软件补充说明一下,Fiddler只能抓取http和https协议,而Wireshark就较为强大了,我们常见的协议都是支持的,只是Wireshark无法解析https协议。
我们可以在右边Inspectors中查看信息。
上图中的Protocal一栏对应了各个协议层的请求和响应,可以根据自己需要查看相应协议层的信息!知道为啥黑科钟情于Wireshark了吧,它实在太强大了!所以需要哪款软件还得根据自己需求来。
4、有哪些抓包的方式
抓包的方式主要分为两种:主动抓包和被动抓包。下面对这两种方式进行详细说明:
4.1)主动抓包:
使用抓包工具:这是最常见的主动抓包方式。通过使用专门的抓包工具,用户可以选择在何时、何地、以及对哪些数据包进行抓包。用户需要手动启动抓包工具,并根据需要设置过滤条件,以便只捕获感兴趣的数据包。
命令行工具:一些命令行工具如tcpdump可以通过在终端中运行命令来主动捕获网络数据包。用户可以使用命令行参数指定捕获条件,例如捕获特定端口或协议的数据包。
4.2)被动抓包:
网络设备抓包:网络设备(如路由器、交换机、防火墙等)通常具有抓包功能。管理员可以配置这些设备以在网络流经设备时自动抓取数据包。这对于监控整个网络流量、进行安全审计等很有用。
代理服务器:在某些情况下,代理服务器可以用于被动抓包。代理服务器充当客户端和服务器之间的中介,可以捕获通过它的数据流量。工具如Fiddler就是基于代理服务器的抓包工具。
4.3)混合方式:
有时,可以通过在网络中插入设备或利用网络中的镜像端口(SPAN或RSPAN)来实现混合方式的抓包。这样的方式既能被动地监控整个网络流量,又能主动选择关注的部分。
5、实战
以上对抓包的原理和作用进行了一些介绍,那么肯定很多小伙伴还意犹未尽,你们肯定想看看某款抓包工具具体怎么抓包的,那就满足一下你们,是骡子是马拉出来遛遛,接下来我就以fiddler来进行一次实际演练。
我们就以篡改百度访问请求为跳转淘宝网为例吧。
5.1)先设置全局断点:单击菜单栏中的Rules--Automatic Breakpoint--Before Requests,会拦截全部请求报文。
5.2)然后对请求的网址进行过滤
5.3)然后我们去浏览器中输入百度的网址www.baidu.com并按下回车,浏览器会一直转圈等待响应,同时电脑任务栏fiddler图标会闪烁。
5.4)然后我们去fiddler里面找到对应的请求,转到Inspectors页如下所示,像图中那样双击百度网址。
5.5)然后改成如下的淘宝网址并点击save
5.6)接下来点击图中绿色按钮放行该请求
5.7)会发现刚才转圈的请求状态会立马跳转到淘宝网,这里某些聪明的娃肯定联想到了什么,嘿嘿,稍微懂点网络安全的都知道黑客篡改跳转页面吧,这就是原理啦!
总结
今天对抓包进行了原理和实战的一些讲解,希望能够助力大伙在往后的测试工作中更加深入的分析和定位Bug,有机会的话我还会再出几期解析抓包数据信息的内容!
文末了:
可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。同时我邀请你进入我们的软件测试学习交流平台,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,了解测试行业的最新趋势,助你快速进阶Python自动化测试/测试开发,稳住当前职位同时走向高薪之路。