HTTP协议格式以及Fiddler用法
目录
今日良言:焦虑和恐惧改变不了明天,唯一能做的就是把握今天
一、HTTP协议的基本格式
二、Fiddler的用法
1.Fidder的下载
2.Fidder的使用
今日良言:焦虑和恐惧改变不了明天,唯一能做的就是把握今天
一、HTTP协议的基本格式
先来介绍一下http协议:
http 协议(全称为 "超文本传输协议"))是应用层最广泛使用的协议之一.
浏览器获取到网页就是基于http.
HTTP 就是浏览器和服务器之间交互的桥梁.
HTTP协议诞生于1991年,目前已经发展为最主流使用的一种应用层协议:
这里介绍HTTP/1.1 版本.
HTTP往往是基于传输层的TCP协议实现的.
接下来介绍HTTP协议的格式:
HTTP请求可以分成四个部分:
1.首行
2.请求报头(header)
3.空行
4.正文(body)
HTTP响应也可以分成四个部分:
1.首行
2.响应报头(header)
3.空行
4.正文(body)
HTTP请求:
1.首行:
包含三个部分,每个部分之间使用空格进行区分:
GET: HTTP的方法(method)
URL(俗称网址)
HTTP/1.1 版本号
method(方法)描述了这次请求的语义:想做什么.
实际开发中,最常见的两个方法:GET POST
触发GET请求:
1)在浏览器地址栏中直接输入URL
2)html 里的link script img a...
3)通过Js来构造get
第一行是首行,剩下的都是header(请求报头)部分.
触发POST请求:
1)登录
2)上传文件
如果是GET请求,没有body 如果是POST请求,一般有body.
POST请求的body内容中存放的数据和格式都是程序员自主定义的.
(面试题)GET 和 POST 之间的典型区别
本质上并没有什么区别,只是使用习惯上有区别:
1)就传递消息而言:
GET 也可以给服务器传递一些信息,GET传递的信息一般都放在query string.
POST 传递消息则是通过body
2)语义上的差别(使用场景)
GET 请求 一般是用于从服务器获取数据.
POST请求一般是用于给服务器提交数据.
3)GET 通常会被设计成幂等的,POST 不要求幂等
幂等:相同的输入,得到的结果是确定的.
4)GET 可以被缓存的,POST 则一般不能被缓存.
把请求的结果保存下来,下次请求的时候,就不必真请求了,直接取缓存结果.
URL:唯一资源定位符.
标识了互联网上的唯一资源的位置(资源在哪个服务器的哪个目录下的哪个文件)
URL基本格式:
协议方案名: http 或者 https
登录信息:现在已经不使用了.
服务器网址:域名.
服务器端口号:描述的是哪个程序.
带层次的文件路径:找到程序管辖下的文件.
查询字符串:获取资源的时候带的参数.
片段标识符:现在也不考虑.
URL最关键的四个部分:
1.域名/IP
2.端口号
3.带层次的文件路径
4.查询字符串
一个URL的这几个部分,有些是可以省略的:
例如: https://www.baidu.com/
省略端口:此时浏览器会提供默认端口.对于http来说,默认端口是80,对于https,默认端口443.
com后面的 / 也是路径,没省略,只是有点短,代表HTTP服务器的"根目录".
查询字符串(query string)以 ? 开头
以键值对的方式组织
键值对之间使用 &,
键和值之间使用 = 分割
URL有些字符是有特定含义的,就需要对内容进行重新编码,如果不编码直接写成中文,浏览器可能就无法正确识别了.
2.Header(请求报头)部分
请求报头部分都是一堆键值对,每一行是一个键值对,键和值之间使用:分割.
这些键值对都是HTTP事先定义好的,有特定的含义.
介绍一些重要的Header属性:
HOST
大概描述了服务器所在的地址和端口
Host 这里的地址和端口,用来描述最终要访问的目标.
这个内容大概率和URL中是一样的,也有一定的情况下是不同的.
Content-Length
表示body中的数据长度
Content-Type
表示请求的body中的数据格式
如果是GET请求,没body,请求中没有上述两个字段.
如果是POST请求,有body,必须要有上述两个字段.
User-Agent(简称UA)
描述了浏览器和操作系统的版本.
现在主要用于区分PC端和移动端.
Referer
当前页面的来源.
如果直接通过地址栏输入地址,直接点击收藏夹,都是没有referer
Cookie
非常重要的header 属性
本质上是 浏览器 给网页提供的 本地存储数据 的机制.
为了保证安全,默认是不允许网页访问计算机硬盘的.
Cookie 就是浏览器对于访问硬盘做出了明确的限制.
Cookie 就是通过键值对的方式来组织数据的.
网页就可以把一部分键值对放在Cookie中,以便于后面使用.
Cookie 中的具体存的内容都是程序猿自定义的.
通过下面的步骤可以观察到Cookie中的内容:
Cookie 中的数据来自于服务器.
服务器会通过HTTP响应的报头部分(Set-Cookie 字段),将返回的数据放到Cookie里面.
服务器来决定,浏览器的Cookie要存什么
Cookie 可以认为是存在于浏览器中,存在于硬盘的.
Cookie 在存的时候,是按照 浏览器 + 域名 的维度来进行细分的.
不同的浏览器,各自存各自的Cookie,
同一个浏览器不同的域名,对应不同的Cookie
Cookie 里面的内容不光是键值对,同时还有过期时间,比如:
有很多网站,登陆一次之后,自动记录登录状态.
Cookie 要回到服务器这里.
客户端同一时刻有很多个.
客户端这边就会通过Cookie来保存当前用户使用中间状态,客户端访问浏览器的时候,就会自动的把Cookie 的内容代入到请求中.然后服务器就能够知道现在客户端是啥样子了.
Cookie 里存在的往往是”上下文”这样的状态.
当浏览器保存好Cookie 之后,后续再给服务器发送请求的时候,就会自动带上这样的cookie.
Cookie 就像是服务器在浏览器这边建立的"寄存处"一样.
HTTP响应:
1.首行
也包含三个部分,每个部分之间使空格分开.
HTTP/1.1 版本号
200: 状态码
OK: 状态码描述
HTTP 状态码描述了这次响应的结果(成功或者失败以及失败原因等...)
这么多的状态码是可以分成上述五大类:
2** 一般表示成功.
3** 一般表示重定向.
4** 一般表示客户端错误
5** 一般表示服务器错误
介绍几个常见的状态码:
200 ok 成功了
301 永久重定向
302 临时重定向
403 访问被拒绝(没有权限)
404 访问的资源不存在,在服务器上没找到.
500 服务器内部错误(服务器代码抛出异常了)
504 响应时间太久,浏览器等不及了.
理解重定向:
假设申请一个域名为: /hello 使用一段时间以后,要更换为:/hello2,当换完域名以后,配置重定向,如果有人访问之前的域名,就可以跳转到新的域名.
重定向这样的响应报文中,会在header里有个Location 属性,通过这个属性来描述要跳转到哪个新的地址.(重定向方便进行网站迁移)
二、Fiddler的用法
http 协议的交互详细过程可以借助第三方的工具来看到的,这个工具称为"抓包"工具.Fiddler就是其中之一.
1.Fidder的下载
在浏览器中直接搜索Fiddler,然后选择如图:
然后里面内容随便填好以后,点击下载即可.
下载好安装以后,就可以开始使用Fiddler.
2.Fidder的使用
打开Fiddler以后,左侧就会立刻显示出当前电脑上某个程序使用http和服务器交互的过程.
Fiddler 本质上是一个代理程序,使用的时候有两个注意事项:
1)Fiddler 使用的时候,可能会和别的代理程序冲突,使用的使用要关闭其他的代理程序.
如图所示:
2)开启HTTPS功能才能正确抓包.
https协议是基于http协议的安全版协议.
当下互联网上绝大部分的服务器都是https的,fiddler 默认不能抓https的包,需要手动启动https并且安装证书才能抓https的包.
勾选上面4个复选框,fiddler 才能抓取https. 首次勾选的时候,会弹出一个对话框,是一些英文,意思是:你是否要安装对应的证书. 一定要选择:是!!!
小技巧:ctrl+A 选中左侧请求列表中的所有选项,然后ctrl+X 可以全部删除.
观察左侧抓到的包:
蓝色的说明这是个html页面.这是我们最关注的,其它的请求都是基于这个请求产生.
绿色的是js
黑色的是一些返回数据.
双击左侧的请求列表中的选项,查看到请求的详细情况.
http 请求是有一定格式的,fiddler 会按照格式解析,呈现出不同的显示效果, 选择Raw查看最初的效果.
选择右下角的 View in Notepad 在记事本中打开.
观察抓包结果,可以看到,当前http请求是一个行文本格式的数据,相比于二进制的数据,用户可以更方便的直接观察.
观察响应(下图).
在记事本中打开:
会发现记事本出现乱码.这是因为,响应数据本来也是行文本数据,但是有的服务器会对响应进行压缩,变成二进制的数据了,如果想要观察到行文书数据,点击:
然后,再次在记事本中打开.
会看到没有乱码了.
以上就是Fiddler的基本用法了.
相关文章:
HTTP协议格式以及Fiddler用法
目录 今日良言:焦虑和恐惧改变不了明天,唯一能做的就是把握今天 一、HTTP协议的基本格式 二、Fiddler的用法 1.Fidder的下载 2.Fidder的使用 今日良言:焦虑和恐惧改变不了明天,唯一能做的就是把握今天 一、HTTP协议的基本格式 先来介绍一下http协议: http 协议(全称为 &q…...
自动写代码?别闹了!
大家好,我是良许。 这几天,GitHub 上有个很火的插件在抖音刷屏了——Copilot。 这个神器有啥用呢?简单来讲,它就是一款由人工智能打造的编程辅助工具。 我们来看看它有啥用。 首先就是代码补全功能,你只要给出函数…...
项目心得--网约车
一、RESTFULPost:新增Put:全量修改Patch:修改某个值Delete: 删除Get:查询删除接口也可以用POST请求url注意:url中不要带有敏感词(用户id等)url中的名词用复数形式url设计:api.xxx.co…...
【二叉树广度优先遍历和深度优先遍历】
文章目录一、二叉树的深度优先遍历0.建立一棵树1. 前序遍历2.中序遍历3. 后序遍历二、二叉树的广度优先遍历层序遍历三、有关二叉树练习一、二叉树的深度优先遍历 学习二叉树结构,最简单的方式就是遍历。 所谓二叉树遍历(Traversal)是按照某种特定的规则ÿ…...
Spring Cloud微服务架构必备技术
单体架构 单体架构,也叫单体应用架构,是一个传统的软件架构模式。单体架构是指将应用程序的所有组件部署到一个单一的应用程序中,并统一进行部署、维护和扩展。在单体架构中,应用程序的所有功能都在同一个进程中运行,…...
TCP三次握手与四次挥手(一次明白)
TCP基本信息 默认端口号:80 LINUX中TIME_WAIT的默认时间是30s TCP三次握手 三次握手过程:每行代表发起握手到另一方刚刚收到数据包时的状态 客户端服务端客户端状态服务端状态握手前CLOSELISTEN客户端发送带有SYN标志的数据包到服务端一次握手SYN_SENDLISTEN二次握手服务端发送…...
pyside6@Mouse events实例@QApplication重叠导致的报错@keyboardInterrupt
文章目录报错内容鼠标事件演示报错内容 在pyside图形界面应用程序开发过程中,通常只允许运行一个实例 假设您重复执行程序A,那么可能会导致一些意向不到的错误并且,从python反馈的信息不容易判断错误的真正来源 鼠标事件演示 下面是一段演示pyside6的鼠标事件mouseEvent对象…...
订单30分钟未支付自动取消怎么实现?
目录了解需求方案 1:数据库轮询方案 2:JDK 的延迟队列方案 3:时间轮算法方案 4:redis 缓存方案 5:使用消息队列了解需求在开发中,往往会遇到一些关于延时任务的需求。例如生成订单 30 分钟未支付࿰…...
< 开源项目框架:推荐几个开箱即用的开源管理系统 - 让开发不再复杂 >
文章目录👉 SCUI Admin 中后台前端解决方案👉 Vue .NetCore 前后端分离的快速发开框架👉 next-admin 适配移动端、pc的后台模板👉 django-vue-admin-pro 快速开发平台👉 Admin.NET 通用管理平台👉 RuoYi 若…...
内网渗透-基础环境
解决依赖,scope安装 打开要给cmd powershell 打开远程 Set-ExecutionPolicy RemoteSigned -scope CurrentUser; 我试了好多装这东西还是得科学上网,不然不好用 iwr -useb get.scoop.sh | iex 查看下载过的软件 安装sudo 安装git 这里一定要配置bu…...
Go语言学习的第一天(对于Go学习的认识和工具选择及环境搭建)
首先学习一门新的语言,我们要知道这门语言可以帮助我们做些什么?为什么我们要学习这门语言?就小wei而言学习这门语言是为了区块链,因为自身是php出身,因为php的一些特性只能通过一些算法模拟的做一个虚拟链,…...
C和C++到底有什么关系
C++ 读作”C加加“,是”C Plus Plus“的简称。顾名思义,C++是在C的基础上增加新特性,玩出了新花样,所以叫”C Plus Plus“,就像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的关系。 C语言是1972年由美国贝尔实验室研制成功的,在当时算是高级语言,它的很多新特性都让汇编程序…...
14个Python处理Excel的常用操作,非常好用
自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。 这也是我写这篇文章的初衷。废话不说了,直接进入正题。 数据是网上找到的销售数据,长这样: 一、关联公式:…...
async/await 用法
1. 什么是 async/await async/await 是 ES8(ECMAScript 2017)引入的新语法,用来简化 Promise 异步操作。在 async/await 出 现之前,开发者只能通过链式 .then() 的方式处理 Promise 异步操作。示例代码如下: import …...
好意外,发现永久免费使用的云服务器
原因就不说了,说一下过程,在百度搜pythonIDE的时候,发现了一个网站 https://lightly.teamcode.com/https://lightly.teamcode.com/ 就是这个网站,看见这个免费试用,一开始觉得没什么,在尝试使用的过程中发…...
VSCode使用技巧,代码编写效率提升2倍以上!
VSCode是一款开源免费的跨平台文本编辑器,它的可扩展性和丰富的功能使得它成为了许多程序员的首选编辑器。在本文中,我将分享一些VSCode的使用技巧,帮助您更高效地使用它。 1. 插件 VSCode具有非常丰富的插件生态系统,通过安装插…...
SQL执行过程详解
1 、用户在客户端执行 SQL 语句时,客户端把这条 SQL 语句发送给服务端,服务端的进程,会处理这条客户端的SQL语句。 2 、服务端进程收集到SQL信息后,会在进程全局区PGA 中分配所需内存,存储相关的登录信息等。 3 、客…...
【物联网NodeJs-5天学习】第四天存储篇⑤ ——PM2,node.js应用进程管理器
【NodeJs-5天学习】第四天存储篇⑤ ——PM2,node.js应用进程管理器1. 前言2. 官方说明3. 安装PM24. PM2常用命令4.1 启动命令4.2 重新启动命令4.3 热重载命令4.4 停止命令4.5 删除命令4.6 查看进程运行状态4.4 显示某一个进程的具体信息4.8 显示日志信息4.9 终端监控…...
【C++学习】【STL】deque容器
dequeDouble Ended Queues(双向队列)deque和vector很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque 容器中存储元素并不能保证所有元素都存储到连续的内…...
当 App 有了系统权限,真的可以为所欲为?
看到群里发了两篇文章,出于好奇,想看看这些个 App 在利用系统漏洞获取系统权限之后,都干了什么事,于是就有了这篇文章。由于准备仓促,有些 Code 没有仔细看,感兴趣的同学可以自己去研究研究,多多…...
vue3.js的介绍
一.vue.js简述 Vue是一套用于构建用户开源的MVVM结构的Javascript渐进式框架,尤雨溪在2015年10月27日发布了vue.js 1.0Eavangelion版本,在2016年9月30日发布了2.0Ghost in the Shell版本,目前项目由官方负责 vue的核心只关注图层࿰…...
【Three.js】shader特效 能量盾
shader特效之能量盾前言效果噪点图主要代码index.htmldepth-fs.jsdepth-vs.jsshield-fs.jsshield-vs.js相关项目前言 效果噪点图 为了可以自定义能量球的效果,这里使用外部加载来的噪点图做纹理,省去用代码写特效的过程。 主要代码 index.html <…...
【6000字长文】需求评审总是被怼?强烈推荐你试试这三招
前段时间和一个合作部门的产品新人沟通需求,结束的时候,他问了我一个问题,“你在产品新人阶段,最害怕做的事情是什么”? 我不假思索的回答说,“需求评审,是曾经最不想面对的环节,甚至在评审之前几个小时就开始心跳加速了。当然这也是产品修炼路上的必经之路,其实只要掌…...
Hive介绍及DDL
1.OLTP和OLAP OLTP: 联机事务处理系统。在前台接收的用户数据可以立即传送到后台进行处理,并在很短的时间内给出处理结果。关系型数据库是OLTP典型应用,如MySQL OLTP环境开展数据分析是否可行? 为了更好的开展数据分析&#x…...
Simulink 自动代码生成电机控制:在某国产ARM0定点MCU上实现自动代码生成无感电机控制
目录 前言 开发流程 定点化的技巧 代码生成运行演示 总结 前言 这次尝试了在国产arm0内核的MCU上实现Simulink自动代码生成永磁同步电机无传感控制。机缘巧合之下拿到了一块国产MCU的电机控制板和一个5000RPM的小电机。最后实现了无传感控制,在这里总结下一些经…...
MySQL基本查询
文章目录表的增删查改Create(创建)单行数据 全列插入多行数据 指定列插入插入否则更新替换Retrieve(读取)SELECT列全列查询指定列查询查询字段为表达式查询结果指定别名结果去重WHERE 条件基本比较BETWEEN AND 条件连接OR 条件连…...
你需要知道的 7 个 Vue3 技巧
VNode 钩子在每个组件或html标签上,我们可以使用一些特殊的(文档没写的)钩子作为事件监听器。这些钩子有:onVnodeBeforeMountonVnodeMountedonVnodeBeforeUpdateonVnodeUpdatedonVnodeBeforeUnmountonVnodeUnmounted我主要是在组件…...
行政区划获取
行政区划获取一、导入jar包二、代码展示背景:公司的行政区划代码有问题,有的没有街道信息,有的关联信息有误,然后找到了国家的网站国家统计局-行政区划,这个里面是包含了所有的行政信息,但是全是html页面&a…...
让ChatGPT介绍一下ChatGPT
申请新必应内测通过了,我在New Bing中使用下ChatGPT,让ChatGPT介绍一下ChatGPT 问题1:帮我生成一篇介绍chatGPT的文章,不少于2000字 回答: chatGPT是什么?它有什么特点和用途? chatGPT是一种…...
【Redis】Redis 主从复制 + 读写分离
Redis 主从复制 读写分离1. Redis 主从复制 读写分离介绍1.1 从数据持久化到服务高可用1.2 主从复制1.3 如何保证主从数据一致性?1.4 为何采用读写分离模式?2. 一主两从环境准备2.1 配置文件2.2 启动 Redis3. 主从复制原理3.1 全量同步3.1.1 建立连接3…...
php怎么给网站做spm/企业查询网站
今天凌晨,苹果官方推送了iOS13.6 正式版。很多不喜欢自动更新的小伙伴,之前都安装了【屏蔽更新】的描述文件。尤其是小内存iPhone 用户,因为一个系统更新的安装包,有的要好几个G。小内存真心更不起。这次更新后,系统自…...
网站怎么防采集/肇庆网站推广排名
原文链接 https://juejin.im/post/5c0009adf265da614a3a3741 在项目中有一个竞猜下注的功能,它的赔率是根据A队和B队两边的下注总金额来计算的。于是当有用户下注某一边时,两边的赔率都会进行相应的变化。 反应到数据库里就是(简化版本&…...
wordpress修改注册表/制作网站需要什么技术
Python没有switch语句,只能通过模拟来对应实现:**方法一:使用dictionary**values {value1: do_some_stuff1,value2: do_some_stuff2,...valueN: do_some_stuffN,}values.get(var, do_default_stuff)()根据需求可以自行更改参数内容ÿ…...
网站营销推广方案/网络广告的优势有哪些
本文主要内容:1 ElasticSearch常用的操作2 ElasticSearchbulk命令ES REST APIelasticsearch支持多种通讯,其中包括http请求响应服务,因此通过curl命令,可以发送http请求,并得到json返回内容。常用的REST请求有…...
大朗网站建设公司/谷歌浏览器下载安装2023最新版
本文来自:[url]http://bbs.51cto.com/thread-9204-1-1.html[/url]网络IP地址“主要”分为ABC三类,以下是覆盖范围:A类:0.0.0.0 - 127.255.255.255,标谁的子网掩码是255.0.0.0(按子网掩码的另一种标注方法是/8ÿ…...
做网站首页ps分辨率多少/sem竞价培训班
艺术风格转换是一种图像的合成问题,其中图像的内容是以另一种风格再现的。 Artistic style transfer is an image synthesis problem where the contentof an image is reproduced with the style of another. 近年来的研究表明,利用预训练卷积神经网络…...