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

欢迎浏览高耳机的博客

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

感谢三连支持!

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

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

目录

[URL 唯一资源定位符](#URL 唯一资源定位符)

[URL encode](#URL encode)

[HTTP方法 Method](#HTTP方法 Method)

​编辑

[GET 方法](#GET 方法)

[POST 方法](#POST 方法)

[谈谈 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 首页时进一步出发的请求~~

  1. 使用 Ctrl + F5 刷新首页:

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

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

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

POST 方法

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

使用 Fiddler 观察 POST 请求

  1. 登录/注册
  1. 上传文件

换头像时上传图片:

选择图片上传,抓包

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

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

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

谈谈 GET 与 POST / 区别 ?

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

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

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

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

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

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

  1. 传递数据的方式不同

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

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

  1. 幂等性的要求不同

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

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

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

  1. 承接幂等性

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

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

其他方法

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

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

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


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

如有不足之处请多多指出

我是高耳机

相关推荐
虾..1 小时前
UDP协议
网络·网络协议·udp
Java成神之路-7 小时前
DNS 与 CDN 底层原理深度剖析:从域名解析到内容分发全链路解析
网络·网络协议·tcp/ip
Predestination王瀞潞8 小时前
5.4.3 通信->WWW万维网内容访问标准(W3C):WWW(World Wide Web) 协议架构(分层)
前端·网络·网络协议·架构·www
半个俗人8 小时前
06postman批量执行及参数化
测试工具·postman
紫丁香9 小时前
Selenium自动化测试详解1
python·selenium·测试工具·ui
huohaiyu10 小时前
HTTPS的加密流程
网络协议·http·https
花月C10 小时前
基于WebSocket的 “聊天” 业务设计与实战指南
java·网络·后端·websocket·网络协议
软件测试君10 小时前
自动化测试路线图之自动化测试完整指南
自动化测试·软件测试·测试工具·面试·职场和发展·单元测试·职场经验
Barkamin11 小时前
HTTPS的工作过程
网络协议·http·https
小鱼不会骑车12 小时前
TCP 核心知识精讲:是什么 · 为什么 · 怎么做
网络·网络协议·tcp/ip