当前位置: 首页 > news >正文

不只是请求和响应:使用Fiddler抓包URL和Method全指南(中)

欢迎浏览高耳机的博客

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

感谢三连支持!  

不只是请求和响应:使用Fiddler抓包HTTP协议全指南(上)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Chunfeng6yugan/article/details/144005872?spm=1001.2014.3001.5502

        🙉在(上)篇博客中,我们初步了解了HTTP协议的基本工作原理,包括它的工作过程,学习了如何使用Fiddler这个强大的抓包工具来捕捉和分析网络请求与响应。现在让我们继续深入,探讨与URL、HTTP方法(Method)、Cookie以及状态码等更为细节的内容。

目录

URL 唯一资源定位符

URL encode

HTTP方法 Method 

​编辑

GET 方法  

POST 方法

谈谈 GET 与 POST / 区别?

其他方法 


URL 唯一资源定位符

        🍍平时大家俗称的“网址”其实就是指URL(Uniform Resource Locator 统一资源定位符)。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的详细规则由因特网标准RFC1738进行了约定 RFC 1738 - Uniform Resource Locators (URL)

URL encode

        🥥自定义查询字符串通常是为了处理特定情况或绕过某些限制。在处理中文字符(如UTF-8或GBK编码)时,可能会遇到一个问题:某些中文字符的某个字节与特殊字符的ASCII码值相同。这可能会导致在URL中传递参数时出现混淆或错误。如果直接将这些字符作为查询字符串的一部分,可能会导致服务器端解析错误或数据丢失。

        像 / ? : + 等这样的字符,已经被URL当做特殊意义理解了。因此这些字符不能随意出现。 参数中需要带有这些特殊字符,就必须先对特殊字符进行转义

        转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

例如:

        搜索 "C++" :

        搜索 "冰冷的蓝色" :

        🍑此时地址栏并没有显示转义后的数据,这里的显示其实是浏览器的特殊处理,实际网络传输的URL还是encode之后的。

        通过Fiddler对本次搜索进行抓包,可以获取到 GET 请求的真实数据。

        通过在线小工具进行手动转义查看 :  UrlEncode编码/UrlDecode解码 - 站长工具

 

        验证了查询字符串的确已被转义

HTTP方法 Method 

        方法 描述了HTTP请求的 "动作" 

        🥑东晋谢灵运有云:

“天下才共十斗,曹子建(曹植)独得八斗,我得一斗,自古及今共分一斗。”

        🍓而如今的HTTP方法的使用率也是如此:

“HTTP方法共十斗,GET独得八斗,POST得一斗,其余共分一斗。”

        因此对于其余方法,仅作了解。

 

GET 方法  

        🫐GET是最常用的HTTP方法,常用于获取服务器上的某个资源。 在浏览器中直接输入URL,此时浏览器就会发送出一个GET请求。

        另外,HTML中的link、img、script等标签,也会触发GET请求。以及JavaScript中的ajax也能构造GET请求。

使用 Fiddler 观察 GET 请求    🍎访问CSDN首页,观察抓包结果 :
        1) 直接在浏览器中输入一个URL,此时就会触发 GET 请求

        2) HTML页面中的很多元素会进一步触发 GET 请求

        凡是域名中带有 csdn 字样的,都是访问 CSDN 首页时进一步出发的请求~~ 

        3) 使用 Ctrl + F5 刷新首页:

        🥝可以明显观察到,这一次通过Ctrl + F5访问首页,相较于上一次抓取了更多的GET请求数据。

        这是因为,使用 Ctrl + F5 会忽略本地缓存,强制从服务器重新读取数据。而上述请求得到的内容,大多是一些CSS文件、JavaScript文件、图片字体文件等...

        这些内容一般都是固定的,改变的频率非常低。因此只需要第一次访问CSDN首页时,将上述固定的资源都保存下来(硬盘),后续再进行访问时,就没有必要重复获取上述内容了。浏览器缓存机制节省了服务器的带宽,加快了页面展示的速度。

POST 方法

        🍇POST方法也是一种常见的方法。多用于提交用户输入的数据给服务器。 通过HTML中的form标签可以构造POST请求,或者使用JavaScript的ajax也可以构造POST请求。

使用 Fiddler 观察 POST 请求

        1) 登录/注册

        2) 上传文件 

        换头像时上传图片:

        选择图片上传,抓包

        🍉这里body中的数据,就是头像图片的二进制内容(base 64转码)

        图片数据本身是二进制的,HTTP协议虽然也可以传输二进制,但是大部分情况会将二进制进行转码。(不一定使用URL encode,还有一种转码方式,即base 64编码)

        3) POST方法的其他使用场景,如更改状态、支付信息等等,这里不再举例。

谈谈 GET 与 POST / 区别 ?

        🍊首先抛出明确结论: 这两个方法,其实没有本质区别。(它们双方的使用场景,都可以互换,只不过一般不这样做)。

        没有本质区别,但在使用习惯上,还是有区别的 !

        1) 语义不同,方法表示的含义

GET 表示从服务器获取数据;

POST表示向服务器提交数据;

🍍(如果就想使用 GET 提交数据, POST 获取数据,可以但没必要~~)

        2) 传递数据的方式不同

GET 传递数据通过 查询字符串(query string) 把自定义数据交给服务器;

POST 传递数据通过 正文(body) 把自定义数据交给服务器;

        3) 幂等性的要求不同

        在HTTP协议中,幂等性是一个重要的概念,它指的是多次执行同一个操作,结果都是相同的。它有助于确保系统的一致性和可预测性。

GET 方法对应的请求,通常设计成"幂等"的;

POST 方法对应的请求,对于"幂等性"则无要求;

        4) 承接幂等性

GET 如果设计成幂等的,此时 GET 的结果应该是可以被缓存的;(上面提到的浏览器缓存机制)

POST 不设计成幂等性, POST 就不应该被缓存;

其他方法 

PUT与POST相似,只是具有幂等特性,一般用于更新。
DELETE删除服务器指定资源。
OPTIONS返回服务器所支持的请求方法。
HEAD类似于GET,响应体不返回,只返回响应头。
TRACE回显服务器端收到的请求。
CONNECT预留,暂无使用。

        🥑至此,本篇博客的内容就已介绍完毕了。由于篇幅原因和精力有限(博主不幸感冒),我们未能在本文中涵盖所有开头所提及的内容。不过,未尽的话题将在(下)篇博客中得到详尽的阐述。还请多多支持!

不只是请求和响应:使用Fiddler抓包HTTP协议全指南(上)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Chunfeng6yugan/article/details/144005872?spm=1001.2014.3001.5501


希望这篇博客能为你使用Fiddler抓包观察URL以及Method提供一些帮助

如有不足之处请多多指出

我是高耳机

相关文章:

不只是请求和响应:使用Fiddler抓包URL和Method全指南(中)

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 不只是请求和响应:使用Fiddler抓包HTTP协议全指南(上)-CSDN博客https://blog.csdn.net/Chunfeng6yugan/article/details/144005872?spm1001.2014.3001.5502 🙉在(上)篇博客中&#xf…...

学习threejs,使用设置normalMap法向量贴图创建更加细致的凹凸和褶皱

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshPhongMaterial高…...

Hive构建日搜索引擎日志数据分析系统

1.数据预处理 根据自己或者学校系统预制的数据 使用less sogou.txt可查看 wc -l sogou.txt 能够查看总行数 2.数据扩展部分 我的数据位置存放在 /data/bigfiles 点击q退出 将一个文件的内容传递到另一个目录文件下 原数据在 /data/bigfiles ->传递 到/data/workspac…...

Vue 3 defineModel: 简化组件的双向绑定

1. 引言 在 Vue 3.4 版本中,引入了一个新的组合式 API 函数 defineModel。这个函数大大简化了自定义组件中实现 v-model 的过程,使得创建具有双向绑定功能的组件变得更加直观和简洁。 © ivwdcwso (ID: u012172506) 2. defineModel 的基本概念 defineModel 是一个宏,它简…...

【Flutter】搭建Flutter开发环境,安卓开发

Flutter是谷歌开源的一个跨平台开发的框架,方便好用,这里以Windows 上构建 Flutter Android 应用为例,记录下我搭建环境时碰到的一些问题以及解决。 第一步:参考官网:开发 Android 应用 | Flutter 中文文档 - Flutter …...

Linux中的共享内存

在Linux中,共享内存是一种高效的进程间通信(IPC)机制,允许多个进程共享一块内存区域,从而实现数据的快速传递和共享。它的特点是可以直接访问共享的内存,无需额外的拷贝操作,因此速度非常快。 共…...

SpringBoot中忽略实体类中的某个属性不返回给前端的方法

使用Jackson的方式: //第一种方式,使用JsonIgnore注解标注在属性上,忽略指定属性 public class PropertyDTO {JsonProperty("disable")private Integer disable;JsonProperty("placeholder")private String placeholde…...

ubuntu 安装proxychains

在Ubuntu上安装Proxychains,你可以按照以下步骤操作: 1、更新列表 sudo apt-update 2、安装Proxychains sudo apt-get install proxychains 3、安装完成后,你可以通过编辑/etc/proxychains.conf文件来配置代理规则 以下是一个简单的配置示例&…...

pytorch四种单机多卡分布式训练方法

文章目录 1、原生pytorch(mp.spawn)2、pytorch ddp (torchrun)3、lightning fabric4、Hugging Face Accelerate4、总结与对比4.1 mp.spawn4.2 torchrun4.3 Lightning Fabric4.4 Hugging face accelerate pytorch 分布式训练的四种方法。 我将会产生一份伪数据0到19共…...

archlinux 触摸板手势配置

文章目录 [toc]libinput-gestures安装 libinput-gestures加入 input 组创建配置文件可用手势 启动 libinput-gestures停止 libinput-gestures自启动 libinput-gestures Touchpad Synapticssynaptics.4 在 /etc/X11/xorg.conf.d/ 目录下会有默认的触摸板配置文件,如果…...

djinn:1 靶场学习小记

一、测试环境: kail攻击机:Get Kali | Kali Linux 靶场镜像:https://download.vulnhub.com/djinn/djinn.ova 描述: 该机器与 VirtualBox 和 VMWare 兼容。DHCP 将自动分配一个 IP。您将在登录屏幕上看到 IP。您必须找到并读取分…...

kafka消费者组和分区数之间的关系是怎样的?

消费者组和分区数之间的关系决定了Kafka中消息的消费方式和负载均衡。合理配置分区数和消费者数量对于优化Kafka的性能和资源利用率至关重要。以下是这种关系的几个关键点: 一个分区只能被同一组的一个消费者消费:这是为了保证消息的顺序性。在同一个消费…...

【go】查询某个依赖是否存在于这个代理

1. 使用 go list 命令 go list -m -versions github.com/gin-gonic/gin 如果模块存在,该命令会返回模块及其可用版本: github.com/gin-gonic/gin v1.7.0 v1.7.1 v1.8.0如果模块不存在或无法找到,会返回错误。 2. 使用 curl 查询代理服务 …...

如何从postman中导出所有集合Collection

项目场景: 有时候需要备份或迁移到其他平台,我们需要在postman中将这些集合数据导出。导出 Postman 集合是为了备份、团队共享或平台迁移等目的的重要步骤。此过程可分为导出单个集合和批量导出所有集合两部分,确保已保存和更新集合后&#x…...

在 Spring Boot 中实现多种方式登录(用户名、手机号、邮箱等)的不正经指南

欢迎来到一场技术与幽默交织的冒险!今天,我们将跳进 Spring Boot 的世界,探索如何通过 用户名、手机号、邮箱 等多种方式实现登录。想象一下,用户在登录时可以随心所欲地选择——就像你今天早上纠结到底是要喝美式咖啡还是拿铁&am…...

.NET平台用C#添加动作到PDF文档

使用C#语言在.NET框架下向PDF文档中添加动作,不仅能够提升文档的交互性和用户体验,还能够在自动化工作流中发挥关键作用,例如自动跳转至特定页面、链接外部资源或播放音频资源等操作。这种能力使得开发者能够根据具体需求定制PDF文档的互动操…...

大数据治理:概念、框架与实践应用

摘要: 随着大数据时代的到来,数据量呈爆炸式增长,数据来源和类型日益多样化。大数据治理作为确保数据质量、安全性、合规性以及有效利用数据资产的关键领域,已成为企业和组织在数字化转型过程中面临的重要挑战和机遇。本文深入探讨了大数据治理的概念,详细阐述了其涵盖的主…...

Vue.observable 全解析:Observable 是什么及使用场景剖析

Vue.observable 详解 Vue.observable 是 Vue 2.x 中的一个 API,用于将普通对象转化为响应式对象,类似于 Vue 组件中的 data 对象,可以实现数据的双向绑定。它允许你将任何普通对象转化为 Vue 响应式系统管理的对象,使得该对象的属性变化时能够自动触发视图更新。 什么是 …...

MySQL基础知识大总结

一,介绍 数据库是什么,我们在学习其他编程语言的时候会使用数组呀,链表,二叉树等等一些数据结构来存储我们的数据,但是大家有没有发现我们一旦关闭程序,所有的数据都没有了,这在发行的软件来看是…...

池化技术、Commons Pool介绍

概述 池化技术,一种通过重复利用对象实例而非频繁创建和销毁的技术。 常见的可池化对象: 数据库连接(Connection):数据库连接创建和销毁代价高,连接池广泛用于管理JDBC连接;线程(Thread):线程的创建和销…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

测试markdown--肇兴

day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...

数据结构:递归的种类(Types of Recursion)

目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...