admin管理员组

文章数量:1530013

一:什么是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,这种情况下端口号可以省略。如果使用了别的端口号,必须指明,例如:http://wwwblogs:8080
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:mao

URL的一个例子:
http://www.mywebsite/sj/test/test.aspx?name=sviergn&x=true#stuff
stuff:http
host:www.mywebsite
path:/sj/test/test.aspx
query-string:name=sviergn&x=true
anchor:stuff

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


五:打开一个网页需要浏览器发送很多次的Request请求
描述一个网页显示加载的整个过程:
5.1当你在浏览器中输入URL  http://wwwblogs的时候,浏览器发送一个Request去获取http://wwwblogs的html.服务器把Response发送回给浏览器。

5.2浏览器分析Response中的HTML,发现其中引用了很多其他的文件,比如图片、CSS、JS文件。

5.3浏览器会再次发送Request去获取图片、CSS文件、或者JS文件。

5.4等所有的文件都下载成功后,网页就显示出来了。

 

-------------------------------Fiddler抓包工具---------------------------------
Fiddler基本界面
1、主菜单栏
2、工具栏
3、功能面板,最常用的是inspector选项卡
4、QuickExec:命令行工具
5、inspector,可以查看http请求和http响应报文,其中raw可以看到完整的信息。
6、Web Session列表,一个session包含了http请求和http响应,websession包含如下的信息:
6.1、#这是fiddler生成的ID
6.2、result响应的代码
6.3、protocol使用的协议http或者https
6.4、host服务器的主机名和端口号
6.5、urlURL的路径
6.6、body:http响应中包含的字节数
6.7、Cachiing:跟缓存相关的字段值
6.8、Content-Type:响应中的Content-Type值
6.9、process:对应本地的windows进程

案例:
Fiddler捕获http协议的数据包
Fiddler设置开始捕获和停止抓包
Fiddler抓包的原理:Fiddler本质上是一个Web代理服务器,它使用的代理地址是:127.0.0.1,端口是8888

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

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

第二部分:请求的头部(headers)字段
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: 192.168.1.117:81
Connection: Keep-Alive

第三部分:请求的主体body
account=admin&password=2ff8fde74797638b9ce52992af544638&referer=%2Fzentao%2F&verifyRand=388332282

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


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

第二部分:首部(Head)
Date: Wed, 07 Aug 2019 08:48:25 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, 06-Sep-2019 08:48:26 GMT; Max-Age=2592000; path=/zentao/
Set-Cookie: device=desktop; expires=Fri, 06-Sep-2019 08:48:26 GMT; Max-Age=2592000; path=/zentao/
Set-Cookie: theme=default; expires=Fri, 06-Sep-2019 08:48:26 GMT; Max-Age=2592000; path=/zentao/
Vary: Accept-Encoding
Content-Length: 113
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/';

</script>
特别注意:Head首部和body主体之间有一个空行


Fiddler如何捕获firefox浏览器的请求:在firefox中选择使用系统代理设置

解压http响应:如果http响应是乱码,单击"Response body is encoded click to decode"按钮,解压http响应


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

Fiddler如何捕获https请求

添加例外绕过https证书错误

Fiddler捕获firefox发出的https请求
第一步:导出证书
第二步:安装证书

https客户端和服务器端双方身份验证的握手请求tunnel to可以隐藏掉,Rules hide CONNECTS隐藏

红色:表示http状态(错误)
黄色:表示http状态(认证)
蓝色:表示响应类型为为HTML
绿色:表示响应类型为script
紫色:表示响应类型为CSS
灰色:表示数据流类型CONNECT或者响应类型为图像

Fiddler安全性的第一个例子,发现中国互动出版社网站,密码传输是明文传输

Fiddler下断点,修改http请求报文

Fiddler下断点后,你就可以修改http请求的任何信息
第一种:全局断点和取消全局断点,这种方法会拦截所有的会话
第二种:单个断点,已知某个请求的URL地址,只针对这个请求大断点,其他请求不会拦截,命令方式:bpu www.baidu回车, 取消单个断点bpu回车

实验1:Fiddler修改http请求
浏览器想访问www.163,现在是想通过Fiddler修改http请求,让浏览器取访问www.sohu


Fiddler下断点,修改http响应,下断点:
第一种:全局断点
第二种:单个断点,在命令行中输入:bpafter  www.baidu,回车,取消断点:bpafter回车
实验2:通过Fiddler修改网页的标题
用户访问一个网页,通过Fiddler修改响应的方法修改网页的标题

Fiddler过滤

Fiddler做性能测试

Fiddler实现弱网络测试
面试题:如何模拟测试手机APP在类似于网络环境很差的情况下的测试情况?
实验:当电脑上的浏览器来访问百度的时候用Fiddler来限速。


-------------------------------Fiddler手机抓包---------------------------------
环境准备:
Fiddler抓手机上包,必须满足下面3个条件:
1、电脑上安装有Fiddler抓包工具
2、安装有Fiddler的电脑必须跟手机在同一个网络里
3:Fiddler上设置好捕获HTTPS的请求

获取Fiddler所在机器的IP地址
在手机上设置代理(包括IOS和Android):打开手机中的设置——>wifi——>修改网络——>高级——>代理修改为手动,主机名填写服务器的ip地址和端口号8888

测试Fiddler捕获手机发出的http请求:
在手机浏览器中输入:www.163
打开手机APP

捕获手机上的HTTPS
苹果和安卓手机的第一种证书安装方法:
如果抓不到HTTPS请求,则必须把Fiddler证书安装到手机上
步骤1:在电脑浏览器中访问地址:https://www.telerik/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,打开手机上的APP做同样的操作


HTTP协议和Fiddler面试题总结:
面试题1:HTTP协议有哪几种请求方式?
答案:GET、POST、HEAD、PUT、OPTIONS、DELETE、TRACE、PATCH.

面试题2:GET和POST请求的区别?
答案:在客户机和服务器之间进行请求响应的时,两种最常用的方法是GET和POST.
GET:从指定的资源请求数据
POST:向指定的资源提交要被处理的数据
区别如下:
1:GET提交的数据会放在URL之后,以问号(?)分隔URL和传输参数,参数之间以&相连,Post方法是把提交的数据放在http包的body中。
2:GET提交数据大小有限制(因为浏览器对URL的长度有限制),而post方法提交的数据大小没有限制。
3:GET方式需要使用Request.QueryString来取得变量的值,而post方法通过Request.Form来取得变量的值。
4:GET方式提交的数据会带来安全性问题,与post相比get的安全性较差,因为所发送的数据是URL中的一部分,post比get安全因为参数不会保存在浏览器历史或者Web服务器日志中。

面试题3:Cookies机制和Session机制的区别
答案:
1:Cookies数据保存在客户端,Session数据保存在服务器端。
2:Cookies可以减轻服务器的压力,但是不安全,Session相对于Cookies来说较安全,但是占用服务器的资源。

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

面试题5:什么是DNS
答案:域名解析服务

面试题6:熟悉下面的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 协议版本。


复习一下,通过bpu 局部断点修改http请求,在Inspector—>WebForms选项卡里面修改,在Run to Compeletion放行

 

 

 

 

 

 

 

本文标签: 课堂协议笔记http软测