当前位置: 首页 > news >正文

2023软件测试金三银四常见的软件测试面试题-【抓包和网络协议篇】

八、抓包与网络协议

8.1 抓包工具怎么用

我原来的公司对于抓包这块,在App的测试用得比较多。我们会使用fiddler抓取数据检查结果,定位问题,测试安全,制造弱网环境;

如:抓取数据通过查看请求数据,请求行,请求报头,请求正文,信息是否正确去检查结果,

如果是以4开头的话就有可能是前端问题一般我会到前端排查,以5开头就有可能是后端

问题我就会到后端排查;如果是200的话,就需要检查请求行,请求报头,请求正文是否正确,

如果请求错误就是前端问题,如果请求没有问题,那就是后端问题,看后端问题服务器运行日志,

是否包含 exception,error或根据时间点去看日志。

测试安全,抓取数据查看用户的感敏信息有没有进行加密显示,还有就是把发送请求的数据篡改是否成功。

弱网环境,诵过 fiddler工具选择 Customize Ruels...(Ctr+R)调出定义脚本编辑器找到

“if (m_SimulateModem)”设置上行下行网速,然后把

Rules-> Performance-> Simulate Modem Speeds选中生效

常用抓包工具有:浏览器中F12, fiddler, Charles(青花瓷), wireshark

8.2  如何抓取https的包

1、设置 Tools=> Option=>勾选 Decrypt Https traffic=>勾选 lgnore server

certificate errors(unsafe)

2、打开https网页就可以成功抓取了

3、还可以 Fiddler添加过滤器(Filters):只抓取指定iP的数据

8.3 如何抓取手机的包

1、开启 Fiddler的远程连接

Fiddler主菜单Toos- Options-> Connections>勾选 Allow remote computers to

2、重启 Fiddler,更新刚开启的远程配置

3、然后手机和电脑需要在同一个局域网,抓取http手机设置代理就可以,要抓取https包,手机需要安装一个fiddler证书

1、fder工具生成一个证书,发送手机上面安装

2、通过手机浏览器打开安装证书界面192.168.3.197:8888

ip地址是用 fiddler工具的电脑的ip地址,fiddler工具端口号的8888

3、点击下载证书,会提示,输入手机锁屏密码

4、给证书命名,名字随意,其他默认就ok

5、点击确定,安装成功,然后就可以抓取https的包了

8.4 网络协议了解多少?

原来我们用得比较多的协议是http和https以及tcp协议

http和https都是超文本协议,浏览器发送数据请求基本用的都是他们,不同的是https

在http的基础上增加了ssl加密协议,http的默认端口是80,http:的默认端口是443,

https收费,http免费。

tcp协议的话,作用在传输层,在发送请求前会有三次握手,是面向连接的协议,传输过程比较可靠

udp协议的话,作用在传输层,面向非连接协议,传输过程相对tcp不可靠,传输大量数据

8.5 请求方式有哪些?

常用:get、post

不常用:delete、put、head、option

8.6  get跟post请求的区别

1)get请求的参数有长度限制,post没有

2)get请求参数在url上传输,post的参数在请求正文中传输。post比get传输更安全

3)get只能接收ascall码参数,而post没有限制

4)get请求的时候,只请求一次,而post请求两次,第一发送请求头相关信息,第二次

再发送请求正文,(只有部分浏览器2次请求)

8.7  http跟https的区别

1.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用

2.http是超文本传输协议,信息是明文传输https则是具有安全性的ssl加密传输协议

3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

4.http的连接很简单,是无状态的;Https协议是由SSL + HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

8.8  为什么要使用cookie和session:http是无状态协议

第一次登录,发送用户信息给到服务器,服务器把用户信息保存在session中服务器响应数据给客户端,响应数据中有包含session的先关用户信息

客户端接收到服务器session信息,把session中相关的用户信息保存在cookie中

第二次登录,客户端发送请求,并携带cookie,服务端可以直接验证cookie值,如果用户已经登录过,可以免登录

8.9  cookie跟 session的区别

在网站中http请求是无状态的,也就是说即使第一次和服务器连接后并且登录成功后,

第二次请求服务器依然不能知道当前请求是哪个用户,cookie的出现就是为了解决这个问题,

第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的 cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB,因此使用 cookie只能存储一些小量的数据。

session和 cookie的作用有点类似,都是为了存储用户相关的信息,不同的是,cookie是存储在本地浏览器,而session存储在服务器.存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的

8.10  OSI七层网络模型 

(1)参考模型:只是提供给生产商或者软件开发商参考的模型

(2)开发系统互联

(3)有七层

8.11  TCP模型

有四层:

应用层 (telnet.stp.htp),传输层( CP UDP)、网络层,中数据链路层

8.12   TCP和UDP的区别?

(1)TCP面向连接、而UDP面向非连接

(2)TCP相对UDP更可靠

(3)TCP应用场景,用于传输少量数据,而UDP用于传输大量数据

(4)TCP传输的数据相对UDP慢

8.13  tcp的三次握手是怎么实现的?

(1)客户端给服务器发送报文syn=1和序列号Seq=x

(2)服务器接收到客户端的请求,服务器响应syn=1,ack=x+1,seq=y

(3)客户端接收到服务器的响应,返回给服务器,ack=y+1,seq=z

8.14  http协议包含哪些内容

(1)请求信息

1)请求行:请求方式、请求地址http版本1.1

2)请求头

HTTP消息报头包括普通报头、请求报头、响应报头、实体报头

Cache- Control:no- cache 缓存

Connection:close/keep-aive 是否关闭或者保持连接

Accept-Charset:ios-859-1 字符集

Accept-Encoding:gzip.deflate 编码格式

Accept-Language:zh-cn 语言

Authorization:服务器授权验证

Host:主机

User-Agent:

Location:重定向

Server:服务器版本信息

Content-Encoding:实体报头的编码格式

请求正文

data

(2)响应信息

1)状态行:http版本、状态码、状态信息

2)响应头:跟请求头一样

3)响应正文:

8.15  http状态码有哪些

1xx需要继续发送请求

2xx成功

3xx需要重定向

4xx客户端请求数据有误

5xx服务器响应错误

6xx服务器响应错误

常见状态码:400、404、200、500、302、501、504

101服务器根据客户端的请求切换协议,只能切换到更高级的协议,

例如,切换到HTTP的新版本协议

102(代表处理将被继续执行)由 WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行

2开头这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。

200(成功)服务器已成功处理了请求,通常,这表示服务器提供了请求的网页

201(已创建)请求成功并且服务器创建了新的资源

202(已接受)服务器已接受请求,但尚未处理

203(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源

204(无内容)服务器成功处理了请求,但没有返回任何内容

205(重置内容)服务器成功处理了请求,但没有返回任何内容

206(部分内容)服务器成功处理了部分GET请求

207(代表之后的消息体将是一个XML消息),并且可能依照之前子请求数量的不同,包含

系列独立的响应代码

3开头(请求被重定向)表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。

300(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。

301(永久移动)请求的网页已永久移动到新位置.服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置

302(临时移动)服务器目前从不同位置的网页响应请求,

但请求者应继续使用原有位置来进行以后的请求

303(查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。

304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容

305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,

还表示请求者应使用代理。

307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

4开头(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。

400(错误请求)服务器不理解请求的语法

401(未授权)请求要求身份验证,对于需要登录的网页,服务器可能返回此响应

403(禁止)服务器拒绝请求

404(未找到)服务器找不到请求的网页

405(方法禁用)禁用请求中指定的方法

406(不接受)无法使用请求的内容特性响应请求的网页

407(需要代理授权)此状态代码与401(未授权)类似,但指定请求者应当授权使用代理

408(请求超时)服务器等候请求时发生超时

409(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息

410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。

411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求

412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件

413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力

414(请求的URL过长)请求的URL(通常为网址)过长,服务器无法处理

415(不支持的媒体类型)请求的格式不受请求页面的支持

416(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码

417(未满足期望值)服务器未满足期望请求标头字段的要求

5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误

这些错误可能是服务器本身的错误,而不是请求出错

500(服务器内部错误)服务器遇到错误,无法完成请求

501(尚未实施)服务器不具备完成请求的功能,例如,服务器无法识别请求方法时可能会返回此代码。

502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应,(比如:nginx里

设置了反向代理,自己代理给自己,形成了死循环,造成大量的访问日志,每秒上万)

503(服务不可用)服务器目前无法使用(由于超载或停机维护),通常,这只是暂时状态。

504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求

505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本

8.16  post申请方式,用get会报什么错误。

404 Not Found

请求失败,请求所希望得到的资源未被在服务器上发现,没有信息能够告诉用户这个状况到底是暂时的还是永久的,假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址,404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下,出现这个错误的最有可能的原因是服务器端没有这个页面。

8.17  http协议提交请求头内容

Accept-Charset:浏览器能够显示的字符集

Accept- Encoding:浏览器能够处理的压缩编码

Accept-Language:浏览器当前设置的语言

Connection:浏览器与服务器之间连接的类型

Cookie:当前页面设置的任何 Cookie

Host:发出请求的页面所在的域

Referer:发出请求的页面的URL

User-Agent:浏览器的用户代理字符串

Content-Type:请求数据的格式或者是类型

近几千道题+答案,太多了这里就展示了其中的一部分如果大家有需要的话可以点击文章末尾的小卡片备注000领取哈

总结:下方是作者花费三个月打造的软件测试道测试开发全职业生涯资料包,有需要的话可以点击文章末尾的小卡片备注000领取哈

 

相关文章:

2023软件测试金三银四常见的软件测试面试题-【抓包和网络协议篇】

八、抓包与网络协议 8.1 抓包工具怎么用 我原来的公司对于抓包这块,在App的测试用得比较多。我们会使用fiddler抓取数据检查结果,定位问题,测试安全,制造弱网环境; 如:抓取数据通过查看请求数据,请求行&…...

vue脚手架多页自动化生成实践

前言 在前端开发过程中,常常面对多种业务场景。到目前为止,前端对于不同场景的处理通常会采用不同的渲染方案来组合处理,常见的渲染方案包括:CSR(Client Side Rendering)、SSR(Server Side Rendering)、SSG(Static Site Generati…...

【SQL语句优化】

SQL语句优化是提高数据库查询性能的重要手段之一,下面是几种常见的SQL语句优化方法和案例: 减少查询的数据量 减少查询的数据量:使用 WHERE 子句和索引来限制检索行数,只检索需要的行,避免检索全部行数据。 例子&am…...

阿里P8:做测试10年我的一些经验分享,希望你们少走弯路

我是在2015年毕业的,当时是读的普通本科,不上不下的专业水平,毕业的时候,恰好遇到了金融危机。校园招聘里阴差阳错的巧合,让我走上了软件测试工程师的道路。 入职第一天,来了个高大上的讲师,记…...

栈在括号匹配中的应用(栈/链栈 纯C实现)

目录 1 问题背景 2 具体思路 3 代码实现 3.1 顺序栈实现 3.2 链栈实现 1 问题背景 栈的括号匹配问题是指在给定一个字符串(包含多种括号),判断其中的括号是否能够正确匹配,即每个左括号是否有一个对应的右括号与之匹配&#x…...

C语言Switch语句用法

C switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法: switch(expression){case constant-expression :statement(s);break;…...

Curl编码请求参数,API接口请求示例参数

请求参数请求参数:num_iid610947572360 参数说明:num_iid:1688商品ID sales_data:&sales_data1 获取近30天成交数据 agent:&agent1 获取1688分销代发价格数据请求示例 测试入口 Curl PHP PHPsdk JAVA C# Python-- 请求示例 url 默认请求参数已经…...

【C/C++】类型限定符extern、const、Volatile、register

1、extern: 声明一个变量,extern声明的变量没有建立存储空间。 extern int a ; //变量在定义的时候创建存储空间。 ①当我们在编译器中试图运行以下代码,系统会报错。 错误原因是“无法解析外部符号_a”.系统认为变量a是没有开辟内存空间的…...

day54【代码随想录】二刷数组

文章目录前言一、二分查找(力扣724)二、移除元素(力扣27)【双指针】三、有序数组的平方(力扣977)【双指针】四、合并两个有序数组(力扣88)五、长度最小的子数组(力扣209&…...

哪个品牌蓝牙耳机性价比高?性价比高的平价蓝牙耳机推荐

现如今,随着蓝牙技术的进步,蓝牙耳机在人们日常生活中的便捷性更胜从前。越来越多的蓝牙耳机品牌被大众看见、认可。那么,哪个品牌的蓝牙耳机性价比高?接下来,我给大家推荐几款性价比高的平价蓝牙耳机,一起…...

揭秘关于TFRcord的五脏六腑

揭秘关于TFRcord的五脏六腑 前言:本篇文章将演示如何创建、解析和使用tf.Example消息,以及如何在.tfrecord文件之间对tf.Example消息进行序列化、写入和读取。 教程讲解使用的都是结构化数据,文章最后还会演示如果将图片写成.tfrecord文件&am…...

【Shell学习笔记】3.Shell 传递参数及数组

前言 本章介绍Shell的传递参数和数组。 Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,…...

【终结Bug】ModuleNotFoundError: No module named ‘cv2’

解决方案: 打开 cmd键入 pip install opencv_python -i https://pypi.tuna.tsinghua.edu.cn/simple...

SQL Server2008详细安装步骤(保姆式教程)

安装包下载 链接:https://pan.baidu.com/s/1Rjx4DHJBeCW2asC_4Kzo6Q?pwdchui 提取码:chui 安装过程 1.解压后使用管理员身份打开安装程序 2.选择全新安装或向现有安装添加新功能 3.确认 4.输入产品密钥(上方网盘安装包里有&#xff0…...

Linux常用操作

Linux常用操作 前言常用命令:一些操作命令:前言 本文是笔者在使用cadence的过程中,操作linux的笔记,仅记录个人常用,持续更新 常用命令: (1)高频:会了这几个就能在文件…...

Golang 处理parquet文件实战教程

Parquet是Apache基金会支持的项目,是面向列存储二进制文件格式。支持不同类型的压缩方式,广泛用于数据科学和大数据环境,如Hadoop生态。 本文主要介绍Go如何生成和处理parquet文件。 创建结构体 首先创建struct,用于表示要处理…...

腾讯TIM实现即时通信 v3+ts实践

目录 初始化sdk 功能描述 初始化 准备 SDKAppID 调用初始化接口 监听事件 发送消息 创建消息 创建文本消息 登录登出 功能描述 登录 登出 销毁 登录设置 获取会话列表 功能描述 获取会话列表 获取全量的会话列表 历史消息 功能描述 拉取消息列表 分页拉取…...

华为OD机试 - 回文字符串(Java JS Python)

题目描述 如果一个字符串正读和反渎都一样(大小写敏感),则称它为一个「回文串」,例如: leVel是一个「回文串」,因为它的正读和反读都是leVel;同理a也是「回文串」art不是一个「回文串」,因为它的反读tra与正读不同Level不是一个「回文串」,因为它的反读leveL与正读不…...

APP测试的7大注意点。

1. 运行 1) App安装完成后的试运行,可正常打开软件。 2) App打开测试,是否有加载状态进度提示。 3) App⻚面间的切换是否流畅,逻辑是否正确。 4) 注册 同表单编辑⻚面 用户名密码⻓度 …...

设计模式-第4章(装饰模式)

装饰模式装饰模型装饰模式示例商场收银程序(简单工厂策略装饰模式实现)装饰模式总结装饰模型 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为…...

【算法设计-分治】快速幂与龟速乘

文章目录1. 快速幂2. 龟速乘3. 快速幂取模4. 龟速乘取模5. 快速幂取模优化1. 快速幂 算法原理: 计算 311: 311 (35)2 x 335 (32)2 x 332 3 x 3仅需计算 3 次,而非 11 次 计算 310: 310 (35)235 (32)2 x 332 3 x 3仅需计算…...

基于新一代kaldi项目的语音识别应用实例

本文是由郭理勇在第二届SH语音技术研讨会和第七届Kaldi技术交流会上对新一代kaldi项目在学术及“部署”两个方面报告的内容上的整理。如果有误,欢迎指正。 文字整理丨李泱泽 编辑丨语音小管家 喜报:新一代Kaldi团队三篇论文均被语音顶会ICASSP-2023接…...

【GO】31.grpc 客户端负载均衡源码分析

这篇文章是记录自己查看客户端grpc负载均衡源码的过程,并没有太详细的讲解,参考价值不大,可以直接跳过,主要给自己看的。一.主要接口:Balancer Resolver1.Balancer定义Resolver定义具体位置为1.grpc源码对解析器(resol…...

PTA L1-058 6翻了(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读 题目: “666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”&#xff0…...

【Origin科研绘图】如何快速绘制一个折线图 ||【前端特效】爱心篇 之 幸好有你 || 泰坦尼克号——乘客生存与否 预测 || PyCharm使用介绍

🎯作者主页:追光者♂ 🌸个人简介:在读计算机专业硕士研究生、CSDN-人工智能领域新星创作者🏆、2022年CSDN博客之星人工智能领域TOP4🌟、阿里云社区专家博主🏅 【无限进步,一起追光!】 🍎欢迎点赞👍 收藏⭐ 留言📝 🌿本篇,首先是:基于科研绘图工具O…...

一文解读电压放大器(电压放大器原理)

关于电压放大器的科普知识,之前讲过很多,今天为大家汇总一篇文章来详细的讲解电压放大器,希望大家对于电压放大器能有更清晰的认识。电压放大器是什么:电压放大器是一种常用的电子器件,它的主要作用是把输入信号的振幅…...

线上监控诊断神器arthas

目录 什么是arthas 常用命令列表 1、dashboard仪表盘 2、heapdump dumpJAVA堆栈快照 3、jvm 4、thread 5、memory 官方文档 安装使用 1、云安装arthas 2、获取需要监控进程ID 3、运行arthas 4、进入仪表盘 5、其他命令使用查看官方文档 什么是arthas arthas是阿…...

@Import注解的原理

此注解是springboot自动注入的关键注解,所以拿出来单独分析一下。 启动类的run方法跟进去最终找到refresh方法; 这里直接看这个org.springframework.context.support.AbstractApplicationContext#refresh方法即可,它下面有一个方法 invoke…...

平台总线开发(id和设备树匹配)

目录 一、ID匹配之框架代码 二、ID匹配之led驱动​​​​​​​ 三、设备树匹配 四、设备树匹配之led驱动 五、一个编写驱动用的宏 一、ID匹配之框架代码 id匹配(可想象成八字匹配):一个驱动可以对应多个设备 ------优先级次低 注意事项…...

TS泛型,原来就这?

一、泛型是什么?有什么作用? 当我们定义一个变量不确定类型的时候有两种解决方式: 使用any 使用any定义时存在的问题:虽然知道传入值的类型但是无法获取函数返回值的类型;另外也失去了ts类型保护的优势 使用泛型 泛型…...

无锡专业做网站建设/百度售后服务电话

在我们平常的编码中,通常会将一些对象保存起来,这主要考虑的是对象的创建成本。比如像线程资源、数据库连接资源或者 TCP 连接等,这类对象的初始化通常要花费比较长的时间,如果频繁地申请和销毁,就会耗费大量的系统资源…...

网站建设方案的含义/网页设计模板免费网站

目录 一,平衡无序二叉树 二,平衡排序二叉树(Self-balancing binary search tree) 三,平衡二叉树(AVL树) 四,查询 五,插入节点 1,插入一个新节点&#x…...

做网站+利润/百度推广关键词排名规则

在控件的KeyPress事件中编写如下代码: if (e.KeyChar (char)13) {e.Handled true;SendKeys.Send("{TAB}"); }转载于:https://www.cnblogs.com/swtseaman/archive/2011/05/05/2037184.html...

eclipse开发动态网站开发/网站定制开发

1. 问题描述: 有一个 ab 的整数组成的矩阵,现请你从中找出一个 nn 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式 第一行为三个整数,分别表示 a,b,n 的值;第二行至第…...

现代网站建设/百度云网盘网页版登录

$好玩的分词——python jieba分词模块的基本用法 jieba(结巴)是一个强大的分词库,完美支持中文分词,本文对其基本用法做一个简要总结。 安装jieba pip install jieba 简单用法 结巴分词分为三种模式:精确模式&#xff…...

注册城乡规划师报考条件2023/登封网站关键词优化软件

1、linalglinear(线性)algebra(代数),norm则表示范数。 2、函数参数 x_normnp.linalg.norm(x, ordNone, axisNone, keepdimsFalse) ①x: 表示矩阵(也可以是一维) ②ord:范数类型 …...