爬虫基础:HTTP基本原理

爬虫基础:HTTP基本原理

  • 前言
  • HTTP基本原理
    • URI 和 URL
    • HTTP 和 HTTPS
    • HTTP 请求过程
    • 请求与响应
      • HTTP请求
      • HTTP响应
      • 请求与响应的交互过程
    • HTTP 2.0
      • 二进制传输
      • 多路复用
      • Header压缩
      • 服务器端提前响应
      • 内容安全

前言

  • 了解 HTTP的基本原理,了解从往测览器中输人 URL到获取网页内容之间都发生了什么。了解这些内容有助于我们进一步了解爬虫的基本原理。
  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

HTTP基本原理

HTTP(Hypertext Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,它是客户端(用户)与服务器(网站)之间交换数据(如HTML文件、图片文件、查询结果等)的方式。下面是HTTP的基本原理:

  1. 请求与响应模型
    HTTP是一个基于请求与响应的协议。客户端(如浏览器)向服务器发送一个请求,服务器接收到请求后,处理请求并返回响应给客户端。

  2. 请求方法
    HTTP定义了多种请求方法(也称为HTTP动词),每种方法都有特定的含义和用途。最常用的包括:

    • GET:请求指定的页面信息,并返回实体主体。
    • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
    • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
    • DELETE:请求服务器删除指定的页面。
    • HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头信息。
  3. 消息结构
    HTTP请求和响应消息都是由开始行(start line)、头部(header)和主体(body)三个部分组成。开始行包括请求方法、请求URI和HTTP协议版本;头部包含了一些关于请求或响应的元数据;主体则包含了实际发送的数据。

  4. 无连接
    HTTP协议是无连接的,即每个请求都需要与服务器建立一次连接,处理完请求后就断开连接(HTTP/1.0)。虽然HTTP/1.1和HTTP/2引入了持久连接(persistent connection)和管道化(pipelining)的概念,允许多个请求和响应在同一个连接上传输,但本质上HTTP协议还是无连接的。

  5. 无状态
    HTTP协议是无状态的,即服务器不保留与客户端之前请求和响应相关的任何信息。每次请求都是独立的,服务器处理完请求后就“忘记”了这次请求。如果需要保持状态,通常需要通过其他机制(如Cookies或Session)来实现。

  6. 端口
    HTTP默认使用80端口,HTTPS(HTTP的安全版,通过SSL/TLS加密)默认使用443端口。

总的来说,HTTP协议是互联网上实现信息传输和资源共享的基础,它定义了客户端与服务器之间如何通信和交换数据。虽然HTTP/2和HTTP/3等后续版本对HTTP协议进行了优化和改进,但上述基本原理仍然适用。

URI 和 URL

URI(Uniform Resource Identifier,统一资源标识符)和URL(Uniform Resource Locator,统一资源定位符)都是用于标识互联网上的资源的,但它们之间存在一些关键的区别。

URI是一个更广泛的概念,它用来唯一地标识一个资源,可以看作是一个字符串,用来定位和访问互联网上的各种资源,如网页、图片、视频等。URI由三部分组成:访问资源的命名机制、存放资源的主机名,以及资源自身的名称(由路径表示)。

而URL是URI的一个子集,是一种更具体的资源标识符。它不仅标识一个资源,而且还指明了如何定位这个资源。URL的格式一般由协议(或称为服务方式)、存有该资源的主机IP地址(有时也包括端口号),以及主机资源的具体地址这三部分组成。简单来说,URL是URI的一个特例,它提供了资源的具体位置信息。

总的来说,URI和URL都是用于标识和定位互联网上的资源,但URI更加泛化,而URL则更加具体,提供了资源的详细位置信息。在实际使用中,我们经常使用URL来访问网络资源,因为它包含了访问资源所需的所有信息。

HTTP 和 HTTPS

HTTP和HTTPS是用于在客户端和服务器之间传输数据的协议,它们在多个方面存在显著的区别:

  1. 安全性:HTTP是超文本传输协议,信息在传输过程中是明文传输的。这意味着如果攻击者截取了Web浏览器和网站服务器之间的传输报文,可以直接读懂其中的信息。相反,HTTPS是具有安全性的SSL加密传输协议,为浏览器和服务器之间的通信提供了加密,确保数据传输的安全,从而防止数据在传输过程中被盗取或改变。
  2. 连接方式和端口:HTTP的连接相对简单,且是无状态的。它使用的默认端口是80。而HTTPS则是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,其使用的默认端口是443。
  3. 效率与成本:虽然HTTPS提供了更高的安全性,但其缓存效率较低,且由于功能更强大,所需的证书费用也相对较高。
  4. 适用场景:HTTP因其不加密的特性,适用于不涉及敏感信息传输的场景,如公开信息的获取,其速度相对较快。而HTTPS则更适用于需要保护用户敏感信息的场景,如登录、支付等,提供更高级的安全性。在现代互联网中,涉及用户隐私和敏感信息的场景推荐使用HTTPS。

总的来说,HTTP和HTTPS各有其特点和适用场景。在设计网络应用时,应根据具体需求和安全要求选择合适的协议。

HTTP 请求过程

HTTP请求过程涉及客户端(如Web浏览器)与服务器之间的交互,通常包括以下步骤:

  1. 建立TCP连接:在HTTP工作开始之前,Web浏览器首先通过网络与Web服务器建立连接。这种连接是通过TCP协议来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族。
  2. 发送请求命令:一旦建立了TCP连接,Web浏览器会向Web服务器发送一个请求命令。这个命令可能包含HTTP请求的方法(如GET或POST),以及请求的地址URL。
  3. 发送请求头信息:浏览器在发送请求命令之后,还会以头信息的形式向Web服务器发送一些额外的信息。这些信息可能包括客户端的环境信息、身份验证信息等。
  4. 服务器应答:服务器在接收到客户端的请求后,会返回一个应答。这个应答包括一个状态码,用来显示请求是否成功以及成功或失败的详细信息。
  5. 发送应答头信息:服务器还会随同应答向用户发送关于它自己的数据以及被请求的文档的信息。这些信息通常包含在应答头中,与请求头类似,它们也包含许多有用的元数据,如服务器类型、日期时间、内容类型和长度等。
  6. 发送数据:如果请求需要,服务器会向Web浏览器发送所请求的数据。这可能是HTML文件、图片、视频或其他类型的资源。
  7. 关闭TCP连接:在数据传输完成后,服务器会关闭与Web浏览器之间的TCP连接。

请注意,虽然上述步骤描述了HTTP请求过程的一般流程,但实际的实现可能因HTTP的版本(如HTTP/1.0、HTTP/1.1、HTTP/2等)和具体的浏览器、服务器实现而有所不同。例如,HTTP/1.1和HTTP/2引入了持久连接和管道化等特性,允许在同一个连接上传输多个请求和响应,从而提高了效率。

总的来说,HTTP请求过程是一个复杂而精细的交互过程,它确保了客户端和服务器之间能够正确、安全地传输数据。

请求与响应

HTTP请求与响应是HTTP协议中两个核心的概念,它们共同构成了客户端与服务器之间交互的基础。以下是关于HTTP请求与响应的详细解释:

HTTP请求

HTTP请求是由客户端(如Web浏览器)发送给服务器的,用于请求获取特定的资源或执行特定的操作。HTTP请求通常由以下几个部分组成:

  1. 请求行:包含HTTP方法(如GET、POST等)、请求的URL和HTTP协议版本。HTTP方法定义了请求的具体操作类型,而URL则指定了要请求的资源的位置。

  2. 请求头:包含一系列字段,用于传递有关请求或客户端的额外信息。这些字段包括User-Agent(标识发出请求的客户端类型)、Accept(指定客户端可以接受的媒体类型)、Cookie(用于身份验证和会话跟踪)等。

  3. 请求体:对于某些HTTP方法(如POST和PUT),请求体包含发送给服务器的实际数据。这些数据可以是表单数据、JSON对象或其他类型的数据。

HTTP响应

HTTP响应是服务器在接收到客户端的请求后返回的,包含了请求的结果或状态信息。HTTP响应也由几个部分组成:

  1. 状态行:包含HTTP协议版本、状态码和状态消息。状态码是一个三位数的数字,用于表示请求的处理结果,如200表示成功,404表示未找到资源等。状态消息是对状态码的简短描述。

  2. 响应头:与请求头类似,响应头也包含一系列字段,用于传递有关响应或服务器的额外信息。这些字段可能包括Content-Type(指定返回内容的类型)、Content-Length(指定返回内容的长度)、Set-Cookie(用于设置客户端的Cookie)等。

  3. 响应体:响应体包含了服务器返回给客户端的实际数据。这可以是HTML页面、图片、JSON数据或其他类型的资源。

请求与响应的交互过程

  1. 客户端(如Web浏览器)向服务器发送HTTP请求。
  2. 服务器接收到请求后,处理该请求并生成相应的HTTP响应。
  3. 服务器将HTTP响应发送回客户端。
  4. 客户端接收并解析响应,然后根据响应的内容执行相应的操作,如显示网页、处理数据等。

这个过程是HTTP协议的基础,它使得客户端和服务器之间能够进行高效、可靠的通信,从而实现了互联网上的各种应用和服务。

HTTP 2.0

HTTP/2.0是HTTP协议的一个新版本,相比于HTTP/1.x,它在性能、安全性和效率方面进行了显著的改进。以下是关于HTTP/2.0的一些关键特性和优势:

二进制传输

HTTP/2.0在应用层和传输层之间增加了一个二进制分帧层。它将所有传输的信息分割为更小的消息和帧,并采用二进制编码。这种二进制格式使得协议具有更多的扩展性,并且可以提高解析和处理的效率。

多路复用

HTTP/2.0引入了多路复用的概念,允许在同一个TCP连接上同时发送多个请求和接收多个响应。每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流。这种机制减少了连接建立的开销,提高了并发性能,使得网页加载更快,用户体验更好。

Header压缩

HTTP/2.0使用HPACK算法对传输的头部信息进行压缩,减少了头部的大小。这不仅可以减少带宽的浪费,还可以加快请求的传输速度。

服务器端提前响应

在HTTP/2.0中,服务器可以对一个客户端请求发送多个响应。这意味着服务器可以在处理请求的过程中,提前发送一些响应给客户端,从而进一步提高性能和响应速度。

内容安全

HTTP/2.0是基于HTTPS的,因此它天然具有安全特性。通过HTTP/2.0的特性,可以避免单纯使用HTTPS时的性能下降问题,确保数据传输的安全性和完整性。

综上所述,HTTP/2.0通过引入二进制传输、多路
复用、Header压缩、服务器端提前响应和内容安全等特性,显著提高了Web性能、安全性和效率。这使得HTTP/2.0成为现代Web应用中广泛使用的协议版本之一。

在这里插入图片描述

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法沉淀——贪心算法四(leetcode真题剖析)

算法沉淀——贪心算法四 01.最长回文串02.增减字符串匹配03.分发饼干04.最优除法 01.最长回文串 题目链接:https://leetcode.cn/problems/longest-palindrome/ 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 …

YOLOV5 改进:修改网络结构--C2f 模块

1、前言 YOLOV5 采用C3模块,类似于残差结构的思想 class C3(nn.Module):# CSP Bottleneck with 3 convolutionsdef __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansionsuper().__init__()c_ = int(c2 * e) #…

Linux中,运行程序,顺便将打印信息存储在Log文件中查看

前言 如题,原本打算在代码中自己写一个类去管理将打印信息收集到log日志中,忽然想到,其实也可以写sh脚本 简单demo1 #!/bin/bash# 启动应用程序 test,并将标准输出和标准错误输出都追加到 log 文件中 ./test >> output.log…

7-7 12-24小时制

题目链接&#xff1a;7-7 12-24小时制 一. 题目 1. 题目 2. 输入输出格式 3. 输入输出样例 4. 限制 二、代码 1. 代码实现 #include <stdio.h>int main(void) {int hour, minute;char *str;if (scanf("%d:%d", &hour, &minute) ! 2) {return -1;}i…

操作系统系列学习——死锁处理

文章目录 前言死锁处理 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【哈工大】操…

如何优惠申请DigiCert证书

DigiCert作为全球知名的数字证书颁发机构&#xff0c;其SSL证书以高度的安全性和信任度广受认可。而JoySSL作为国内优秀的SSL证书服务平台&#xff0c;提供了便捷、高效的证书申请服务&#xff0c;让您能够轻松获取并安装DigiCert SSL证书。接下来&#xff0c;本文将详细介绍如…

什么情况用@RequestBody、@RequestParm、@PathVariable

1.requestParam(请求参数&#xff09;&#xff1a;使用RequestParam注释将请求参数绑定到控制器中的方法参数。用于从请求访问查询参数值的RequestParam注释。 如下请求URL&#xff1a;http://localhost:8080/springmvc/hello/101?param110&param220 以下是RequestParam注…

腾讯云服务器怎么买省钱?先领券,再下单!

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

网工内推 | 七险一金,上市公司招信息安全工程师,大牛带队

01 启明星辰信息技术集团股份有限公司 招聘岗位&#xff1a;数据安全服务工程师 职责描述&#xff1a; 1、负责数据安全服务项目的管理&#xff0c;统筹组织并协调资源落实项目交付实施; 3、负责数据安全风险评估、数据分类分级、数据安全管理制度、数据安全体系规划等数据安…

企事业单位宣传,三下乡的稿子怎么在学习强国网投稿发稿,价格多少钱?

随着学习强国成为各个企事业单位宣传的重要平台&#xff0c;如何在学习强国上发稿&#xff0c;尤其是三下乡的宣传稿件&#xff0c;成为了各位传媒工作者关注的焦点。在这里&#xff0c;我们要向大家介绍一下媒介多多网发稿平台&#xff0c;为大家提供一个便捷高效的投稿发稿渠…

STM32相关资料汇总

STM32选型表 STM32手册参考网站 https://www.stmcu.org.cn/

命名空间——初识c++

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 经典的Hello Word 起航c关键字c语言的命名冲突问题域作用限定符::命名空间 namespace命名空间定义命名空间的使用1.加命名空间名称及作用域限定符2.使用…

【CNN轻量化】ParameterNet: Parameters Are All You Need 参数就是你所需要的

论文链接&#xff1a;http://arxiv.org/abs/2306.14525 代码链接&#xff1a;https://github.com/huawei-noah/Efficient-AI-Backbones 一、摘要 现有的低FLOPs模型&#xff08;轻量化模型&#xff09;无法从大规模预训练中受益。本文旨在增加大规模视觉预训练模型中的参数数量…

跟着cherno手搓游戏引擎【29】Batch简单合批

思路&#xff1a; CPU和GPU都开辟同样大小的一大块内存&#xff08;为了存储顶点信息&#xff09; 索引在程序运行时生成对应规则后绑定到索引缓冲中 动态生成顶点信息&#xff08;现在改成Drawquad只是确定图形顶点的位置&#xff09; 然后在Endscene&#xff0c;将CPU的动…

蓝桥杯之简单数论冲刺

文章目录 取模快速幂 取模 这道题目有两个注意点&#xff1a; 1.当你的取模之后刚好等于0的话&#xff0c;后面就不用进行后面的计算 2.if sum detail[i] > q: 这个语句的等号也很重要 import os import sys# 请在此输入您的代码a,b,n map(int,input().split())week a*5 …

docker常用命令大全

服务相关命令​ 启动 docker 服务​ systemctl start docker 停止 docker 服务​ systemctl stop docker 重启 docker 服务​ systemctl restart docker 查看 docker 服务状态​ systemctl status docker 设置开机启动 docker 服务​ systemctl enable docker 镜像相…

初始Java篇(JavaSE基础语法)(2)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 逻辑控制 顺序结构 分支结构 if语句 switch 语句 循环结构 while 循环 for 循环 do while 循环 输入输出 输出到控制台 从键盘输入 …

详解隐私计算框架及技术要点

隐语架构一览 为什么这样分层&#xff1f; 完备性透明性开放性 隐语架构解析 产品层 算法层 隐语PSI特点 PIR Data Analysis SCQL 核心特性 联邦学习 特色 计算层 SPU 核心 HEU 同态加密设备 TEEU 密码原语 资源层 kuscia 互联互通 跨域管控 最后

多家中国车企宣布将搭载英伟达最新车载芯片;Altman 曝全新 GPT-5 细节丨 RTE 开发者日报 Vol.168

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Linux环境开发工具之vim

前言 上一期我们已经介绍了软件包管理器yum&#xff0c; 已经可以在linux上查找、安装、卸载软件了&#xff0c;本期我们来介绍一下文本编辑器vim。 本期内容介绍 什么是vim vim的常见的模式以及切换 vim命令模式常见的操作 vim底行模式常见的操作 解决普通用户无法执行sudo问…