初探HTTP协议和Fiddler抓包原理

简介: 协议是指双方进行通信所必须共同遵守的约定。超文本传输协议(HyperText Transfer Protocol, HTTP)是互联网上应用最广泛的一种网络协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

Web浏览器和Web服务器之间是通过HTTP协议相互通信的。HTTP协议用途非常广泛,是任何IT从业人员都需要掌握 ,作为测试人员,掌握HTTP协议显得尤为重要。



1

什么是HTTP协议


协议是指双方进行通信所必须共同遵守的约定。超文本传输协议(HyperText Transfer Protocol, HTTP)是互联网上应用最广泛的一种网络协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。


2

HTTP协议工作原理


我们平常上网的时候,在浏览器的地址栏输入url地址,然后就可以想看到相关的内容,这是什么原理呢?


微信图片_20220113222855.jpg


当我们输入url后,浏览器就给web服务器发送了一个http请求,服务器接收到http请求后进行处理,生成相应的返回结果,然后发送给浏览器,浏览器解析http相应中的html,然后我们就在浏览器上看到了相关页面。


这里可以引申出一个非常常见的面试题:当我们在浏览器url地址栏输入一个地址后,会发生一些什么事情?

-- 当然,这个肯定不止发送一个请求然后拿到响应结果这么简单,就好比考试时候的应用题,你回答这么一句简单的话,肯定拿不到满分,具体如何去回答,等后续深入学习之后,相信屏幕前的你就会知道答案了。


在通过上面一张图了解了http协议的工作原理后,那么如何去查看http请求和响应的数据包(报文)的具体内容呢?这里可以借助一个工具,叫Fiddler。



3

Fiddler的介绍


Fiddler是一款非常强大web调试工具,能记录客户端和服务器之间的http和https请求的信息,并且可以设置断点,修改输入输出数据等,是一个非常好用的抓包工具。使用C#语言开发,能使用.NET进行扩展。


Fiddler分为以下几个版本:

  • Fiddler2:基于.Net Framework2.0框架开发的,适用于比较老的操作系统,比如XP系统,目前基本被淘汰。
  • Fiddler4:基于.Net Framework4.0框架开发,使用win7、win10等win系统
  • Fiddler Everywhere:支持macOS, Windows, and Linux,功能正在逐步完善中,日常抓包需求可以满足。

官网下载地址:https://www.telerik.com/fiddler  (官网下载慢的,可复制下载链接贴到迅雷里面下载,亲测有效)


Fiddler的基本界面


微信图片_20220113222906.png


Fiddler主界面包括以下几个区域:

(1)主菜单栏:菜单中几乎可以启动所有的Fiddler功能。

(2)工具栏:提供了很多常见的命令和快捷操作等。

(3)Web Sessions列表(会话列表):显示捕捉到的每个Session的简短信息。平常都需要在这里选择一个或者多个Session后再进行操作。

(4)功能面板:这里有很多选项卡,提供了很多功能。我们常用的是Inspectors选项卡。

(5)QuickExec:命令行工具,可以输入简单的命令,例如输入cls可以清空Web Sessions。

(6)状态栏:上面显示了Fiddler的一些配置信息,以及左下角是否开启抓包的状态显示。


Inspectors选项卡

Inspectors选项卡下可以查看HTTP请求和HTTP响应的报文结构。其中Raw选项卡可以查看完整的消息,Headers选项卡只查看消息中的Header。


微信图片_20220113222909.png



Web Sessions列表

Fiddler窗口的左边是Web Sessions列表,是Fiddler中最重要的部分,显示了每个Session的摘要信息。Fiddler中的大部分操作都需要在Web Sessions列表中选择一个或者多个Session,再进行其他操作。Web Sessions列表中的表头可以排序。选中某个Sessions可以进行相关内容复制、备注、请求重发等操作。

一个Session包含了一个HTTP请求和一个HTTP响应,Web Sessions列表栏中包含的信息如下:

  • #:这是Fiddler生成的ID(最好是按顺序排列)。
  • Result:响应的状态码。
  • Protocol:使用的协议HTTP或者HTTPS。
  • Host:服务器的主机名和端口号。
  • URL:URL的路径。
  • Body:HTTP响应中包含的字节数。
  • Caching:跟缓存相关的字段的值。
  • Content-Type:响应中Content-Type的值。
  • Process:对应本地Windows的进程。
  • Comments: 备注信息


Fiddler设置开始捕获和停止捕获

一般把捕获http数据包的过程称之为抓包。

方法一、在Fiddler中单击File->Capture Traffic(快捷键是F12)来开始抓包或者停止抓包。


微信图片_20220113222911.png


方法二、单击Fiddler左下角的“Capturing”按钮来开始抓包或者停止抓包。


微信图片_20220113222914.png


4

Fiddler抓包的原理


Fiddler的本质是一个代理服务器,默认的工作端口是8888。


微信图片_20220113222916.png


Web代理服务器是网络的中间实体,代理位于Web客户端和Web服务器之间,扮演着中间人的角色:


微信图片_20220113222918.png


Web代理具有以下功能。

  • 共享网络。可以满足局域网大量用户同时共享上网的需求。
  • 提高了访问速度。因为大部分的代理服务器都有缓冲功能,可以直接读取。
  • 突破了访问限制。当访问权限受到限制时,可以使用有权限的代理服务器。比如工作中常用的堡垒机,跳板机等。
  • 隐藏身份。内部网的用户要对外发布信息,就需要使用代理服务器的反向代理功能。这样就不会影响内部网络的安全性能,起到隐藏身份的目的。



5

Fiddler的工作原理


Fiddler是以代理web服务器的形式工作的,当我们开启fiddler后,会偷偷的把Internet选项中的代理修改为127.0.0.1,端口:8888(可自行在fiddler的Tools-Options菜单下进行更改),关掉Fiddler后,会自动取消代理。



微信图片_20220113222920.png


注意事项:

  • Fiddler开启后,如果非正常退出,可能会导致电脑代理关闭失败,可重启Fiddler试试。
  • 如果电脑上安装了其他的代理软件,会影响到抓包。比如,有时候要访问谷歌,会用到VPN或者在谷歌浏览器上安装谷歌助手的插件 ,插件开启后,其工作原理也是开启了一个代理服务在工作,会影响到抓包。


相关文章
|
8月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
10月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
874 2
|
10月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
656 0
|
10月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
465 0
|
10月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
773 0
|
11月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
784 1
|
10月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
1062 0
|
11月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
745 0
|
11月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
984 0

热门文章

最新文章