> 文章列表 > http(1)

http(1)

http(1)

主要介绍http 1.0

我们在浏览器中输入一个网址,稍等片刻就看见了网页

 客户端会发送一个http请求,要求返回cn.bing.com这个网址,服务器收到请求后就会返回一个html页面 (服务器根据请求找到客户端想要的资源,然后把这个html通过HTTP响应返回给浏览器,客户端收到HTML之后对页面进行渲染)

上诉这个HTTP模式就是典型的 一问一答 的模型协议

学习HTTP的主要学习内容 是学习HTTP的报文格式(报文格式就是描述了HTTP请求是啥样的,响应是啥样的)

因此我们需要使用抓包工具,来捕获到请求交互的详细情况(抓包就是一种特殊的软件,相当于一个代理程序,浏览器给服务器发的请求就会经过这个代理程序,进一步分析出请求和响应的结果如何)借助这个代理程序,就知道了浏览器和服务器之间具体交互细节

代理还分具体两种,正向代理和反向代理,前者就是给客户端提供服务,和客户端关系紧密,这样服务器就不知道真实的客户端是啥。后者就是给服务器提供服务,和服务器关系紧密,这样客户端就不知道真实的服务器是啥。

fiddler

左侧区域是抓到的请求列表

 上面是http请求的原始模样,下面是http响应的原始模样

开启fiddler抓取https的功能

在菜单栏 tools options 然后如图勾选选项,期间可能需要安装证书

如果这个时候还看不见https的进程,可能是使用了其他的代理软件,例如游戏加速器导致的,不能同时和fiddler运行。

HTTP请求

 构造一个HTTP请求,本质上就是往一个TCPsocket中,按照下列格式来写入数据即可 

GET http://blogs.msdn.microsoft.com/fiddler/2011/12/10/revisiting-fiddler-and-win8-immersive-applications/ HTTP/1.1
Host: blogs.msdn.microsoft.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,be;q=0.5,eo;q=0.4
 

GET http://blogs.msdn.microsoft.com/fiddler/2011/12/10/revisiting-fiddler-and-win8-immersive-applications/ HTTP/1.1

第一行是GET方法 然后是URL 用来描述网络上的唯一资源

 Host: blogs.msdn.microsoft.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,be;q=0.5,eo;q=0.4

然后是一个按行组成的键值对,每一行是一个键值对,键和值之间使用: 来分割(冒号加一个空格)

有些请求的最底下会有空行,一个HTTP请求的header可以有若干个,就使用空行来作为header的结束

有的请求会有body,也就是正文,会显示用户名,密码,uid等(基本都为加密)

HTTP响应

HTTP/1.1 302 Found
Location: https://blogs.msdn.microsoft.com/fiddler/2011/12/10/revisiting-fiddler-and-win8-immersive-applications/
X-Azure-Ref: 0ifk/ZAAAAAA8GVVbO6Q6Tqt/0u5hvW8NU0lOMzBFREdFMDIxMwBkZWEwZDI4Ny03YzE0LTRmZTYtOGI3Yi1kMDkxNDRhOWQzNWY=
Date: Wed, 19 Apr 2023 14:24:09 GMT
Content-Length: 0

HTTP/1.1 302 Found

1.1是版本号 302是状态码 后面可能会跟着一个状态码的描述

Location: https://blogs.msdn.microsoft.com/fiddler/2011/12/10/revisiting-fiddler-and-win8-immersive-applications/
X-Azure-Ref: 0ifk/ZAAAAAA8GVVbO6Q6Tqt/0u5hvW8NU0lOMzBFREdFMDIxMwBkZWEwZDI4Ny03YzE0LTRmZTYtOGI3Yi1kMDkxNDRhOWQzNWY=
Date: Wed, 19 Apr 2023 14:24:09 GMT
Content-Length: 0

为响应报头,也就是header,为键值对结构,使用: 来进行分割(冒号和空格)

 空行,作为header的结束标记

正文,可以是json html  js css 图片等结果