2023备战金三银四,Python自动化软件测试面试宝典合集(五)

news2024/11/17 16:30:07

接上篇

八、抓包与网络协议

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

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

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)响应头:跟请求头一样

  1. 响应正文

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 协议版本

持续更新,敬请期待。

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

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

相关文章

FPGA实现不同分辨率视频切换输出,串口协议帧控制,提供工程源码和技术支持

目录1、不同分辨率视频切换输出原理2、设计思想和架构详解3、vivado工程详解4、上板调试验证并演示5、福利:工程代码的获取1、不同分辨率视频切换输出原理 不同分辨率的视频输出对应不同的时序和时钟,一般情况下是不存在同时或分时输出的,但…

结构体变量

C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。 在程序中建立一个结构体类型: 1.结构体 建立结构体 struct Student { int num; //学号为整型 char name[20]; //姓名为字符串 char se…

基于spring boot +opencv 实现车牌识别、人脸识别、证件识别等功能 附完整代码 毕业设计

界面展示: 这是一个基于spring boot + opencv 实现的项目贯穿样本处理、模型训练、图像处理、对象检测、对象识别等技术点以学习交流为目的&

装满杯子需要的最短总时长-力扣2335-java双百方案

一、题目描述 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷水…

用Javascript对二维数组DIY按汉语拼音的排序方法

继续编写“圳品”信息系统,将“圳品”信息读取到JavaScript定义的一个二维数组中进行处理和显示:var p [[100, "都安县丙公司", "产品ab", 5, 25, 10],[50, "南丹县a公司", "产品a", 5, 25, 10],[30, "罗…

力扣sql简单篇练习(十五)

力扣sql简单篇练习(十五) 1 直线上的最近距离 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT min(abs(p1.x-p2.x)) shortest FROM point p1 INNER JOIN point p2 ON p1.x <>p2.x1.3 运行截图 2 只出现一次的最大数字 2.1 题目内容 2…

教你如何用Python分析出选注双色球号码

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 数据集介绍 找从19年到现在的开奖历史数据&#xff0c;我们首先要把这个历史数据拿到&#xff0c; 拿到我们再进行做分析&#xff0c;分析每个号码出现的频率是多少&#xff0c; 哪个多&#x…

Java零基础教程——控制语句

目录程序流程控制顺序结构分支结构if分支语句案例&#xff1a;switch分支案例&#xff1a;循环结构for循环while循环do-while循环跳转控制语句程序流程控制 顺序结构 没什么好说的就是&#xff1a;程序默认执行流程(如下) public class Test {public static void main(String…

spring中bean的生命周期(简单5步)

目录 一、概念 1.生命是bean的生命周期&#xff1f; 2.知道bean生命周期的意义&#xff1f; 3.bean的生命周期按照粗略的五步 二、例子讲解 一、概念 1.生命是bean的生命周期&#xff1f; 答&#xff1a;spring其实就是管理bean对象的工厂&#xff0c;它负责对象的创建&…

[K8S]Kubernetes环境检测与API简介

文章目录环境判断docker环境检测K8S环境检测获取POD的NamespaceAPI Server概述API访问命令行方式编程方式REST API是Kubernetes系统的重要部分&#xff0c;组件之间的所有操作和通信均由API Server处理的REST API调用。环境判断 在使用API时&#xff0c;需要先判断是否是K8S环…

实施ITIL项目的十个参考步骤

ITIL是我们做好IT服务管理流程建设与治理的一个重要知识库&#xff0c;这个知识体系的内容非常丰富&#xff0c;做到全面领会并运用自如是比较困难的。因此&#xff0c;我们提供了这样的一份实施ITIL项目的参考步骤&#xff0c;在新建或治理企业IT管理流程时可以适当借鉴&#…

elasticsearch索引与搜索初步

ES支持cURL交互&#xff0c;使用http请求完成索引和搜索操作&#xff0c;最基本的格式如下&#xff1a;创建索引我们可以使用PUT方法创建索引&#xff0c;通过指定“索引”、“类型”、“文档ID”锁定文档&#xff0c;通过参数指定文档的数据。红色部分的路由分别指定了“索引”…

Homekit智能家居DIY一智能插座

WiFi智能插座对于新手接触智能家居产品更加友好&#xff0c;不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷&#xff0c;智能插座就是其中之一&#xff0c;比如外出忘记关空调&#xff0c;可以拿起手机远程关闭。 简单说就是&#xff1a;插座可以连接wi…

【博客618】docker容器重启后读写层数据并不丢失的原理

docker容器重启后读写层数据并不丢失的原理 1、场景 当我们对docker容器执行restart后&#xff0c;其实容器中原本读写层里对临时数据还在。只有我们删除了这个容器&#xff0c;重新创建的容器是基于镜像的只读层然后挂载上新的空的读写层&#xff0c;此时临时数据是不在的 2、…

详解指针(2)(初阶版)

前言&#xff1a;内容包括&#xff1a;指针运算&#xff0c;指针和数组&#xff0c;二级指针&#xff0c;指针数组 详解指针&#xff08;1&#xff09;&#xff08;点击即跳转&#xff09; part 1&#xff1a;指针运算 1 指针-整数 以如下代码为例&#xff1a;初始化数组内容…

实验名称:经典同步问题:生成者与消费者问题

实验名称&#xff1a;经典同步问题&#xff1a;生成者与消费者问题 相关知识 信号量 信号量是用来协调不同进程间的数据对象&#xff0c;可用来保护共享资源&#xff0c;也能用来实现进程间及同一进程不同线程间的进程同步。分为二值信号灯和计算信号灯两种类型。 进程与线…

VOC数据增强与调整大小

数据增强是针对数据集图像数量太少所采取的一种方法。 博主在实验过程中&#xff0c;使用自己的数据集时发现其数据量过少&#xff0c;只有280张&#xff0c;因此便想到使用数据增强的方式来获取更多的图像信息。对于图像数据&#xff0c;我们可以采用旋转等操作来获取更多的图…

Android Dalvik虚拟机 堆初始化流程

前言 上篇文章介绍了dalvik虚拟机启动流程&#xff0c;在dalvik虚拟机启动时调用了dvmGcStartup来启动堆。 本文介绍我们在日常开发使用Java时的堆创建流程。 Dalvik堆介绍 Dalvik虚拟机中&#xff0c;堆是由heap[0] Active堆和heap[1] Zygote堆两部分组成的。其中&#xff…

13 Day:实现内核线程

前言&#xff1a;我们昨天完成了内核的内存池以及内存管理程序&#xff0c;今天我们要揭开操作系统多任务执行的神秘面纱&#xff0c;来了解并实现一个多任务的操作系统。 一&#xff0c;实现内核线程 在聊线程之间我们先聊聊处理器吧&#xff0c;众所周之现在我们的CPU动不动…

心跳太快对身体带来影响?4种方法来减速!

心脏每时每刻都在跳动&#xff0c;跳动时遵循一定的节律。正常情况下成年人每分钟心跳达到60~120下&#xff0c;若心跳每分钟大于120下&#xff0c;被判断为心动过速&#xff1b;若心跳每分钟不足50下&#xff0c;被判断为心动过缓&#xff0c;无论是哪种因素均会影响身体健康。…