自学内容网 自学内容网

不只是请求和响应:使用Fiddler抓包HTTP协议全指南(上)

欢迎浏览高耳机的博客

希望我们彼此都有更好的收获

感谢三连支持!  

        🙉你是一名侦探 ! 正在追踪一条条数字化的线索。从简单的网页浏览到复杂的在线交易,每一次点击和滑动背后都隐藏着复杂的数据交换。每一个HTTP请求和响应都像是现场留下的指纹,而Fiddler就是你的放大镜和取证工具。通过这篇博客,你将学会如何通过抓包工具捕捉、分析甚至修改这些“指纹”,不仅能够洞察网络通信的每一个细节,还能够在必要时进行干预。无论你是学习者还是应用者,这些技能都将是你的宝贵财富。

        让我们立刻启程,一探HTTP协议的奥秘,掌握Fiddler这一强大的网络抓包工具,让你成为网络通信的高手。

目录

HTTP是什么

HTTP协议工作过程/抓包

抓包工具Fiddler

版本选择

下载事项

抓包原理

使用Fiddler抓包 

HTTP请求/响应 

请求格式 

响应格式 

协议格式总结 


HTTP是什么

        🥝HTTP全称为 "超文本传输协议" ,是一种应用最广泛的 应用层协议 (没有之一)

       🍎 “超文本”的含义,就是传输的内容不仅仅是文本(比如html, css等文本),还可以是一些其他的资源,比如图片,视频,音频等二进制的数据。使用浏览器浏览网页,使用各种APP客户端,甚至服务器之间的相互调用,大概率也是使用HTTP协议。

        HTTP协议诞生于1991年,目前互联网上能见到的HTTP协议,绝大部分都是HTTP/1.1版本(基于TCP),而目前最新的版本是HTTP/3.0(基于UDP),还没有大规模商用。

        为什么目前仍然在使用古早的版本,原因也很简单,那就是1.1版本也很好用,仍然满足目前互联网的大部分需求,而升级的成本却是比较高的(浏览器/服务器的兼容性),所带来的收益也有限。有IPv4升级到IPv6的那种既视感。

        🫐我们平时在浏览器上打开一个网页,就是使用HTTP协议来传输数据的。

        这里的https,可以认为是http的升级版,区别在于https引入了“加密层”,安全性更高。除此之外,https与http完全一样的了~~     (HTTPS详细内容会在后续的博客中展开)

        🍓HTTP是典型的“一问一答模型”的协议,客户端发送一个请求,服务端就返回一个响应。打开网页这种场景就是典型的一问一答模式。

HTTP协议工作过程/抓包

        🥑当我们在浏览器中输入一个"网址"(URL)时,浏览器就给该"网址"的服务器发送了一个HTTP请求,服务器再返回一个HTTP响应。 这个响应结果被浏览器解析之后,就展示成我们看到的页面内容。(这个过程中浏览器可能会给服务器发送多个HTTP请求,服务器会对应返回多个响应,这些响应里就包含了页面HTML, CSS, JavaScript, 图片,字体等信息)。

        🍑事实上,当我们访问一个网站的时候,可能涉及不止一次的HTTP请求/响应的交互过程。 可以通过浏览器的开发者工具观察到这个详细的过程。 通过F12调用开发者工具,切换到Network/网络标签页。然后刷新页面即可看到如下图效果。每一条记录都是一次HTTP请求/响应。这个过程就叫做 "抓包",我们需要通过抓包来观察HTTP的请求/响应情况。

        抓包: 把通过自己网卡上的数据获取到并且解析显示出来~ 

        🥥Chrome/Edge浏览器自带的开发者工具很好用,但是不能看到HTTP的原始报文数据,不适合我们学习HTTP协议。所以我们需要更加趁手的工具/代理。

抓包工具Fiddler

        🍍经典的! 功能强大的抓包工具 :    https://www.telerik.com/fiddler/

版本选择

         🙉最新版,全平台支持! (但是收费!!!)

        🙉经典版,功能足够强大,足够使用! (免费!!!)

下载事项

        1) 确保你的电脑上退出了其他的代理软件。Fiddler也是代理软件,可能会和其他代理冲突,导致不能正确运行,例如VPN/浏览器插件...很可能会和Fiddler冲突,只需退出即可,不用卸载!

        2) 由于当前互联网上大部分网页都是HTTPS,需要开启Fiddler的HTTPS功能(一次性操作)。

 "证书" 也会在后续的HTTPS博客中详细展开~

抓包原理

         🍊Fiddler相当于一个“代理” 

        🍉浏览器访问网页时,就会把HTTP请求先发给Fiddler,Fiddler再把请求转发给该网页的服务器。当服务器返回数据时,Fiddler拿到返回数据,再把数据交给浏览器。 因此Fiddler对于浏览器和服务器之间交互的数据细节,都是非常清楚的。

        代理就可以简单理解为外卖小哥。外卖小哥取到对应的餐品,再把餐品交到你手上。这个过程中,外卖小哥对于“你”和“商家”之间的交易细节,是非常清楚的。

使用Fiddler抓包 

        🍇安装并且设置完毕以后,只需要启动Fiddler,抓包工作就自动开始了~~ 

        1) 左侧是抓到的 HTTP 数据报的列表

        🥝启动Fiddler之后,虽然没有进行什么操作,但还是看到Fiddler进行了很多的抓包操作,这是因为电脑中的某些网络相关进程在后台不停和服务器进行交互,这是正常的。

        在进行需要的抓包操作之前,我们可以选中任意一个数据报,Ctrl + A 全选,用Delete删除,再进行我们需要的操作,就会方便我们更快速的找到目标。

        2) 点击一个数据报

        右侧上方是请求的详情。

        右侧下方是响应的详情

        3) 请求和响应的上方都会有对应的标签排

        🍎点击Raw,转换为查看原始报文数据

        🫐点击View in Notepad,使用记事本打开,可以详细查看报文

        🍓我们看到的部分报文可能会是二进制并且是压缩过的,这样做的目的是减少传输时消耗的带宽,带宽是互联网中最贵的硬件资源,比CPU、内存贵得多。

        这些返回的响应数据解压之后,其实就是网页的HTML,大多数网页如此。

在Fiddler开启后,浏览器会多了一层处理,可能导致网页加载变慢。

HTTP请求/响应 

请求格式 

        1) 首行 : [方法] + [url] + [版本]

        2) 请求头(header) : 从第二行开始的若干行,一直到空行结束

        🥑每一行都是一个键值对,键和值之间使用 ":(空格)" 分割

        🍑HTTP中,请求头的键值对是HTTP标准规定的,不同的请求头都有特定的含义,标准也允许用户自定义一些请求头。

        3) 空行:请求头的结束标记。

        4) 正文(body):有的请求中有body,而有的则没有;

        一般来说在HTTP中,GET请求往往不带body,POST请求往往是带body!

HTTP请求的基本格式 :
1) 首行        2) 请求头        3) 空行        4) 正文 

响应格式 

        🥥与请求所对应,基本格式非常相似,也分为四个部分

        1) 首行 : [版本号] + [状态码] + [状态码解释]

        200 是最常见的状态码,表示成功。

        2) 响应头(header):请求的属性,冒号加空格分割的键值对;每组属性之间使用\n分隔;遇到空行表示header部分结束。

        🍍有的键值对出现在请求中,有的出现在响应中,有的则都会出现。

        3) 空行

        4) 正文(body):对于响应来说,正文通常是HTML/CSS/JS/JSON/图片/音频/字体...... 体现了服务器给浏览器返回的数据。

HTTP响应的基本格式:
1) 首行        2) 响应头        3) 空行        4) 正文 

协议格式总结 

问题:

        为什么HTTP报文中要存在"空行"?

        因为HTTP协议并没有规定报头部分的键值对有多少个。空行就相当于是"报头的结束标记",或者是"报头和正文之间的分隔符"。 HTTP在传输层依赖TCP协议,TCP是面向字节流的。如果没有这个空行,就会出现"粘包问题"。 

        关于粘包问题,可以浏览这篇博客 :TCP(下):三次握手四次挥手 动态控制_tcp 挥手动作-CSDN博客

        以上就是本系列博客(上)篇的全部内容。与URL、method、Cookie、状态码、构造请求等相关内容,将会在后续博客中展开,还请多多支持。

不只是请求和响应:使用Fiddler抓包URL和Method全指南(中)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Chunfeng6yugan/article/details/144024618?spm=1001.2014.3001.5501


希望这篇博客能为你理解HTTP协议以及使用Fiddler抓包提供一些帮助

如有不足之处请多多指出

我是高耳机


原文地址:https://blog.csdn.net/Chunfeng6yugan/article/details/144005872

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!