快速锁定Bug!掌握Wireshark等抓包技术,提升测试效率

news2024/11/15 15:26:33

前言

相信做了测试一段时间的小伙伴都会开始意识到抓包对于测试的重要性,它涉及到功能测试、性能测试、自动化测试、安全测试和数据库测试等等。可以说我们要想做好测试就必须和抓包打交道,脱离抓包的测试是不合格的。人们都说黑客利用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自动化测试/测试开发,稳住当前职位同时走向高薪之路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1813062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

未来校园的新质生产力:南京江北新区浦口外国语学校校园网升级改造的启示

作者:南京江北新区浦口外国语学校 校长助理 杨美玲 导语:在南京江北新区(第十三个国家级新区),浦口外国语学校,这所拥有77605平方米宽阔校园、169个班级、7335名学生和511位专任教师的九年一贯制公办外语特色学校,正以前所未有的活力和智慧,迎接信息化时代的挑战。作为学校信息…

【JMeter接口测试工具】第二节.JMeter基本功能介绍(下)【进阶篇】

文章目录 前言八、Jmeter常用逻辑控制器 8.1 如果(if)控制器 8.2 循环控制器 8.3 ForEach控制器九、Jmeter关联 9.1 正则表达式提取器 9.2 xpath提取器 9.3 JSON提取器十、跨越线程组传值 10.1 高并发 10.2 高频…

1996-2023年各省农林牧渔总产值数据(无缺失)

1996-2023年各省农林牧渔总产值数据(无缺失) 1、 时间:1996-2023年 2、 来源:国家统计局、统计年鉴 3、 指标:农林牧渔总产值 4、 范围:31省 5、 缺失情况:无缺失 6、 指标解释&…

韩顺平0基础学java——第20天

p407-429 接口 一个类可以实现多个接口(电脑上可以有很多插口) class computer IB,IC{} 接口中的属性只能是final,并且是public static final 接口不能继承其他类,但是可以继承多个别的接口 interface ID extends I…

【PX4-AutoPilot教程-TIPS】离线安装Flight Review PX4日志分析工具

离线安装Flight Review PX4日志分析工具 安装方法 安装方法 使用Flight Review在线分析日志,有时会因为网络原因无法使用。 使用离线安装的方式使用Flight Review,可以在无需网络的情况下使用Flight Review网页。 安装环境依赖。 sudo apt-get insta…

Rust基础学习-标准库

栈和堆是我们Rust代码在运行时可以使用的内存部分。Rust是一种内存安全的编程语言。为了确保Rust是内存安全的,它引入了所有权、引用和借用等概念。要理解这些概念,我们必须首先了解如何在栈和堆中分配和释放内存。 栈 栈可以被看作一堆书。当我们添加更…

数据库错误[ERR] 1071 - Specified key was too long; max key length is 1000 bytes

环境:phpstudy的mysql8 索引长度问题: 试了很多解决办法,例如需改配置: set global innodb_large_prefixON; set global innodb_file_formatBARRACUDA; 试了还是有问题,直接启动不了了。因为mysql8取消了这个配置。…

Linux操作系统学习:day02

内容来自:Linux介绍 视频推荐:[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( day02 5、Linux目录结构 操作系统文件结构的开始,只有一个单独的顶级目录结构,叫做根目录。所有一切都从“根”开始…

DHCP原理与配置(Linux)

目录 DHCP概念 使用DHCP的好处 DHCP的分配方式 DHCP租约过程 租约过程分4个步骤(全过程广播) 1. 客户机请求IP(Discover:发现;客户端广播 发送一个数据包,其他主机也能接收到,如果是没有安…

34.打印K型

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/76 题目描述 小爱想用 * 打出一个大写的 K。…

边缘计算采集网关解决方案:为企业提供高效、灵活的数据处理方案-天拓四方

一、企业背景 某大型制造企业,位于国内某经济发达的工业园区内,拥有多个生产线和智能化设备,致力于提高生产效率、降低运营成本。随着企业规模的扩大和生产自动化的推进,该企业面临着海量数据处理、实时响应和网络安全等多重挑战…

P4. 微服务: 匹配系统(上)

P4. 微服务: 匹配系统 上 Tips0 概述1 匹配系统流程2 游戏系统流程3 websocket 前后端通信的基础配置3.1 websocket 的需要的配置3.2 websocket 连接的建立3.3 为 websocket 连接添加 jwt 验证 4 实现匹配界面和对战界面的切换5 匹配系统的客户端和 websocket 后端交互部分5.1 …

启明智显工业级HMI芯片Model3功耗特性分享

前言: 【启明智显】专注于HMI(人机交互)及AIoT(人工智能物联网)产品和解决方案的提供商,我们深知彩屏显示方案在现代物联网应用中的重要性。为此,我们一直致力于为客户提供彩屏显示方案相关的技…

MySQL系列-语法说明以及基本操作(一)

1、前言 主要讲解MySQL的基本语法 官网文档 https://docs.oracle.com/en-us/iaas/mysql-database/doc/getting-started.html 关于MySQL的基本语法,关于数据类型、表的操作、数据操作、事务、备份等,可参考 http://www.voidme.com/mysql 2、数据类型 数…

ARM32开发--PWM高级定时器

目录 文章目录 前言 目标 学习内容 需求 高级定时器通道互补输出 开发流程 通道配置 打开互补保护电路 完整代码 练习题 总结 前言 在嵌入式软件开发中,PWM(脉冲宽度调制)技术被广泛应用于控制各种电子设备的亮度、速度等参数。…

STM32驱动带编码器的直流减速电机

STM32驱动带编码器的直流减速电机 文章目录 STM32驱动带编码器的直流减速电机硬件材料MG310 直流减速电机直流电机原理减速器实物接线霍尔编码器 TB6612电机驱动接线说明程序设计定时器生成PWM驱动电机速度计算 实验结果程序下载 硬件材料 主控板:STM32F407ZG直流减…

【漏洞复现】WVP视频平台未授权漏洞

漏洞描述: WVP视频平台api/user存在未授权访问漏洞,攻击者可利用漏洞获取当前系统管理员用户名及密码进行登录系统。 搜索语法: Fofa-Query: body"国标28181" 漏洞详情: 1.WVP视频平台。 2.POC: GET /api/user/all HTTP/1.1 …

Redis项目中竟然有这么多种使用场景!!

下面蜗牛哥依次对Redis 15种业务场景举例说明和解释: 1. 排行榜和计数器 针对Redis作为排行榜和计数器的使用场景,下面是一个Java Spring Boot应用的案例,其中使用Redis来实现一个简单的文章点赞功能,并将点赞数用作排行榜的依据…

Django UpdateView视图

UpdateView是Django中的一个通用视图,用于处理对象的更新操作。它允许用户更新一个已经存在的对象。UpdateView通常与一个模型表单一起使用,这样用户就可以看到当前对象的值,并可以修改它们。 1,添加视图 Test/app3/views.py fr…

什么是覆盖索引 ?

走当前索引就足够,而无需回表就能找到所有数据,就叫覆盖索引。 比如 key1 上有索引。(它是一个普通的二级索引)。 那么select key1 from s1 where key1 a 这种就叫覆盖索引。 表现就是explain时, Extra 那里显示 …