1.什么是HTTP协议?

HTTP全称为“超文本传输协议”,是一种应用非常广泛的应用层协议

我们平常打开一个网站,就是通过HTTP协议来传输数据

我们在浏览器中输入一个搜狗搜索时的网址(URL),浏览器就就会给搜狗的服务器发送一个HTTP请求,搜狗的服务器就会返回一个HTTP响应。

HTTP是一个文本格式的协议,可以通过Fiddler抓包,分析HTTP请求和响应的细节。

2.Fiddler的使用

当我们打开Fiddle的时候,可以看到在界面的左侧FIddler抓到了许多HTTP

先选中我们需要查看HTTP请求/响应,可以选中某个请求查看详情

在界面的右上角我们需要点击Inspectors和Raw,可以看到详细的数据格式

右侧上方显示了HTTP请求的报文内容

右侧下方显示了HTTP响应的报文内容

其中的详细数据,可以通过右下角的View in Notepad通过记事本打开查看。

抓包工具的原理

Fiddler相当于一个代理,浏览器访问sogou.com时,就会把HTTP请求先发给Fiddler,Fiddler再把请求转发给sogou的服务器。当sogou服务器返回数据时,Fiddler拿到返回数据,再把数据交给浏览器。Fiddler对于浏览器和sogou服务器之间交互的数据细节是非常清楚的。

不同颜色的会话(Session)条目对应的含义:

1. 深紫色
表示HTTPS加密请求(通过HTTPS协议传输的数据)。Fiddler默认会解密HTTPS流量,所以深紫色条目本质是解密后的HTTPS会话,方便查看加密内容。
2. 亮蓝色
通常对应HTTP 304状态码(Not Modified),表示客户端请求的资源未修改,服务器直接返回缓存信息,无需重新传输资源(用于缓存优化)。
3. 红色
一般表示HTTP错误响应,比如4xx(客户端错误,如404 Not Found)或5xx(服务器错误,如500 Internal Server Error)状态码,方便快速定位请求失败的会话。
4. 绿色
对应HTTP 200状态码(OK)且响应体为图片(如JPG、PNG等),用于区分普通文本响应和图片资源。
5. 黄色
通常表示HTTP 404状态码(Not Found),即请求的资源不存在,是红色错误的一种细分(部分版本中404单独用黄色标识)。
6. 灰色
可能是已被过滤的会话(如符合过滤规则的请求),或非HTTP/HTTPS协议的流量(如DNS、FTP等,Fiddler默认主要显示HTTP/HTTPS)。
7. 橙色
有时表示WebSocket协议的会话(实时双向通信),或重定向类响应(如3xx状态码,如301永久重定向、302临时重定向)。

抓包结果

HTTP请求

GET https://www.sogou.com/ HTTP/1.1 Host: www.sogou.com Connection: keep-alive sec-ch-ua: "Microsoft Edge";v="147", "Not.A/Brand";v="8", "Chromium";v="147" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Windows" Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Sec-Fetch-Site: cross-site Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Referer: https://cn.bing.com/ Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Cookie: SUV=00D00D0076D4C69F695B8BF538C21281; ABTEST=7|1777271642|v17; SUID=A6D8D476E452A20B0000000069EF035A; cuid=AAETC0OEWgAAAAuiUm9xGwIANgg=; SNUID=9DE4E84D3C3D6C576031F35C3C136B5E; IPLOC=CN3100

首行:GET https://www.sogou.com/ HTTP/1.1

方法+URL+版本

Header:请求的属性,冒号分割键值对;每组属性之间使用\n分隔,遇到空行表示Header部分结束。

Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来表示Body的长度。

HTTP响应

首行:版本号+状态码+状态码解释

Header:请求的属性,冒号分割键值对;每组属性之间使用\n分隔,遇到空行表示Header部分结束。

Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来表示Body的长度。如果服务器返回了一个HTML页面,那么HTML页面内容就是在Body中。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐