【网络原理】——HTTP协议、fiddler抓包

 8e19eee2be5648b78d93fbff2488137b.png

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:认识HTTP

1:超文本传输

2:发展历史

3:HTML

4:交互过程

5:报文格式

6:HTTP请求格式

7:HTTP的响应格式

二:fiddler

1:介绍

2:设置

三:URL

1:认识URL

2:URL完整结构

3:URLencode

四:HTTP首行方法

1:什么是方法

2:GET

3:POST

(1)POST实践

(2)base64编码

4:POST和GET区别(重点)

5:误区


一:认识HTTP

1:超文本传输

HTTP协议是一种超文本传输协议

文本:就是我们平时说的字符串,可以用utf8/gbk这种码表找到合法的字符

超文本:不仅包含字符串,也可以是一些图片,格式,链接之类的

富文本:比超文本还NB,就是可以设置一些行间距,字体啥的(word文档)

2:发展历史

HTTP主要应用场景:网站,浏览器/客户端和服务器之间传输数据

HTTP2.0和3.0引入了很多特性:①提高传输效率②提高传输安全性

但是1.1版本还是主流版本(IPv6还没有全面覆盖)

3.0版本之前,传输层的协议是基于TCP;

3.0版本之后是基于UDP,这里实现的机制可以确保可靠性,也不拍数据量非常大的包

3:HTML

HTML是一种“编程语言”但是跟C++和Java差别还是比较大的,前者描述的是“内容”,后者表达的是“逻辑”。

我们说的“网页”就是通过HTML来构建的

HTML和CSS、JavaScript合称为“前端开发三剑客”

4:交互过程

典型的一问一答

打开一个网站,浏览器和服务器之间进行的HTTP交互不是只有一次,而是通常有很多次,第一次交互是拿到这个页面的html

html还会依赖其它的css和js等,heml被浏览器加载之后,又会触发一些其他的http请求............

5:报文格式

这里我们要用到一个工具——fiddler(先看第二部分fiddler安装)

为了节省带宽,以上看到的是被压缩后的数据(一般都是压缩响应,请求不太需要)

下面点击raw可以看到HTTP请求的原始数据

6:HTTP请求格式

(1)首行

包含:方法,URL(后面会讲到),版本号。共计三个部分,用空格分开

(2)请求头

从第二行开始一直到后面都是请求头(类似TCP报头,这里是以文本的形式组织的),报头中包含了很多键值对,每对键值占一行,键和值之间用:分割

(3)空行

请求头最下面会有一个空行,这个空行表示结束标记

(4)正文

也叫body,HTTP的载荷部分

7:HTTP的响应格式

(1)首行

包含:版本号,状态码,状态码的描述(彼此间用空格分割)

(2)响应头

键值对(同请求)

(3)空行

(4)正文(body)

响应的载荷是HTML

二:fiddler

1:介绍

抓包工具——本质上是一个代理程序,能够获取到网络上传输的数据,并显示出来。

注:这里的代理分为:正向代理(客户端的代言人)和反向代理(服务器的代言人)

例如:wireshark——非常齐全,可以抓取各种协议的数据包(包括但不限于:TCP、UDP、IP、以太网),使用比较麻烦

这里我们介绍的fiddler抓包工具(可以自己找资源下载哈),是专注于抓取HTTP协议的数据包。

这里是下载网站——Web Debugging Proxy and Troubleshooting Tools|Fiddler

2:设置

不小心点否的铁铁,只能卸载重新下载一遍了

你的系统中有任何一个程序使用了HTTP/HTTPS此时就都能被fiddler给获取到

三:URL

1:认识URL

URL——唯一资源定位符。描述一个网络上的资源位置

URI——唯一资源标识符(范围更大)

搜索fiddler

查询字符串也是键值对格式,使用&分割键值对;使用=分割键值

2:URL完整结构

(1)登录信息:现在不常用这种写法,都是“单独的登录界面”完成身份验证

(2)服务器地址/端口号:域名也可以是ip地址,如果没有端口号,浏览器会自动分配给你一个端口号(http 80 ;https  443)

(3)带层次的文件路径:可能会对应一个真实的硬盘文件,也可能对应一个虚拟的文件(后面会有例子)

(4)查询字符串:针对请求的内容做的补充说明

总结概括:通过ip知道服务器在哪,通过端口号知道程序是哪个,通过路径知道访问的是哪个资源

(5)片段标识符:用来表示当前页面的某个部分,通过不同的片段标识可以完成当前页面内的跳转

3:URLencode

在URL中本身有些特殊符号具有特定的含义,所以在query String里自定义键值对的时候如果包含同样的符号,就要对上述符号进行“转义”。

对于汉字也是要进行“转义”的,但是如果汉字的“utf8/gbk”等编码值中,某个字节恰好跟某个符号的ASCII码值相同就麻烦了,所以我们就用“%ASCII码”的形式进行表示了,例如

再举个例子搜索“蛋糕”两个字

在实际开发中,当要构造一个URL,尤其是URL中的query string 中要包含中文的时候,务必要进行编码

四:HTTP首行方法

1:什么是方法

把上面的图借用一下,现在我们展开讲方法

方法就是描述这个请求,想干啥

看着这么多方法,其实使用占比:GET占80%场景,POST占10%,剩余占10%可以这么理解

这些语义是“标准文档作者”推荐这么定义的,但实际定义权还是在咱们程序员自己手里

2:GET

GET:从服务器哪一个东西过来(读操作)。非常常见

3:POST

(1)POST实践

POST:网服务器放一个东西过去(写操作)

两个典型的使用场景——①登录②上传

我们打开一个登录界面(比如qq邮箱),然后用fiddler抓包

post请求中最后空行下还有东西就是载荷(正文,body),可以放任意前端和后端约定好的格式

(2)base64编码

这里介绍一个编码,,它的编码规则有标准版(无法作为加密方案),自定义版(可以作为一种简单的加密手段)

base64编码使用四个字节,对原始数据中的三个字节进行重新编码,目的是去除原始数据中的二进制内容(因为有些场合只能存储文本数据)

4:POST和GET区别(重点)

①两者本质上没有区别

使用GET的场景POST也能使用,反之如此,这里取决于你的代码是怎么写的(尤其是服务器和客户端都是自己实现的情况下)

②使用习惯上

GET习惯把数据放到URL的query string,POST习惯放到body中

反过来的话,有的服务器可能不支持GET把数据放到body中

③语义

标准文档中,GET是用来获取数据的,POST的语义是给服务器传输数据的

④幂等性

标准文档中,建议GET请求实现成幂等的,POST无要求

每次输入的内容一定,输出的结果也一定叫“幂等”

每次输入的内容一定,输出的结果不一定不叫“幂等”

⑤GET请求可以被浏览器收藏夹收藏,POST不行

5:误区

误区①:POST比GET安全

说法:登陆的时候,如果使用GET,密码就会显示在URL上,所以POST更安全

解释:即使是使用了POST,如果被抓包了,密码也会暴露

安全的前提在于加密!!!

误区②:GET传输的数据量小(传输的数据量有上限),POST传输的数据量更大

老版本的IE浏览器在实现的时候,对URL有长度限制。实际上HTTP标准文档中说了,对于GET和URL的长度不做限制,目前比较长的URL也是常见的

误区③:GET只能携带文本数据,POST可以携带二进制数据

URL通过query string来携带数据,query string只能包含文本,但是这里可以对二进制数据进行urlencode转换为文本数据,到了服务器在urlencode还原为二进制数据

POST请求中可以直接携带二进制数据,但是也有对二进制数据进行urlencode/base64转码的情况

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Axure树形菜单展开与折叠

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:Axure树形菜单展开与折叠 主要内容:树形菜单制作——层级关系——隐藏与显示——值的变化——多层交互 应用场景:关系树、菜…

R语言机器学习算法实战系列(十)自适应提升分类算法 (Adaptive Boosting)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总…

断点续传技术是什么?大型文件传输的新模式!

随着科技的不断进步,文件传输已成为我们日常生活和工作中不可或缺的一部分。然而,传输大型文件时常常会遇到网络不稳定、传输中断等问题,导致传输失败或者重新传输。为解决这一问题,断点续传技术应运而生。 一、断点续传技术是什么…

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络 1. Scope4. 非地面网络背景介绍4.1 5G中的非地面网络4.2 非地面网络在5G中的用例4.3 卫星和空中接入网的架构4.4 卫星和空中接入网终端的特点4.5 空气/星载飞行器特性4.6 NTN的覆盖模式4.7 NTN网络架构选项4.8 频谱 5. 非地面网络应用场景5.1 应用场景概览5.2 属性介…

STM32通信协议-I2C

目录 一,IC2的协议规则 I2C总线是PHILIPS公司开发的两线式串行总线,I2C总线主要解决了单片机一对多通信的问题 两根通信线:SCL,SDA,同步,半双工通信,支持数据应答机制,支持总线挂载多设备。 …

2024ideaUI切换和svn与git的切换,svn的安装和配置,idea集成svn ,2024-10-18日

2024-10-18日 2024的UI实在很不舒服,隐藏了很多按键; 第一步: 视图 -》 外观 -》 工具栏选出来; 结果出来: 运行的按键和设置的按钮 第二步 点击设置的按钮,选择最后一个,重启就行 结果 舒服&…

网站漏扫:守护网络安全的关键防线

网站漏洞扫描,简称漏扫,是一种针对网站进行漏洞检测的安全服务。网站漏洞扫描在网络安全中占据着至关重要的地位。 网站漏扫在及时发现和修复漏洞方面发挥着关键作用 通过对网站和系统的全面扫描,能够快速识别出各种潜在的漏洞,…

网络安全领域推荐证书介绍及备考指南

在网络安全领域,拥有专业认证不仅可以证明个人的专业能力,还能帮助在实际工作中应用先进的技术和知识。以下是几种热门的网络安全证书介绍及备考指南。 1. OSCP (Offensive Security Certified Professional) 证书简介 OSCP是针对渗透测试领域的入门级…

<项目代码>YOLOv8路面垃圾识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

实现简道云与企业微信的自动化数据集成

简道云入职新增企微成员西乡公司 在企业信息化管理中,数据的高效集成和实时同步是提升业务效率的重要环节。本文将分享一个具体的系统对接集成案例:如何通过轻易云数据集成平台,将简道云的数据无缝集成到企业微信,实现西乡公司新…

汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭

故障现象  一辆2023款零跑C01纯电车,累计行驶里程约为2万km,车主进厂反映,后备厢盖无法电动打开和关闭。 故障诊断  接车后试车,操作后备厢盖外侧、驾驶人侧及遥控钥匙上的后备厢盖开启按钮,可以听到后备厢盖解锁的…

Golang | Leetcode Golang题解之第500题键盘行

题目: 题解: func findWords(words []string) (ans []string) {const rowIdx "12210111011122000010020202" next:for _, word : range words {idx : rowIdx[unicode.ToLower(rune(word[0]))-a]for _, ch : range word[1:] {if rowIdx[unico…

精益思维在新能源汽车研发中的应用体现

近年来,新能源汽车作为绿色出行的重要载体,其研发与生产模式正经历着深刻的变革。精益思维,这一源自制造业的管理理念,正逐步渗透并深刻影响着新能源汽车的研发过程,不仅提升了产品质量与生产效率,还促进了…

C++ -stack、queue

博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ 文章目录 💡 简介1. 栈2. 队列3. 容器适配器的特点4. 适配器的本质5. 小结 💡 简单实现1. 栈的实现2. 队列的实现 💡 简单使用1. 用队列实现…

什么是机器人流量?如何识别和预防有害机器人流量?

机器人流量是指由自动软件程序(或机器人)而非人类用户生成的互联网流量。机器人可以执行各种任务,包括有益的和恶意的,而且速度比人类快得多。 据估计,大约 30% 的互联网流量来自旨在窃取内容、破坏服务和开展其他恶意…

手机柔性屏全贴合视觉应用

在高科技日新月异的今天,手机柔性显示屏作为智能手机市场的新宠,以其独特的可弯曲、轻薄及高耐用性特性引领着行业潮流。然而,在利用贴合机加工这些先进显示屏的过程中,仍面临着诸多技术挑战。其中,高精度对位、应力控…

stm32的f103---esp8266模块(一)

1 esp8266作为设备  esp-01s 1.1入网设置 设置工作模式 AT_CWMODE1 //1. 是station(设备)模式2.是AP(路由器)模式3.是双模 OK 以设备模式接入…

[手机Linux PostmarketOS]七, Linux使用selenium爬虫

一,selenium安装 # 用pip 安装 selenium pip3 install selenium --break-system-packages 二,安装浏览器Chrome Alpine Linux 环境中没有google Chrome, 使用 Chromium 浏览器作为 Chrome 的替代品,Chromium 是 Chrome 的开源版本…

Java:抽象类和接口

一.抽象类 1.抽象类概念和语法 ⨀概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 ⨀语…

stm32F103 实现呼吸灯效果

目录 硬件连接 软件实现步骤 初始化系统时钟。 配置 GPIO 引脚。 配置定时器以生成 PWM 信号。 在主循环中调整 PWM 占空比以实现呼吸效果。 示例代码 1. 初始化系统时钟 2. 配置 GPIO 引脚 3. 配置定时器以生成 PWM 信号 4. 在主循环中调整 PWM 占空比以实现呼吸效…