fiddler(抓包)的用法和HTTP 协议的基本格式

目录

fiddler(抓包)用法:

HTTP 协议的基本格式 

HTTP请求:

首行 

认识HTTP方法 

GET和POST的典型区别: 

认识请求“报头”(header)

HTTP 响应

HTTP状态码: 

状态码的分类:

认识响应 "报头" (header) 

HTTP协议报文样式: 


fiddler(抓包)用法:

 http请求是有一定的格式的,使用fiddler进行抓包可以查看一些相关的信息。

比如我们打开一个搜狗的页面:

打开后fiddler就会自动抓包,然后我们点到fiddler进行查看:

这个就是刚刚页面的请求,双击之后选择相关的信息进行查看,一般我们选择点击ROW之后在记事本中查看即可:

 这个就是我们的抓包结果: 

我们观察抓包结果,可以看到,当前http请求是行文本格式的数据。

然后我们可以使用记事本查看响应:

 这个就是抓包的http响应:

 点击解压缩后就出现了原来的信息:

 下面的文本数据就是搜狗首页html页面的内容。 

HTTP 协议的基本格式 

 下面就抓包信息进行解读:

HTTP请求:

首行 

包含3个部分,之间用空格隔开

首先GET:HTTP中的方法

https://www.sogou.com/ 是URL(就是我们俗称的网址)URL就是唯一资源标识符(互联网上每个资源是不一样的,URL可以进行身份的识别和区别) 

详细的如图: 

URL最关键的四个部分:

1、服务器地址/域名/ip

2、端口号

3、带层次的路径

4、查询字符串 

其中URL有些部分是可以省略的,比如端口(省略http端口80,https端口443),协议名: 可以省略, 省略后默认为 http://,ip 地址 / 域名: 在 HTML 中可以省略(比如 img, link, script, a 标签的 src 或者 href 属性). 省略后表示服务器的 ip / 域名与当前 HTML 所属的 ip / 域名一致,带层次的文件路径: 可以省略. 省略后相当于 / . 有些服务器会在发现 / 路径的时候自动访问/index.html,查询字符串: 可以省略,片段标识: 可以省略。

query string 中的内容是键值对结构. 其中的 key 和 value 的取值和个数, 完全都是程序猿自己约
定的. 我们可以通过这样的方式来自定制传输我们需要的信息给服务器。

认识HTTP方法 

 最常用的方法时GET和POST。 

GET请求:

这几种会产生GET请求:

1、在浏览器直接输入url

2、html里的link,script,img,a....等等

3、通过js构造GET 

POST请求

1、登录界面,登录跳转

2、上传图片等文件

  HTTP请求可以认为分成4个部分:

1、首行

2、请求头(header)

3、空行

4、正文(body) 

post的body中的内容是有程序员自定义的内容。其中uuid是唯一身份标识。

GET和POST的典型区别: 

(实际没有本质上的区别,是可以相互替换的)

1、GET也可以使用服务器传递一些信息,GET传递的信息一般是放在querystring,POST传递信息则是通过body

2、语义上的区别:GET请求一般用于从服务器获取数据,POST一般用于给服务器提交数据

3、GET通常会被设计为幂等的,POST不要求幂等。(幂等简单理解就是结果稳定,输入是什么,输出就是相应的固定结果,是不能变得,类似于算法的确定性)

4、GET是可以被缓存的,POST一般不能被缓存(能够缓存的前提是要有幂等性)

其他方法:

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

认识请求“报头”(header)

请求报头(header)中有几个比较常用的种类:

Host: 表示服务器主机的地址和端口。

Content-Length表示 body 中的数据长度.

Content-Type表示请求的 body 中的数据格式.

User-Agent (简称 UA)表示浏览器/操作系统的属性

Referer表示这个页面是从哪个页面跳转过来的 

 

这个就表明了该搜索来源于www.sogou.com。

这就联系起来了我们所知道的运营商劫持的事情,运营商可以通过修改Referer来把连接修改,从而达成劫持。也就是因为运营商劫持等事件,后面就诞生了我们的HTTPS。

Cookie中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)。往往可以通过这个字段实现 "身份标识" 的功能 

Cookie本质上是浏览器给网页提供的本地存储数据的一种机制。

网页默认情况下是不允许访问本地硬盘的(为了安全)

但是又不得不访问本地硬盘,所以Cookie就允许网页进行少量的访问本地硬盘(进行了限制)。同时Cookie中的内容也是由程序员实现的。

Cookie里的数据是来自服务器的,通过HTTP响应获取的。

Cookie是存在于浏览器的,本地硬盘。有些是可以长期存在的,有些是短期的,有些是只限于登录,退出后就失效的等等。

Cookie要到哪里?Cookie是要回到服务器的。

客户端这边会通过Cookie来记录当前浏览器的相关信息,保存其中间状态,客服端向服务器发送请求的时候会把Cookie夹带着发送给服务器,这样服务器就接受到了Cookie。这样服务器就知道了客户端现在是啥情况了。

当浏览器保存了Cookie后,以后在给服务器发送请求的时候就会自动带上Cookie。

HTTP 响应

四个部分:

1、首部:

 2、header

3、空格  表示header的结束标志

4、body(正文)

HTTP状态码: 

状态码表示访问一个页面的结果. (是访问成功, 还是失败, 还是其他的一些情况...)
200 OK  这是一个最常见的状态码, 表示访问成功
404 Not Found 没有找到资源

比如我们试着访问搜狗的abc.html


403 Forbidden 表示访问被拒绝. 有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问)。如果用户没有登陆直接访问, 就容易见到 403

302 Move temporarily 临时重定向(这个相当于手机中的呼叫转移)

比如如果你的网站申请了新的域名,然后域名就变成了新域名,但是很多用户并不知道你改变了域名,就可以通过配置重定向临时转移,当用户访问旧的域名的时候,就跳转到新的域名进行访问即可。

301 Moved Permanently 永久重定向

500 Internal Server Error 服务器出现内部错误。 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码
 

504 Gateway Timeout (响应超时)当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况

状态码的分类:

认识响应 "报头" (header) 

响应报头的基本格式和请求报头的格式基本一致
Content-Type
响应中的 Content-Type 常见取值有以下几种:
text/html : body 数据格式是 HTML
text/css : body 数据格式是 CSS
application/javascript : body 数据格式是 JavaScript
application/json : body 数据格式是 JSON

HTTP协议报文样式: 

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

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

相关文章

python语法基础

🐟在本次博客主要想大家介绍一些简单的python语法的注意事项,从代码缩进到注释规则,从标准输入到标准输出,以及位运算符等方面了解python的基础使用方法。那么我们接下来直接开始步入正题,开始我们的python语法的讲解吧…

【SpringCloud】SpringCloud Nacos详解(集群配置)

目录前言一.Nacos集群逻辑图二.Nacos集群搭建1.搭建数据库,初始化数据库表结构2.下载Nacos3.配置Nacos3.启动Nacos4.配置启动nginx5.测试是否成功6.设置服务的nacos地址7.新增一个配置,查看数据看是否进行持久化了前言 在我前面两篇讲的都是单个nacos&a…

c++11 多线程使用

文章目录创建线程异常导致死锁实现两个线程交互的打印奇数和偶数(面试题)创建线程 1.创建线程的方式: 1.拷贝构造禁止了2.允许移动构造3.无参构造后我们可以对对象进行赋值操作4.传递可调用对象(例如包装器,泛函数,lambda,普通函数,静态成员函数) 参数列表 进行创建 2.样例…

第17章_触发器

第17章_触发器 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某公…

JavaEE简单示例——SpringMVC的简单数据绑定

简单介绍: 在前面我们介绍过如何将我们自己创建的类变成一个servlet来处理用户发送的请求,但是在大多数的时候,我们在请求 的时候会携带一些参数,而我们现在就开始介绍我们如何在Java类中获取我们前端请求中携带的参数。首先&…

SpringBoot自定义注解+异步来实现日志管理

一、前言 我们在企业级的开发中,必不可少的是对日志的记录,实现有很多种方式,常见的就是基于AOP注解进行保存,同时考虑到程序的流畅和效率,我们可以使用异步进行保存! 二、基础环境 1. 导入依赖 我这里…

C#,码海拾贝(06)——连分式(Continued Fraction)曲线插值算法,《C#数值计算算法编程》源代码升级改进版

一、连分式法 连分式法是一种有理函数逼近法,其基本出发点是:将原型展开成连分式,然后截取前面几个起主要作用的偏系数构成简化模型,连分式法计算简便,拟合精度较高,是一种很有效的传递函数简化法。 Cont…

【Spring Cloud Alibaba】5.创建服务消费者(Feign)

文章目录简介什么是 Feign开始搭建创建项目修改POM文件添加启动类创建 Feign 接口添加Controller添加配置文件启动项目测试访问Nacos访问接口测试负载均衡通过终端启动多个服务提供者实例简介 接下来我们创建一个服务消费者,通过Feign来进行与服务提供者交互&#…

KDZD程控超低频高压发生器

一、产品概述 本产品接合了现代数字变频技术,采用微机控制,升压、降压、测量、保护自动化。由于电子化,所以体积小重量轻、大屏幕液晶显示,清晰直观、且能显示输出波形、打印试验报告。 设计指标符合《电力设备专用测试仪器通用…

SSM—【笔记】1.1Spring

Spring好处 简化开发,降低企业级开发的复杂性框架整合,高效整合其他技术,提高企业级应用开发与运行效率 简化开发:1、IoC、2、AOP[2.1衍生出事务处理 ] 框架整合:MyBatis、Mybatis-plus、Struts、Struts2、Hibernat…

Android开发-Android常用组件-ToggleButton开关按钮 Switch开关

4.7 开关按钮ToggleButton和开关Switch 1.开关按钮ToggleButton 属性名 说明 android:disabledAlpha 设置按钮在禁用时的透明度 android:textOff 按钮没有被选中时显示的文字 android:textOn 按钮被选中时显示的文字 另外,除了这个我们还可以自己写个 selec…

Spring Cloud之一:注册与发现-Eureka工程的创建

系列目录(持续更新。。。) Spring Cloud:什么是微服务 Spring Cloud之一:注册与发现-Eureka工程的创建 Spring Cloud之二:服务提供者注册到Eureka Server Spring Cloud之三:Eureka Server添加认证 Spr…

SpringBoot(3)整合Mybatis

文章目录一、导入依赖二、编写配置文件三、在启动类上添加注解&#xff0c;表示mapper接口所在位置四、定义mapper接口五、定义mapper.xml映射文件六、service层七、controller层八、修改idea检查代码的严格程度一、导入依赖 <dependency><groupId>org.mybatis.spr…

华为OD机试题,用 Java 解【新员工座位安排系统】问题 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:新员工座位安排系统 题目 工位…

Ganache 安装

一. 下载Ganache Ganache下载链接 根据系统选择对应安装文件 或者brew安装 brew install --cask ganache 二.打开app 点击quickstart 点击save按钮&#xff0c;保存workspace&#xff0c;此时已启动对应端口为7545 三.打开truffle项目&#xff0c;设置配置文件 我已初始化…

华为OD机试题,用 Java 解【卡片组成的最大数字】问题 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:卡片组成的最大数字 题目 小组…

大数据分析工具Power BI(七):DAX使用场景及常用函数

DAX使用场景及常用函数 Power BI中DAX函数非常多,功能非常强大,下面结合一些实际场景来讲解DAX一些常用的函数,这些场景包含求和、计数、相除、排序、累计、环比、同比,为了更方便后续的可视化展示数据,我们新创建可视化展示的页面,创建一个新表存储后续展示的度量值,具…

iptables-ipset仅允许国内访问---端口白名单

前言&#xff1a;境外肉鸡攻击有点多&#xff0c;并业务无境外访问需求&#xff0c;IDC机房网络防火墙无法实现8K多条的china大陆地址导入&#xff1b;为实现仅china大陆地址访问&#xff0c;在业务端口如这里的80&#xff0c;使用iptables防火墙ipset过滤实现访问控制,对于访问…

HttpMessageConverter

基本介绍 我们进行Web开发&#xff0c;但是前端传入的 JSON 数据到底是如何被解析成 Java 对象作为 API入参的&#xff0c;后端返回的结果又是如何把 Java 对象解析成 返回给前端的&#xff0c;在整个数据流转的过程中&#xff0c;这些工作都是由谁来完成的呢&#xff1f; 从…

【UML建模】类图 类与接口表示方式、关系、基数详解

文章目录1.概述2.类的表示方式2.1.类与接口2.2.属性、方法、访问权限3.类之间的关系3.1.继承与实现3.2.关联、聚合、组合3.2.1.用代码表达关联关系3.2.2.用代码表达组合关系3.2.3.用代码表达聚合关系3.3.依赖3.3.1.依赖关系的代码实现4.基数5.总结1.概述 在我们的日常学习、工…