“软件测试工程师”面试复习之《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、网络中断或者网络超时:都可以通过下断点的方式来模拟。

你可能感兴趣的:(关于面试)