一:什么是http协议
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或者规则,超文本传输协议(http)是一种通信协议,它允许将超文本标记语言(html)文档从web服务器传送到客户端的浏览器
目前我们使用的是http/1.1版本

二:web服务器,浏览器,代理服务器工作原理

三:URL详解
URL:地址用于描述一个网络上的资源,基本格式如下:

schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定底层使用的协议(比如:http,https,ftp)
host:http服务器的ip地址或者域名
port:端口,http服务器的默认端口是80可以省略,如果使用了别的端口必须指明
path:访问资源的路径

query-string:发送给http服务器的数据
anchor:锚

URL的一个例子:
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff

schema:http
host:www.mywebsite.com
path:/sj/test/test.aspx
query-string:name=sviergn&x=true
anchor:stuff

四:http协议是无状态的
http协议是无状态的,同一个客户端的这次请求和上次请求是没哟对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。为了解决这个问题,Web程序引入了Cookie机制来维护状态。

五:打开一个网页需要浏览器发送很多次的Request请求
描述一个网页显示加载的整个过程:
5.1当你在浏览器中输入URL  http://www.cnblogs.com的时候,浏览器发送一个Request去获取http://www.cnblogs.com的html.服务器把Response发送回给浏览器。
5.2浏览器分析Response中的HTML,发现其中引用了很多其他的文件,比如图片、CSS、JS文件。
5.3浏览器会再次发送Request去获取图片、CSS文件、或者JS文件。
5.4等所有的文件都下载成功后,网页就显示出来了。

Fiddler基本界面:
1、主菜单栏
2、工具栏
3、web sessin列表(会话列表)
4、功能面板
5、Quick Exec:命令行工具
websession列表中包含下面的信息:
1、# fiddler生成的ID
2、result:响应代码
3、protocol:使用的协议http或者https
4、host:服务器的主机名和端口号
5、URL:url路径
6、Body:http响应中包含的字节数
7、caching:跟缓存相关的字段值
8、Content-Type:响应的中Content-Type值
9、对应的本地windows进程

Fiddler抓包的原理:Fiddler本质上就是一个Web代理服务器,
默认端口是8888

Http协议报文结构
http报文分为2个:
一个是http请求报文
一个是http响应报文

http请求的报文结构:
分为3部分:
第一部分:起始行,包括请求的方法,比如post或者get,http协议的版本
POST http://192.168.1.128:88/zentao/user-login-L3plbnRhby8=.html HTTP/1.1

第二部分:请求头部(Headers)字段
Host: 192.168.1.128:88
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 103
Origin: http://192.168.1.128:88
Connection: keep-alive
Referer: http://192.168.1.128:88/zentao/user-login-L3plbnRhby8=.html
Cookie: lang=zh-cn; device=desktop; theme=default; windowWidth=1440; windowHeight=764; zentaosid=jc9o7n9qbhfl65mn3g4m4dkgp1
Upgrade-Insecure-Requests: 1

第三部分:请求的主体body
account=wangkuikui&password=a9a47f28aef1e4c8ba4b395e0ef16aef&referer=%2Fzentao%2F&verifyRand=1971429801

特别注意:head首部和bodoy主体之间有一个空行
如果是get方法,http请求中就没有body

http响应报文分为3部分
第一部分:起始行,有状态码和状态消息
HTTP/1.1 200 OK

第二部分:首部(Head)
Date: Wed, 23 Oct 2019 07:16:53 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private
Pragma: no-cache
Set-Cookie: lang=zh-cn; expires=Fri, 22-Nov-2019 07:16:53 GMT; Max-Age=2592000; path=/zentao/
Set-Cookie: device=desktop; expires=Fri, 22-Nov-2019 07:16:53 GMT; Max-Age=2592000; path=/zentao/
Set-Cookie: theme=default; expires=Fri, 22-Nov-2019 07:16:53 GMT; Max-Age=2592000; path=/zentao/
Vary: Accept-Encoding
Content-Length: 123
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; Language=UTF-8;charset=UTF-8

第三部分:是主体body
<html><meta charset='utf-8'/><style>body{background:white}</style><script>parent.location='/zentao/index.html';

</script>
head首部和body主体之间有一个空行

fiddler如何捕获firefox请求,采用系统代理设置
解压http响应:Response body is encodeed click to decode按钮

什么是https:
https就是加密过的http,使用https后,浏览器客户端和Web服务器传输的数据是加密的,只有浏览器和服务器知道内容。
HTTPS=HTTP+TLS或者SSL,采用https的网站需要去数字证书认证机构申请CA证书。
https默认端口:8443

fiddler如何捕获https请求
添加例外绕过https证书错误

fiddler捕获firefox发出的https请求
第1步:导出证书
第2步:安装证书

fiddler下断点,修改http报文,既能修请求报文,也能修改响应报文

修改请求报文,打断点的方式有2种:
第1种:全局断点
第2种:单个断点   bpu+url

实验:用fiddler修改http请求
浏览器想访问www.163.com,我现在fiddler修改http请求,让浏览器取访问 www.sohu.com

修改响应报文,打断点的方式有2种:
第1种:全局断点
第2种:单个断点  bpafter+url
实验:fiddler修改网页的标题

fiddler过滤
fiddler做性能测试
fiddler做弱网络测试
面试题:如何模拟我们开发手机App在类似于地铁里网络很差的情况下的测试?
实验:当电脑浏览器访问百度网站的时候,用fiddler来限速
在工作中模拟弱网络测试用charles更方便,可以提供很多现成的网速供选择

fiddler手机抓包
fiddler实现手机抓包,需要满足下面3个条件
1:电脑上安装有fiddler抓包工具
2:安装有fiddler的电脑必须跟手机在同一个网络里
3:在fiddler上设置好捕获https请求
4:fiddler中勾选Allow remote computers connect

在手机上设置代理(包括iphone和andriod)
打开手机中设置——>wifi——>修改网络——>高级——>代理修改为手动,主机名填写ip的地址和端口号8888

捕获手机上的HTTPS
苹果和安卓手机的第一种证书安装方法:
如果抓不到HTTPS请求,则必须把Fiddler证书安装到手机上
步骤1:在电脑浏览器中访问地址:https://www.telerik.com/fiddler/add-ons
步骤2:下载CerMaker for IOS and Android 运行,会为fiddler产生新的证书
步骤3:打开IOS或者安卓手机,苹果手机打开safaris浏览器,输入:http://hostip:8888,hostip就是你安装Fiddler所在机器的IP,在打开的网页中单击FiddlerRoot Certificate,单击允许下载证书
步骤4:安装证书

安卓手机的另外一种证书安装方法:
安卓设备证书安装步骤:
步骤1:启动 Fiddler,Tools->Fiddler options->HTTPS,在actions中单击导入到桌面,文件名是FiddlerRoot.cer
步骤2:通过把FiddlerRoot.cer传输到手机(比如pc上的qq传输到电脑qq)
步骤3:打开手机中的设置——>系统安全——>凭据存储——>从SD卡安装,选择FiddlerRoot.cer这样就能成功安装证书

测试Fiddler捕获的HTTPS请求:打开手机浏览器,输入https://www.baidu.com,打开手机上的APP做同样的操作

http协议和Fidddler面试题总结:
面试题1:Http协议有哪几种请求方式?
GET   POST   HEAD  PUT   OPTIONS  TRACE   DELETE  PATCH等等...

面试题2:POST与GET有什么区别?
GET:从指定的资源请求数据
POST:向指定的资源提交要被处理的数据

面试题3:cookie与session的区别
cookie是保存在浏览器端的key-value值对,它可以辨别用户身份,存储一些用户信息。
cookei保留存储服务器发给浏览器的一些响应数据,根据有效期有会话cookie和永久cookie两种,浏览器关闭,会话cookie没了,会话结束。
session是保存在服务器端的key-value值对,服务器创建每个cookie的时候,会给每个cookie分配一个ID,cookie保存在SesssionID,当浏览器再次发送请求过来的时候,服务器根据cookie携带的sessionID返回对应的响应数据。

面试题4:HTTP头域(Http Head)中包含哪些参数?
Host: 请求的主机
Accept: 表示浏览器的客户端可以接受的媒体类型,比如text/html,表示浏览器可以接受服务器返回html
Accept-Language: 作用是浏览器申请自己接受的语言
User-Agent: 作用是浏览器用来告诉服务器,客户端使用的操作系统以及版本
Accept-Encoding: 跟压缩相关的,比如gzip,告诉服务器浏览器支持gzip格式
Connection: keep-alive:从http1.1开始,系统默认开启Connection: keep-alive,主要是保持连接性
Referer: 主要作用是让服务器判断来源页面,即用户是从哪个页面过来
Cookie:存储的cookies相关信息

面试题5:熟悉http响应代码:
一些常见的状态码为:

200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务不可用
详细分解:

1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。

代码  说明
100  (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101  (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

2xx (成功)
表示成功处理了请求的状态代码。

代码  说明
200  (成功)  服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201  (已创建)  请求成功并且服务器创建了新的资源。
202  (已接受)  服务器已接受请求,但尚未处理。
203  (非授权信息)  服务器已成功处理了请求,但返回的信息可能来自另一来源。
204  (无内容)  服务器成功处理了请求,但没有返回任何内容。
205  (重置内容) 服务器成功处理了请求,但没有返回任何内容。
206  (部分内容)  服务器成功处理了部分 GET 请求。

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

代码  说明
300  (多种选择)  针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301  (永久移动)  请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302  (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303  (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304  (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305  (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307  (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

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

代码  说明
400  (错误请求) 服务器不理解请求的语法。
401  (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403  (禁止) 服务器拒绝请求。
404  (未找到) 服务器找不到请求的网页。
405  (方法禁用) 禁用请求中指定的方法。
406  (不接受) 无法使用请求的内容特性响应请求的网页。
407  (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408  (请求超时)  服务器等候请求时发生超时。
409  (冲突)  服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410  (已删除)  如果请求的资源已永久删除,服务器就会返回此响应。
411  (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412  (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413  (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414  (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415  (不支持的媒体类型) 请求的格式不受请求页面的支持。
416  (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417  (未满足期望值) 服务器未满足"期望"请求标头字段的要求。

5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

代码  说明
500  (服务器内部错误)  服务器遇到错误,无法完成请求。
501  (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502  (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503  (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504  (网关超时)  服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505  (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

软测5班Http协议与Fiddler抓包(2019-10-24)相关推荐

  1. 拿捏Fiddler抓包教程(10)-Fiddler如何设置捕获Firefox浏览器的Https会话

    1.简介 经过上一篇对Fiddler的配置后,绝大多数的Https的会话,我们可以成功捕获抓取到,但是有些版本的Firefox浏览器仍然是捕获不到其的Https会话,需要我们更进一步的配置才能捕获到会 ...

  2. 手机抓包的两种方法:wireshark抓包和fiddler抓包

    转载来源:https://www.chinaz.com/web/2015/0326/393344.shtml 手机抓包的两种方法:wireshark抓包和fiddler抓包 2015-03-26 10 ...

  3. Fiddler抓包工具入门:软件测试员必知的抓取https协议的方法

    首先给大家分享一个抓包的小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常": 小A说:"这哪是我的 ...

  4. IOS 苹果手机fiddler抓包时出现了tunnel to 443 解决方案,亲测有效

    IOS 苹果手机fiddler抓包时出现了tunnel to 443 解决方案,亲测有效 参考文章: (1)IOS 苹果手机fiddler抓包时出现了tunnel to 443 解决方案,亲测有效 ( ...

  5. 全网最详细的Python+Requests接口测试教程:Fiddler抓包工具

    本篇涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容. 文章是针对零基础入门接口测试和py ...

  6. Fiddler抓包工具入门及常用功能详解

    先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:"你这个页面做的有问题,页面展示异常": 小A说:"这哪是我的问题,你去找后 ...

  7. fiddler 抓包详细教程

    为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始. 结合抓包工具讲http协议更容易学一些. 抓firefox上htt ...

  8. fiddler抓包常用功能

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统, ...

  9. Python+Requests接口测试教程(1):Fiddler抓包工具

    本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容. 刚买须知:本书是针对零基础入门接口 ...

最新文章

  1. 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动
  2. 《数学之美》第26章 维特比和他的维特比算法
  3. MediaCodec_loop 崩溃
  4. 【CV秋季划】人脸识别经典难题介绍,抗遮挡,跨年龄,异质源,少样本等
  5. 自定义曲线_完美动力小课堂:AnimationCurve(动画曲线编辑) 如何使用?
  6. java中跳出当前循环怎么做_在java中,如何跳出当前的多重循环?
  7. java 默认参数_Java 方法的参数可以有默认值吗?
  8. pwm调速流程图小车_PWM调速+循迹__智能小车程序
  9. 二年级计算机考试题,二年级计算机笔测试题(XX-XX第一学期
  10. AI模型的大一统!浅析微软的BEIT3:多模态领域乱杀的十二边形战士
  11. PHP如何应对高并发
  12. mtk刷机工具sp flash tool_qpst刷机(翻到高中刷机时的记录,想来qpst对现在玩机的人也有用吧...
  13. sklearn实现随机森林回归预测
  14. ArchieOpenGL教程扩展一:修改背景色颜色
  15. 6S大气校正模型源码
  16. c语言 运算符op,1 简单计算器。请编写一个程序计算表达式:datal op data2的值。其中op为运算符+、—、*、/。...
  17. .java输出n行数字塔
  18. NFT 金融化:存在哪些机会?面临哪些挑战?
  19. 南大周志华写的For Potential Students
  20. ASP标准MD5加密签名函数代码

热门文章

  1. 仓库管理的五点含义、七大原则和十条注意
  2. 陈旭数据科学与计算机学院,陈旭(中山大学数据科学与计算机学院教授)_百度百科...
  3. BZOJ1180 [CROATIAN2009]OTOCI
  4. PR相册模板 照片/相片一张一张展示PR电子相册模板
  5. Bosh 安装Concourse持续部署工具
  6. Cloudfoundry的部署工具BOSH介绍
  7. 开源飞控设备连接图介绍
  8. TCL S960T刷机包 乐蛙OS5 稳定版 流畅 优化
  9. [自制操作系统] JOS文件系统详解支持工作路径MSH
  10. c语言sinx的作用,C语言中 sinx cosx 的用法