【JavaSE-网络部分10】网络原理-HTTP协议学习的前置知识fiddler抓包工具的使用

🎯 你正在阅读「网络原理续命手册」系列文章 🎯

🔥 弹简特 个人主页

❄️ 个人专栏直通车:

靠热爱去书写自己,靠勇敢去书写生活!


🌟 博主简介:


文章目录:


一、前言

上一期,我们简要介绍了数据链路层的相关知识,并顺带了解了应用层的 DNS 协议。从本期起,我们将正式走进应用层的学习。


对于 Java 学习者而言,HTTP 协议是本章的重中之重。无论是 Spring Boot 搭建后端接口,还是前后端之间的数据交互,我们几乎每天都在与 HTTP 打交道------可以说,后端开发的服务器,本质上就是一个 HTTP 服务器。不过,在深入讲解 HTTP 报文格式之前,我们需要先学会"看清楚"一次 HTTP 通信的全过程。因此,本期将先带你安装并上手 Fiddler 抓包工具,为下一期详解 HTTP 协议打好基础。

我们应用层有一个很大的特点,就是我们程序员可以自定义应用层协议。那除了自定义之外,我们业界呢还有一些大佬设计好了现成的协议,让我们直接使用。

HTTP协议呢是目前使用最广泛的应用层协议了,那对于JAVA学习者来说,咱们后端开发的服务器大概率就是HTTP服务器。


咱们现在HTTP已经到了3.0,那目前呢我们这里介绍的仍然是HTTP1.0,因为它呢也是使用的最多的。


二、下载HTTP抓包工具fiddler

我们学习HTTP协议,那我们重点去学习HTTP的一个报文格式,而学习HTTP的报文格式我们需要搭配一个抓包工具来辅助观察和理解HTTP的通信细节。

抓包工具就是把你机器上传递的网络数据包获取到,从而显示出来,我们通过这种抓包工具来学习就会更加直观。

我们这里使用的是fiddler的抓包工具来针对HTTP进行抓包,它是专注于抓HTTP和HTTPS。

下载地址:fiddler下载地址

更多fiddler的使用细节可参考博客👉一文通关Fiddler抓包工具


选择经典版本,他是社区免费版的


点击下载


填一下自己的邮件


然后就选择安装路径,并一路next即可。


第一次打开fiddler会出现一下弹框

这是 Fiddler Classic 首次启动时的常见提示,主要用于配置 Windows 系统中的 AppContainer 网络隔离,以便捕获 Microsoft Edge 浏览器 和 UWP(沉浸式)应用 的网络流量。

处理方案:

方案一:仅关闭警告(不配置捕获)

如果你不需要捕获 Edge 或 UWP 应用的流量,可以:

直接点击 "Cancel" 按钮,这样警告窗口将不再弹出。

但如果你后续需要捕获这些流量,仍需通过 WinConfig 手动配置。

方案二:启用捕获

如果你想捕获 Edge 浏览器或 Windows 应用商店应用的流量,请按以下步骤操作:

  1. 点击 Fiddler 工具栏上的 "WinConfig" 按钮(图标类似齿轮 + Windows 标志)。
  2. 在弹出的窗口中,会列出所有受 AppContainer 隔离影响的应用(如 Microsoft Edge、Microsoft Store 应用等)。
  3. 勾选你需要捕获的应用(例如 "Microsoft Edge")。
  4. 点击 "Save Changes" 保存设置。
  5. 关闭提示窗口(点击"Yes"或"No"均可)。

那么点击之后左侧显示的就是请求,如果需要删除所有的请求就可以ctrl+a,然后再delete键


那么你第一次使用fiddler的时候默认抓的是HTTP,而不会有HTTPS的请求,所以如果需要抓HTTPS的话就需要配置:

Tools【工具栏】---》Options【选项】

然后点击HTTPS,再将所有框都打上√,最后点击OK

点击OK会弹出一个框,问你是否安装根证书,一定要选择 才可以使用,那么这个根证书有什么作用,具体我们后续谈HTTPS的时候会谈到。


如果就算配置了https还是抓不了,那么很可能就是fiddler和电脑上的代理软件冲突了,此时你需要将你电脑上的代理软件关闭掉。

三、代理模式

那么说到这,什么是代理呢?为什么会冲突呢?

代理那么有的是单独的软件,有的是浏览器的插件,而我们的fiddler它相当于一个代理,所以呢如果你电脑上有其他代理软件的话它就会冲突。

代理是计算机中一个典型的术语,他其实就是找个人帮你干活,这个帮你干活的人就是代理,举个例子:

小明想去超市买包烟,但是呢他不想去,于是他把钱给了他儿子,让他儿子去,超市的老板又不想看店,于是呢就让他的儿子来看店。

代理分为正向代理和反向代理:

  • 正向代理就是这个代理帮客户端干活。
  • 反向代理就是这个代理帮服务器干活。

对于小明的儿子就是正向代理,对于老板的儿子就是反向代理。


此处呢fiddler也相当于一个正向代理。

当你运行fiddler这个软件之后,你电脑上所有的网络通信都是先发给这个抓包工具,然后呢抓包程序再把数据发给服务器。


那么配置完毕之后此时我们就可以抓到HTTPS的请求了【使用谷歌浏览器】


四、fiddler左侧窗口的介绍

左侧是请求

1)蓝色且有包大小显示的是当前的请求,同时表示响应的数据格式是html


2)红色表示报错


3)绿色代表得到了一个JS


4)灰色表示这个响应的数据已经被保存了


5)紫色代表得到了一个CSS


6)黑色一般代表得到了一个JSON


那这里边会有一个问题啊,如果你的那个fiddler里面没有出现所谓的蓝色、紫色等等这些,那么是因为我们网络的访问速度是比访问硬盘更慢的,那我们补充一点,我们的速度是CPU>内存>硬盘>网络。那么浏览器为了提高用户体验,提高网页加载的效率,它就引入了一个缓存。我们访问某个网站打开过一次之后呢,就会把HTML依赖的css/js/图片/字体等资源保存到本地硬盘上,下次再访问就不必访问网络了,直接从本机硬盘来读取,那么一旦对方服务器更新了css、js、图片、字体,你从本地缓存读到的就是旧的数据,所以此时我们就需要通过强制刷新忽略本地缓存,强制从对方服务器加载数据。那强制刷新的一个快捷键是ctrl加F5


五、fiddler右侧窗口的介绍

我们说左侧窗口是请求,那么双击请求,会在右侧出现上下两个窗口,上边是请求request,下边是响应response。


想要看到请求的原始数据:上层标签页选择Inspectors【检验员】

然后再选择Raw[译为原始],此时就可以看到请求的原始数据了,代表这里的字符串就是一个完整的HTTP请求数据包,再进一步说,如果把这个字符串拷贝下来,通过tcp socket写进去,此时呢就相当于发送一个HTTP请求。所谓的HTTP协议就是按照这样特定格式构造的一个字符串,那我们客户端呢把这个字符串写入到tcp socket中,服务器就可以通过tcp socket把它给读出来,这样的字符串呢就是HTTP请求;那服务器还可以构造另一个特定格式的字符串,也写入到tcp socket中,客户端呢也通过tcp socket把这个字符串读出来,这样字符串就是HTTP的响应。


那么同理如果想要看到响应的原始数据,我们就同样点击Raw,只不过注意:我们的响应数据是经常压缩为二进制格式的目的是为了节省带宽


如果想查看解压缩后的就点击一个按钮:Response body is encode[译为响应是压缩过的],Click to decode[译为点击进行解压]

点击之后此时我们的响应正文【响应体就不是乱码了】


点击View in Notepad可以使用记事本打开我们的请求或响应


至此,我们的fiddler的使用介绍就此结束了。最后补充,如果想要放大fiddler的响应和请求的字体,那么就按住Ctrl键+鼠标滚轮滚动。


到这里,我们就介绍了fiddler抓包工具的使用,那么下一期我们就详细来谈HTTP协议了。