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

HTTP协议基本格式

HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。

目录

  • Chrome抓包
  • Fiddler代理抓包
  • HTTP协议格式
    • HTTP请求
      • 首行
        • URL
        • 方法
          • Get方法
          • Post方法
          • Get与Post的区别
      • 请求报头中的属性
      • Cookie和Session
      • Cookie与Session的区别
    • HTTP响应
      • HTTP状态码
      • HTTP响应报头和正文
        • HTTP响应报头
        • HTTP响应正文

Chrome抓包

注:Chrome浏览器或Chrome内核浏览器可用(如Edge, Firefox)

  1. 在目标网页打开开发者工具:
    打开开发者工具
  2. 点击网络(Network):
    在这里插入图片描述
    此时就可以看到目标网页的所有请求。
  3. 查看请求和响应:请求和响应

Fiddler代理抓包

浏览器自带抓包工具功能有限,实际开发过程中往往会选择一些代理工具进行抓包。
常见的抓包工具主要有:Charles、Wireshark、Tcpdump、Fiddler等。对于初学者来说,使用简单且免费的Fiddler(Fiddler只适用于Windows系统)即可。

FIddler下载地址
Fiddler默认是不支持抓取HTTPS的,因此需要先进行设置: 先点击Tools-options-HTTPS进行设置:

在这里插入图片描述
在这里插入图片描述
接下来Fiddler就可以进行抓包了。

例如抓取哔哩哔哩的HTML页面请求:
首先打开bilibili网站,要抓的包就是:
在这里插入图片描述
这么多包如何确定我们要找的是哪一个?

  1. 首先看URL,也就是目标域名。
  2. 不同类型的包颜色不同,这里抓的是HTML页面的包,因此找蓝色的。
  3. 看body大小,请求的HTML页面,body大小一般很大。

找到目标后双击即可看到详情:
在这里插入图片描述

HTTP协议格式

HTTP是一种请求——响应式协议,由客户端(即浏览器)发起请求,服务器返回响应。可以通过抓包来分析HTTP协议的请求和响应细节以及特点。
抓包工具可以使用Chrome开发者工具或者Fiddler。

HTTP请求

在这里插入图片描述
对于Get请求,一般没有body,但是Post请求一般有body,在空行后的部分都是body内容。
例如一个Post请求:
在这里插入图片描述
Get请求中虽然可以放body,但一般不建议,某些服务器或代理会忽略或删除get方法中的body,某些客户端不支持get请求添加body等。因此要携带body最好是使用post请求。

首行

首行包括方法、URL以及版本号。

URL

URL(Uniform Resource Locator),即统一资源定位符,俗称“网址”。互联网上的每一个文件都有唯一的一个URL。
一个URL通常包含:协议、主机、端口、路径、查询参数、锚点。
在这里插入图片描述

方法

HTTP协议常用方法有:
在这里插入图片描述

Get方法

GET 是最常用的 HTTP 方法,用来获取服务器的某个资源。抓取的包大多数都是Get请求。

以百度首页为例:
在这里插入图片描述
特点

  • URL中的查询参数可以为空,也可以不为空
  • Header中的若干属性以键值对的形式存在
  • Get请求中的body一般为空
Post方法

在这里插入图片描述
特点

  • URL中的查询参数一般为空
  • Header中的若干属性以键值对的形式存在
  • body 部分一般不为空
  • body 内的数据格式通过 header 中的 Content-Type 指定
  • body 的长度由header 中的 Content-Length 指定
Get与Post的区别

get与post没有本质区别,get和post一般可以互换,但二者有些不同:

  • get一般用于获取,post一般用于提交
  • get方法通过查询参数获取数据,body一般为空
  • post方法通过body提交数据,查询参数一般为空
  • get一般是幂等的,post一般不是幂等的(每次相同请求返回同一个响应就视为幂等)
  • get可以缓存(因为幂等性),post不可以缓存

请求报头中的属性

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

明明URL中已经包含了服务器的地址和端口,为什么还要在设置一个Host呢?
其实一个服务器是可以托管多个网站的,这些网站共享同一个IP地址和端口号,但是他们有不同的域名,这时Host的作用就体现出来了。Host属性往往使用域名作为字段,这样便于服务器识别。
例如网站A:www.A.com和网站B:www.B.com由同一个服务器托管,那么他们的URL中的ip地址和端口号就相同。无论是A网站还是B网站发起请求,通过DNS协议进行域名解析后会得到同一个ip地址和端口号,此时就需要Host属性来识别是A网站的请求还是B网站的请求。

  • User-Agent:表示浏览器或操作系统的一些信息,包括类型、版本、语言等。
    User-Agent的作用是让服务器能够识别客户端的类型和能力,从而返回合适的响应。
    例如4399小游戏,需要Flash插件才能正常运行,但是目前浏览器禁止自带Flash功能,因此打开一个小游戏后会显示:
    在这里插入图片描述
    同时User-Agent也用来表示客户端是手机端还是网页端,这也解释了为什么同一个网站,用手机打开和用电脑打开时,页面布局什么的不尽相同。

  • Content-Length:表示body的数据长度

  • Content-Type:表示body中的数据格式
    Content-Type有多种类型,一般分为如下几类:

    1. text/plain,表示纯文本类型。它会把表单中的数据直接放到请求体中。这种格式适合于传输简单的文本数据。

    2. 以application开头的,表示应用类型。如:application/json表示JSON数据格式,application/x-www-form-urlencoded表示表单数据格式。

    3. 以mutipart开头的,表示多部分类型。如:multipart/form-data表示表单数据格式。

      application/x-www-form-urlencoded是默认的表单数据格式,适用于大多数场景,但是不能上传文件和二进制数据
      multipart/form-data是一种多部分数据格式,它把表单中的数据分为多个部分,每个部分用特定的符号分隔开,每个部分都可以有自己的Content-Type和编码方式。可以上传文件和二进制数据
      multipaty/form-data会占用更多的资源和带宽,因此只有上传文件或二进制数据时,才使用multipart/form-data,其他情况都使用application/x-www-form-urlencoded。

  • Referer:表示页面是从哪一个页面跳转过来的。
    例如从百度跳转到B站,抓到的包就是:
    在这里插入图片描述
    这里的refer即表示了B站是从百度跳转过来的。
    当我们在搜索引擎上搜索时,总会出现广告,这些都是广告商投递的,广告商通过搜索提高曝光度:
    在这里插入图片描述
    广告商通过用户点击链接来确认成交量。但是广告商不会只在一个搜索引擎上投递广告,因此refer就可以帮助确定来源。

Cookie和Session

HTTP协议是无状态协议。无状态指的是HTTP服务器没有记忆功能,每次客户端向服务器发送请求,服务器都无法确定这个请求和之前的请求是否有关,例如上某宝网购,虽然一开始登录成功,当我选定某个商品后,准备进行后续操作时,服务器并不能确定这个请求是否关联到之前的请求。之所以这样设计是为了简化服务器的处理逻辑,节省网络传输的成本,但是这样并不便于用户操作,因此引入Cookie和Session来弥补这部分的缺陷。

  • Cookie
    Cookie是一种在客户端存储用户信息的机制,客户端发送请求后,服务器除了返回响应外,还会返回一个Cookie给客户端,Cookie中存储了当前客户端的状态信息,例如登录状态等。当客户端下次发送请求时,会一并把Cookie发过去,服务器就可以根据Cookie来确定客户端的状态。
  • Session
    Cookie中往往会包含一些敏感信息,这些信息在传输过程中是透明的,并不安全,容易被盗用篡改。Session是一种更为安全的方法。
    Session是一种在服务器存储用户信息的机制,客户端发送请求后,服务器除了返回响应外,同时会生成Cookie信息和一个Session ID,服务器把这个Session ID一并返回客户端,后续客户端发起请求时,会一并把Session ID发过来,服务器通过这个Session ID就可以找到对应的Cookie信息,从而确定客户端的状态。

Cookie与Session的区别

  • 存储位置不同:Cookie存储在客户端,Session存储在服务器。
  • 安全性不同:Cookie不安全,Session相对安全。
  • 性能不同:Cookie占用客户端资源,影响浏览体验;Session占用服务器资源,影响性能。
  • 有效期不同:Cookie可以设置有效期,过期自动删除;Session没有设置过期时间时,浏览器关闭即删除。

HTTP响应

HTTP状态码

  • 常见状态码有:
状态码含义
200OK(正常)
404Not Found(没有找到资源)
403Forbidden(访问被拒绝)
405Method Not Allowed(方法不支持)
500Internal Server Error(服务器内部错误)
502Bad Gateway(错误网关)
504Gateway Timeout(响应超时)
302Move temporarily(临时重定向)
301Moved Permanently(永久重定向)
  • 状态码小结:
    在这里插入图片描述

HTTP响应报头和正文

HTTP响应报头

响应报头的常见属性有:

  1. text/html,这种格式把响应数据转化为HTML格式文档,这种格式适用于返回网页数据,但是需要额外设置编码格式。
    例如:Content-Type=text/html; charset=utf8
  2. text/xml,把响应数据转换为xml格式文档,这种格式适用于返回结构化数据,同样需要设置编码格式或者在xml文档中声明编码格式。
  3. 以image开头的,表示图像类型,将响应数据转化为图片显示。

除此之外还有很多响应属性例如:text/css、text/javascript等。

HTTP响应正文

响应正文的具体格式取决于Content-Type属性。
在这里插入图片描述

相关文章:

HTTP协议基本格式

HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。 目录 Chrome抓包Fiddler代理抓包HTTP协议格式HTTP请求首行URL方法Get方法Post方法Get与Post的区别 请求报头中的属性Cookie和SessionCookie与Session的区别…...

在 ubuntu 22.04 上配置界面服务器 xrdp

文章目录 图形界面解决方案VNCXRDP XRDP 实例安装和配置使用 XRDP 使用原理谁更快 : X11转发 > XRDP > VNC 图形界面解决方案 1. VNC 2. XRDP 3. X11 ssh : // https://blog.csdn.net/u011011827/article/details/131065690VNC 外部开放端口 用的 是 5901-5910 桌面用…...

53、基于51单片机蓄电池充电器过充过放保护LCD液晶屏显示系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&…...

【C/C++】详解 函数重载和应用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…...

WPF开发txt阅读器4:字体控件绑定

文章目录 控件折叠字体尺寸绑定选择字体字体的中文名称 txt阅读器系列&#xff1a; 需求分析和文件读写目录提取类&#x1f48e;列表控件与目录 控件折叠 作为一个txt阅读器&#xff0c;至少能够设置文字字体、尺寸&#xff0c;段落行间距等&#xff0c;还得有护眼模式等一系…...

CoreDX DDS应用开发指南(8)开发订阅应用程序

11 应用数据类型Application Data Types 11.1 概述 每个DDS主题都包含一个且仅包含一个数据类型,这是在主题上进行通信时使用的用户定义的数据类型。在大多数情况下,应用程序开发人员以数据定义语言(DDL)格式定义这些DDS数据类型。编译器用于将这些DDL类型定义转换为适当的…...

基于Python的接口自动化-读写配置文件

目录 引言 configparser模块功能介绍 引言 在编写接口自动化测试脚本时&#xff0c;有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量&#xff0c;咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中&#xff0c;后续需要用到这…...

useEffect的基础知识和底层机制

useEffect 是 React 中一个重要的 Hook&#xff0c;用来处理组件的副作用操作。它的基础知识包括两个方面&#xff1a;执行时机和参数。 执行时机&#xff1a; useEff ect 的执行时机包括两种情况&#xff1a; 组件挂载时&#xff0c;即第一次渲染之后。组件更新时&#xff…...

chatgpt赋能python:Python中如何加空格

Python中如何加空格 Python是一门广泛应用于科学计算、数据分析、人工智能、Web开发等领域的高级编程语言。在Python编程过程中&#xff0c;经常需要使用到空格&#xff0c;以实现程序的格式化和美观&#xff0c;同时也有助于提高代码的可读性和可维护性。本文主要介绍Python中…...

软件测试之路已不再是坦途

去年下半年才跳了槽&#xff0c;过程非常顺利&#xff0c;没有经历大家所说的工作荒的境地&#xff0c;所以一直没有直观地感受到软件测试就业形势到底有多严峻。 近来看到一些机构频频发出某某测试员在糟糕的就业形势下逆袭拿下XXW的某厂offer&#xff0c;然后推荐测试进阶课…...

扫雷——C语言实现

扫雷 文章目录 扫雷实现代码什么是扫雷基本功能实现显示选择菜单定义几个二维数组&#xff1f;确定数组大小初始化数组布置地雷打印展示数组排查地雷记录指定区域周围地雷的个数判断排雷成功排查地雷实现代码 基本功能的实现代码和效果展示 拓展功能简化游戏界面改变字体颜色实…...

CSS基础学习--6 CSS Text(文本)

一、文本颜色 color:red; 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000一个RGB值 - 如: RGB(255,0,0)颜色的名称 - 如: red body {color:red;} h1 {color:#00ff00;} h2 {color:rgb(255,0,0);} 二、文本的…...

高精度电压源的应用场合有哪些

高精度电压源是一种能够提供恒定、稳定电压输出的设备&#xff0c;被广泛应用于各种领域。高精度电压源是现代电力、通信、控制等领域中重要的测试仪器之一&#xff0c;其主要功能是提供稳定可靠的直流或交流电源&#xff0c;并具有高精度和高分辨率的特点。在实际应用中&#…...

Android约束布局

一、嵌套布局效率可能很低。 在 Android 开发中,我们常常需要使用嵌套布局来实现某些较复杂的界面效果。但是嵌套层级太深会带来一些问题,主要包括: 视图层级过深,导致内存占用过高和性能下降。Android 需要为每个 View 对象分配内存,嵌套层级过深会创建很多 View 对象,占用较…...

selenium基础语法

文章目录 selenium基础语法1.定位页面元素2.元素的操作1) 模拟键盘输入(send_keys)2) 点击操作(click)3) 清除去对象输入的文本内容(clear)4) 获取文本(gettext) 3. 等待4. 信息打印5. 窗口6. 导航7. 弹窗8. 鼠标和弹窗9.选择框10.文件上传11.屏幕截图 selenium基础语法 1.定位…...

运行后端SpringBoot项目

目录 一、注册微信开发者账号 1. 注册开发者账号 2. 获取appid和密钥 二、开通腾讯云TRTC服务 1. TRTC业务介绍 2. 为什么不使用阿里云的实时音视频服务&#xff0c;偏要选用腾讯云TRTC服务&#xff1f; 3. 开通TRTC服务 4. 领取TRTC的AppID和密钥 三、导入 emos-api …...

#如何对待工作中的失误?# 如何对待工作与生活中的失误——一些不成熟的忠告

关于如何对待工作与生活中的失误的忠告 1.在面对失误而带来的指责和沮丧时&#xff0c;应该如何做&#xff1f;1.1 正确认识失误1.2 处理失误后情绪与问题的途径1.2.1 接受现实&#xff0c;不要否认错误1.2.2 不要过度臆想1.2.3 安排调整情绪的时间1.2.4 向他人寻求帮助 2.发生…...

Shell脚本文本三剑客之awk编辑器

目录 一、awk简介 二、awk工作原理 三、awk命令格式 四、awk命令的使用 1.print操作按行输出文本 2.print操作按字段截取输出文本 3.使用BEGIN和END指定操作 4.使用管道符号&#xff0c;双引号调用shell命令 5.使用操作getline 6.使用操作OFS 7.配合数组使用 一、…...

Focal Loss介绍

目录 前言一. Focal Loss二. 总结 前言 在目标检测算法中&#xff0c;我们会经常遇到Focal Loss这个东西&#xff0c;今天我们就来简单的分下下这个损失。 一. Focal Loss 在深度学习训练的时候&#xff0c;在遇到目标类别不平衡时&#xff0c;如果直接计算损失函数&#xff0…...

【数据结构与算法】04 哈希表 / 散列表 (哈希函数、哈希冲突、链地址法、开放地址法、SHA256)

一种很好用&#xff0c;很高效&#xff0c;又一学就会的数据结构&#xff0c;你确定不看看&#xff1f; 一、哈希表 Hash Table1.1 核心概念1.2 哈希函数 Hash Function1.3 哈希冲突 Hash Collision1.4 哈希冲突解决1.41 方法概述1.42 链地址法 Separate Chaining1.43 开放寻址…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...