“软件测试工程师”面试复习之《HTTP协议及抓包工具Fiddler》
供面试复习使用,内容主要来自《HTTP抓包实战 作者:肖佳》和《图解HTTP 作者:日本上野宣》
关于HTTP协议
一、web网页是如何显示出来的?
1、打开浏览器,输入url地址,此时web浏览器向web服务器发送了一个HTTP请求
2、web服务器接收到HTTP请求后开始进行处理,生成一个HTTP响应,发送回给web浏览器
3、浏览器接收到HTTP响应后,将其中包含的web网页内容(即HTML)展示出来。
(若HTML中引用了很多其他文件,如图片、CSS、JS文件等,浏览器会自动再次发送多个子请求给web服务器,去获取这些资源。当所有的子请求全部返回后,浏览器会将所有请求都渲染出来,网页就在浏览器中成功展示了。)
二、一个HTTP请求由哪些部分组成?
HTTP请求由起始行、header首部、body主体这三部分组成。
起始行中,包括请求方法、URL地址、HTTP协议版本。例如:GET https://www.baidu.com/ HTTP/1.1
三、一个HTTP响应由哪些部分组成?
HTTP响应由响应行、header响应首部、body主体三部分组成。
响应行中,包括HTTP协议版本、状态码、状态码消息。例如:HTTP/1.1 200 OK
四、Get和Post方法的区别有哪些?
1、使用场景不同
Get:主要用于请求资源,比如打开网站首页、进行搜索或查询操作等
Post:主要用于表单提交,比如用户登录等。
2、请求内容存放位置不同
Get方法中,请求参数放在URL中,body主体中没有内容,是空的。
Post方法中,请求参数等内容都放在body主体中。
3、提交数据大小限制不同
Get方法中,由于请求数据放在URL中,URL中能支持的数据长度较短(不同浏览器对URL的长度限制不同)。
Post方法中,由于请求数据放在body主体中,主体中能支持的数据长度较长。
4、相对来讲,Post能比Get安全一些
例如传输用户名和密码等,一般使用post方法。get方法传输的话,用户名和密码放在url中,可能被浏览器保存到历史浏览记录中,其他人如果也使用这台机器很容易获取到用户名和密码。
五、常用的状态码举例,其代表什么含义?
HTTP协议的状态码分为5类
1XX:信息提示,表示请求已接收,继续处理
2XX:成功,表示请求已接收
3XX:重定向,要完成请求,需进一步处理
4XX:客户端错误,有语法错误或请求资源不存在
5XX:服务端错误,服务器未能实现该请求
其中最常用的状态码有:
200:OK,服务器成功处理了请求
301:永久重定向,请求的url已永久性转移到了另一个地址,在服务器的响应报文中包含location URL,即资源现在使用的地址。
302:暂时重定向,一般由以下两种情况:
1)请求的url临时更换为新地址,在服务器的响应报文中包含location URL,即临时指向的地址
2)如用户处于未登陆状态时,若想要访问需要登陆才能访问的页面,服务器会返回302状态码,跳转到登陆页面
304:Not Modified,未修改,客户端的缓存资源是最新的,客户端使用缓存即可
401:禁止访问
404:Not Found,未找到资源
501:Internal Server Error,服务器遇到错误,无法正确提供请求。
六、HTTPS协议和HTTP协议的区别?
HTTPS协议就是加密了的HTTP协议,即HTTP+SSL(或TSL)。采用HTTPS的网站需要到数字证书认证机构去申请CA证书。
七、HTTP header一般包含什么内容?
1、cookies
2、cache:如是否使用缓存、缓存文件的时间戳、缓存的超时时间等信息。
3、accept:浏览器客户端能接受的媒体类型,比如text/html代表浏览器可以接受服务器返回的html。
accept-encoding:浏览器支持的压缩方式。
accept-language:浏览器支持的语言。
4、user-agent:浏览器告诉服务器,客户端所使用的操作系统版本、cpu型号、浏览器版本、浏览器语言和插件等信息。
5、referer:浏览器告诉服务器用户来自哪个页面。
6、host:web服务器地址和端口号。
关于Fiddler
一、Fiddler能做什么?
Fiddler是一款功能强大的抓包工具,能获取和记录客户端与服务器之间的HTTP(及HTTPS)请求。
1、抓包:抓取HTTP请求和响应内容。
2、改包:设置断点,拦截HTTP请求或响应报文,修改后再放行。
3、模拟各种客户端:fiddler可修改user-agent内容,伪装成各种客户端发送请求。
4、弱网测试:通过限制HTTP请求或响应的速度,来模拟网络延迟。
二、Fiddler为什么能抓包?
Fiddler实际上是一个web代理服务器,代理地址为127.0.0.1,默认端口为8888。代理服务器位于Web浏览器和Web服务器中间,扮演“中间人”的角色。
1、当Fiddler启动抓包时,会将本机internet连接中,设置为使用代理服务器,地址为127.0.0.1,端口号为8888
2、当Fidder关闭抓包时,将本机internet选项中,取消代理设置。
Fiddler只能抓HTTP和HTTPS协议的包,其他协议的包是抓不到的,比如qq聊天时候发送的消息,就是抓不到的。
三、Fiddler怎么修改HTTP协议内容?
举例,假设对www.baidu.com发送请求,
1、若要修改HTTP请求的内容
1)在fiddler左下角的命令行中,输入bpu www.baidu.com
2)浏览器中打开百度首页,即发送HTTP请求
3)fiddler中,该HTTP请求显示出来,且有个红色的T标志
4)在右侧的界面中,打开raw tab页,可手动修改请求的内容,点击【Run to completion】放行
5)输入bpu则取消断点设置。
2、若要修改HTTP响应的内容,在fiddler左下角命令行中,输入bpafter www.baidu.com,其他同上
四、Fiddler如何实现弱网测试?
弱网一般指在电梯、地铁、公交车、隧道等场景下使用客户端浏览网页或者APP,此时可能会发生如下问题:
1、操作时间慢
2、用户体验差,出现闪退、卡死等情况
3、非正常情况下,出现bug的可能性增加,比如在电梯里打开app抢代金券,可能因为网络不好点击按钮后无反应,就多次点击按钮,导致网络恢复后,该用户抢了N多张代金券(需求是一个用户只能抢一张代金券)
弱网可分为如下场景:
1、网络慢,有延迟:fiddler的Rules->Performance->Simulate Modem Speeds,如果需要设置具体的延迟时间,可在FiddlerScript脚本中修改。
2、网络中断或者网络超时:都可以通过下断点的方式来模拟。
“软件测试工程师”面试复习之《HTTP协议及抓包工具Fiddler》相关推荐
- HTTP协议和抓包工具Fiddler
HTTP,Fiddler 1.HTTP是什么 2.HTTP协议与客户端和服务器 3.HTTP协议的报文格式 1.抓包工具 2.HTTP报文格式 1.HTTP请求的报文格式 2.HTTP响应的报文格式 ...
- Http协议和抓包工具
爬虫系列目录 1.HTTP协议和抓包工具 文章目录 爬虫系列目录 理解Http协议 常见请求头参数 常见响应状态码 Chrome抓包工具的使用 理解Http协议 http: 80 https: 443 ...
- HTTP、HTTPS协议以及抓包工具
文章目录 前言 一.HTTP 1.HTTP是什么? 2.HTTP工作过程 3.HTTP协议格式 (1)HTTP请求(request) URL 方法(method):最主要的有get/post 报头(h ...
- 《软件测试工程师面试秘籍》—第1章1.3节过关斩将
本节书摘来自异步社区<软件测试工程师面试秘籍>一书中的第1章1.3节过关斩将,作者51Testing软件测试网 , G.li,更多章节内容可以访问云栖社区"异步社区"公 ...
- 软件测试工程师面试如何描述自动化测试是怎么实现的?
软件测试工程师面试的时候,但凡简历中有透露一点点自己会自动化测试的技能点的描述,都会被面试官问,那你结合你的测试项目说说自动化测试是怎么实现的?一到这里,很多网友,包括我的学生,也都一脸懵逼的样子. ...
- 软件测试工程师面试接口测试常见问题
软件测试工程师面试被问到:"你做过哪些测试".可是你会回答"做过接口测试". 1,接口测试是什么呢? 简单回答:接口测试就是测试系统组件间的接口.测试接口间数据 ...
- 今日头条面试真题及答案——软件测试工程师面试秘籍
2018年今日头条面试真题及答案 试题1.在浏览器地址栏里输入一个网址,接下来会发生什么? 答案:发生的操作如下. (1)浏览器查找该网址的IP地址. (2)浏览器根据解析得到的IP地址向Web服务器 ...
- 软件测试工程师面试秘籍_成为一名出色的软件工程师的一个秘诀:阅读代码
软件测试工程师面试秘籍 通过建立例程和阅读代码的习惯来成为更好的程序员 这是我偶尔写的系列文章" 给年轻软件工程师的笔记"中 的帖子 . 在 这里 注册 . Redis的代码片段 ...
- 参加软件测试工程师面试前,这些内容你一定要准备
在参加软件测试面试时,很多小伙伴会因为面试前准备不充分,而导致面试通过率降低.基于此,我向多年面试软件测试工程师的HR取了经,并结合自己的经历,总结成文,希望对即将参加软件测试面试的小伙伴们,有所帮助 ...
最新文章
- 上海高考听说测试什么软件,2021上海市高考外语听说测试模拟系统使用方法及注意事项...
- Win7下安装git
- flutter 动画展开菜单_Flutter ExpansionPanel 超级实用展开控件
- 微信x漫威首款小程序公开!揭露未来“看展”趋势
- 如何在Linux上下载MongoDB
- To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 解决方法
- win8更改计算机锁屏时间,在win8系统中设置自动锁屏功能的方法
- 如何做一份漂亮的年终总结报告?教你5个实用套路
- 如何将FPGA程序固化到外部Flash存储器
- 推流是什么,直播为什么要推流
- selenium必应搜索,获取标题以及url
- 大数据搜索引擎技术_网络数据搜索技术
- Macbook m1安装java与IntelliJ
- 嵌入式Linux之swi异常处理
- 《笨方法学 Python 3》35.分支和函数
- python 分行读取txt文件
- 易事特拟8600万元投资山东潍坊临朐县光伏扶贫BOT项目
- web 项目 连接mycat 读写分离失效问题
- 2019年,人工智能领域有哪些突破值得期待?
- java : mozilla rhino js Test URL or Socket