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

news2024/12/28 14:38:50

欢迎浏览高耳机的博客

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

感谢三连支持!  

        🙉你是一名侦探 ! 正在追踪一条条数字化的线索。从简单的网页浏览到复杂的在线交易,每一次点击和滑动背后都隐藏着复杂的数据交换。每一个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抓包提供一些帮助

如有不足之处请多多指出

我是高耳机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码纪元——源神重塑无序

简介 源神,真名为张晨斌,原为代码宇宙创世四神之一。代码宇宙在创造之初时空无一物,只有复杂且繁琐的底层代码,智慧神灵每日都困在诸如脚本等复杂的底层框架之中,源神面对这种局面非常不满意,于是源神通过大…

Docker pull镜像拉取失败

因为一些原因,很多镜像仓库拉取镜像失败,所以需要更换不同的镜像,这是2024/11/25测试可用的仓库。 标题1、 更换镜像仓库的地址,编辑daemon.json文件 vi /etc/docker/daemon.json标题2、然后将下面的镜像源放进去或替换掉都可以…

Vue3+SpringBoot3+Sa-Token+Redis+mysql8通用权限系统

sa-token支持分布式token 前后端代码,地球号: bright12389

【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作

1.实验目的 熟悉了解掌握SQL Server软件的基本操作与使用方法,以及通过理论课学习与实验参考书的帮助,熟练掌握使用T-SQL语句和交互式方法对数据表进行插入数据、修改数据、删除数据等等的操作;作为后续实验的基础,根据实验要求重…

AI助力PPT创作:从手动到智能,打造高效演示

在今天这个信息化时代,演示文稿已经成为我们表达观点、传递信息的重要工具。不论是企业汇报、学术交流,还是个人创作,PPT(PowerPoint)都在日常生活中扮演着不可或缺的角色。创建一份高质量的PPT往往需要花费大量时间与…

【JavaEE】Servlet:表白墙

文章目录 一、前端二、前置知识三、代码1、后端2、前端3、总结 四、存入数据库1、引入 mysql 的依赖&#xff0c;mysql 驱动包2、创建数据库数据表3、调整上述后端代码3.1 封装数据库操作&#xff0c;和数据库建立连接3.2 调整后端代码 一、前端 <!DOCTYPE html> <ht…

python自定义枚举类的试验与思考

一 现象 在python的3.4版本之前&#xff0c;是没有枚举类的。 所以&#xff0c;我自定义实现了一个enum类&#xff0c;目录如下&#xff1a; 代码如下&#xff1a; class enum(set):def __getattr__(self, name):if name in self:return nameraise AttributeErrorif __name_…

算法编程题-寻找最近的回文数

算法编程题-寻找最近的回文数 原题描述思路简述代码实现复杂度分析参考 摘要&#xff1a;本文将对LeetCode 原题 564 寻找最近的回文数进行讲解&#xff0c;并且给出golang语言的实现&#xff0c;该实现通过了所有测试用例且执行用时超过100%的提交&#xff0c;最后给出相关的复…

[Redis#5] hash | 命令 | 内部编码 | 应用 | cache: string, json, hash对比

目录 1 命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSET NX HINCRBY HINCRBYFLOAT 2 命令小结 3 内部编码 4 使用场景 5 缓存方式对比 1. 原生字符串类型 2. 序列化字符串类型&#xff0c;例如 JSON 格式 3. 哈希类型 几乎所有的主流编程…

系统设计-高性能

一、CDN 1、什么是CDN CDN 就是将静态资源分发到多个不同的地方以实现就近访问&#xff0c;进而加快静态资源的访问速度&#xff0c;减轻服务器以及带宽的负担.(可看作是一层特殊缓存服务&#xff0c;用来处理静态资源的请求) 2、CDN工作原理 静态资源是如何被缓存到 CDN 节…

单片机知识总结(完整)

1、单片机概述 1.1. 单片机的定义与分类 定义&#xff1a; 单片机&#xff08;Microcontroller Unit&#xff0c;简称MCU&#xff09;是一种将微处理器、存储器&#xff08;包括程序存储器和数据存储器&#xff09;、输入/输出接口和其他必要的功能模块集成在单个芯片上的微型…

代码管理之Gitlab

文章目录 Git基础概述场景本地修改未提交&#xff0c;拉取远程代码修改提交本地&#xff0c;远程已有新提交 GitIDEA引入Git拉取仓库代码最后位置 Git基础 概述 workspace 工作区&#xff1a;本地电脑上看到的目录&#xff1b; repository 本地仓库&#xff1a;就是工作区中隐…

基于Java Springboot古风生活体验交流网站

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

智慧社区管理系统平台提升物业运营效率与用户体验

内容概要 智慧社区管理系统平台是一个集成了多项功能的综合性解决方案&#xff0c;旨在通过先进的技术手段提升物业管理的效率和居民的生活质量。该平台不仅关注物业运营的各个方面&#xff0c;还强调用户体验的重要性。随着科技的发展&#xff0c;社区管理方式正发生着翻天覆…

Docker--通过Docker容器创建一个Web服务器

Web服务器 Web服务器&#xff0c;一般指网站服务器&#xff0c;是驻留于因特网上某种类型计算机的程序。 Web服务器可以向浏览器等Web客户端提供文档&#xff0c;也可以放置网站文件以供全世界浏览&#xff0c;或放置数据文件以供全世界下载。 Web服务器的主要功能是提供网上…

健身房小程序服务渠道开展

健身不单单是锻炼身体、保持身材&#xff0c;也是一种社交方式&#xff0c;城市里门店不少&#xff0c;每家都有一定流量和老客&#xff0c;但仅靠传统线下拉客/自然流量前往和线上朋友圈、短视频发硬广等方式还不够。 商家需要找到更多潜在目标客户&#xff0c;而消费者也对门…

利用Java爬虫获得1688商品分类:技术解析与代码示例

在电商领域&#xff0c;了解商品分类对于市场分析和产品策略至关重要。1688作为中国领先的B2B电商平台&#xff0c;其商品分类数据对于商家来说具有极高的价值。本文将详细介绍如何使用Java编写爬虫程序&#xff0c;以合法合规的方式获取1688商品分类信息&#xff0c;并提供代码…

QT:QListView实现table自定义代理

介绍 QListVIew有两种切换形式&#xff0c;QListView::IconMode和QListView::ListMode&#xff0c;通过setViewMode()进行设置切换。因为QListView可以像QTreeView一样显示树形结构&#xff0c;也可以分成多列。这次目标是将ListView的ListMode形态显示为table。使用代理&…

YOLOv10改进,YOLOv10添加SE注意力机制,二次C2f结构

摘要 理论介绍 SE 注意力机制是一种提升卷积神经网络(CNN)性能的模块,SE更关注重要的特征图,增强了网络的表现,同时仅增加了较少的参数。SE 机制包含两个主要步骤: Squeeze (压缩):对所有特征图进行全局平均池化,生成一个通道描述符。Excitation (激励):将通道描述符…

详解Servlet的使用

目录 Servlet 定义 动态页面 vs 静态页面 主要功能 Servlet的使用 创建Maven项目 引入依赖 创建目录 编写代码 打war包 部署程序 验证程序 Smart Tomcat 安装Smart Tomcat 配置Smart Tomcat插件 启动Tomcat 访问页面 路径对应关系 Servlet运行原理 Tomcat的…