Python 爬虫(4)HTTP协议
文章目录
- 一、HTTP协议
- 1、HTTP特点
- 2、HTTP工作原理
- 3、HTTP与HTTPS的区别
前言:
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于在客户端和服务器之间传输超文本(如HTML文件)。HTTP协议是Web的基础,它定义了客户端如何请求资源以及服务器如何响应这些请求。
一、HTTP协议
1、HTTP特点
HTTP协议具有以下特点:
- 简单快速:客户端向服务器发送请求时,只需指明请求方法、资源路径等必要信息,服务器能够快速理解并处理请求,返回相应的结果。例如,使用GET方法请求一个HTML页面,服务器直接返回该页面的内容。
- 灵活可扩展:HTTP协议允许传输各种类型的数据,如文本、图片、音频、视频等,通过在请求头和响应头中设置不同的字段来标识数据类型和相关信息。同时,协议自身也易于扩展,能够适应不断发展的网络应用需求,例如新增请求方法或状态码等。
- 无连接:在HTTP 1.0版本中,每次请求 - 响应完成后,连接就会被关闭。这意味着服务器在处理完一个请求后,不会保留与客户端的连接状态,下次客户端再次请求时需要重新建立连接。不过,HTTP 1.1版本默认支持持久连接,多个请求可以在同一个连接上进行,提高了性能。
- 无状态:服务器不会记住客户端的请求状态,每个请求都是独立的。也就是说,服务器无法区分连续的多个请求是否来自同一个客户端,也不记得客户端之前的请求信息。这种特性使得HTTP协议简单高效,但在实现一些需要记录用户状态的功能(如用户登录、购物车等)时,需要借助其他技术(如Cookie、Session等)来弥补。
- 基于请求 - 响应模型:客户端发起请求,服务器根据请求进行处理并返回响应。客户端和服务器之间的交互是单向的,由客户端主动发起请求,服务器被动响应请求,服务器不会主动向客户端发送数据,除非客户端先发起请求。
- 支持缓存:HTTP协议允许在客户端、服务器或中间代理服务器上设置缓存机制。通过合理设置缓存,可以避免重复请求相同的资源,提高访问速度和性能,减少网络带宽占用。例如,浏览器可以缓存网页的静态资源,下次访问相同页面时直接从本地缓存中获取,而无需再次从服务器下载。
- 明文传输:HTTP协议以明文形式传输数据,包括请求和响应的内容。这使得数据在传输过程中容易被监听、窃取和篡改,存在一定的安全风险。为了解决这个问题,衍生出了HTTPS协议,通过SSL/TLS对数据进行加密传输。
2、HTTP工作原理
HTTP协议基于请求-响应模型,工作原理可以概括为以下几个步骤:
- 建立连接:客户端(通常是浏览器)通过TCP/IP协议与服务器建立连接。默认情况下,HTTP使用80端口。
- 发送请求:客户端向服务器发送一个HTTP请求。请求由请求行、请求头和请求体组成。
- 请求行:包含请求方法(如GET、POST)、请求的资源路径(URL)和HTTP版本。
- 请求头:包含一些附加信息,如客户端类型、接受的内容类型等。
- 请求体:在POST或PUT请求中,包含发送给服务器的数据。
- 处理请求:服务器接收到请求后,根据请求的内容进行处理。服务器可能会读取数据库、执行脚本或访问文件系统来生成响应。
- 发送响应:服务器将处理结果封装成HTTP响应,发送回客户端。响应由状态行、响应头和响应体组成。
- 状态行:包含HTTP版本、状态码(如200表示成功,404表示未找到)和状态消息。
- 响应头:包含一些附加信息,如服务器类型、内容类型等。
- 响应体:包含实际返回的数据,如HTML页面或JSON数据。
- 关闭连接:在HTTP/1.0中,每次请求-响应后连接会关闭。在HTTP/1.1中,默认使用持久连接,可以在同一个连接上发送多个请求和响应。
3、HTTP与HTTPS的区别
HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版本,它在HTTP的基础上加入了SSL/TLS协议,提供了数据加密、身份验证和数据完整性保护。以下是HTTP与HTTPS的主要区别:
- 安全性:
- HTTP:数据以明文传输,容易被窃听和篡改。
- HTTPS:通过SSL/TLS加密传输数据,确保数据在传输过程中不被窃听和篡改。
- 端口:
- HTTP:默认使用80端口。
- HTTPS:默认使用443端口。
- 证书:
- HTTP:不需要证书。
- HTTPS:需要从受信任的证书颁发机构(CA)获取SSL/TLS证书,用于验证服务器身份。
- 性能:
- HTTP:由于没有加密和解密过程,性能较高。
- HTTPS:由于加密和解密过程,性能稍低,但随着硬件和协议的优化,差距逐渐缩小。
相关文章:
Python 爬虫(4)HTTP协议
文章目录 一、HTTP协议1、HTTP特点2、HTTP工作原理3、HTTP与HTTPS的区别 前言: HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于在客户端和服务器之间传输超文本…...
Redis 事件机制详解
Redis 事件机制详解 Redis 的事件机制是其高性能和高并发能力的关键之一,它采用Reactor 模型,基于文件事件驱动机制实现高效的 I/O 处理。Redis 的事件机制主要分为以下几类: 文件事件(File Event) —— 处理网络 I/…...
JMeter对API接口进行压力测试使用教程
1.启动工具:以管理员身份运行 启动成功会有两个窗口,都保留别关闭 2.创建线程组 3.创建http请求 配置 4.添加监听,查看请求结果 5.运行 成功截图 6.接口压力测试,修改线程组参数 7.2000请求,2秒完成...
Vue 3 项目实现国际化指南 i18n
引言 在开发现代 Web 应用时,国际化(Internationalization,简称 i18n)已经成为一个不可或缺的功能。无论是面向全球用户的商业网站,还是需要支持多语言的企业应用,良好的国际化支持都能显著提升用户体验。本…...
使用Trae 生成的React版的贪吃蛇
使用Trae 生成的React版的贪吃蛇 首先你想用这个贪吃蛇,你需要先安装Trae Trae 官方地址 他有两种模式 chat builder 我使用的是builder模式,虽然是Alpha.还是可以用。 接下来就是按着需求傻瓜式的操作生成代码 他生成的代码不完全正确,比如没有引入…...
HAL库定时器配置
定时器的开启需要手动开启,例如在driver_capature.c开启,该文件主要写了具体的函数实现,与driver_can.c一样,同时还有回调函数等一些高级的自定义函数。 这段代码是 STM32 HAL 库中用于初始化 定时器 2 (TIM2) 的函数 MX_TIM2_In…...
快速部署Linux + Ollama + AnythingLLM + Deepseek
简介 部署的系统:Ubuntu20.04 这里选择AnythingLLM的原因,是因为它自身支持了知识库的功能,其他的还有chatbox、dify等可以选择。 部署流程(请务必使用魔法) 一、Ollama安装 1、访问ollama官网:https:/…...
人脸表情识别系统分享(基于深度学习+OpenCV+PyQt5)
最近终于把毕业大论文忙完了,众所周知硕士大论文需要有三个工作点,表情识别领域的第三个工作点一般是做一个表情识别系统出来,如下图所示。 这里分享一下这个表情识别系统: 采用 深度学习OpenCVPyQt5 构建,主要功能包…...
Qt 导入TagLib库
文章目录 0. 前言和环境介绍1. 下载TagLib2. 下载zlib3. 修改.pro文件4. 测试代码 0. 前言和环境介绍 最近在使用Qt写一个播放器,需要解析mp3文件,于是研究了一下如何导入TagLib库 Qt构建套件:Desktop Qt6.8.2 MinGW64-bit Qt Creator安装目录: D:\bit…...
LiteratureReading:[2023] GPT-4: Technical Report
文章目录 一、文献简明(zero)二、快速预览(first)1、标题分析2、作者介绍3、引用数4、摘要分析(1)翻译(2)分析 5、总结分析(1)翻译(2)…...
Elasticsearch8.17 生产集群使用优化
一、通用优化建议 避免返回大量文档结果集 Elasticsearch 作为搜索引擎,擅长返回与查询匹配的顶级文档。对于需要检索所有匹配文档的数据库类型操作,建议使用 滚动 API(Scroll API) 或 **搜索后游标(Search After Cursor)**,以避免内存和性能问题。 避免大型文档 默…...
Linux系统管理与编程09:任务驱动综合应用
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 [环境] windows11、centos9.9.2207、zabbix6、MobaXterm、Internet环境 [要求] zabbix6.0安装环境:Lamp(linux httpd mysql8.0 php) [步骤] 5 …...
C++:背包问题习题
1. 货币系统 1371. 货币系统 - AcWing题库 给定 V 种货币(单位:元),每种货币使用的次数不限。 不同种类的货币,面值可能是相同的。 现在,要你用这 V 种货币凑出 N 元钱,请问共有多少种不同的…...
Flutter中常用命令
1.检测flutter运行环境 flutter doctor 2.升级flutter flutter upgrade 3.查看flutter 版本 flutter --version 4.查看连接的设备 flutter devices 5.运行flutter项目 flutter run 或者在vscode中按FnF5 6.打包 flutter build apk //默认打release包 7.开…...
数学爱好者写的编程系列文章
作为一个数学爱好者,我大学读的专业却不是数学专业,而是跟计算机有关的专业。原本我对编程一窍不通,平时上课也是在看数学文献,作业基本靠同学,考试及格就行。不过后来因为毕业的压力,我还是拥抱编程了&…...
QT笔记---JSON
QT笔记---JSON JSON1、JSON基本概念1.1、判断.json文件工具 2、生成.json数据3、解析.json数据 JSON 在现代软件开发中,数据的交换和存储格式至关重要。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁易…...
C站算法技能题-题解(javascript)
切面条 const 切面条 (n10)>{return 2 ** n 1; } 切面条(0) 2 切面条(1) 3 切面条(2) 5 切面条(10) 1025大衍数列 const 大衍数列 (n100) > {let ans []for(let i1;i<n;i){if(i%2 0){ans.push((i ** 2 ) / 2)}else{ans.push((i ** 2 - 1) / 2)}}return ans…...
专利信息管理知识产权基于Spring Boot SSM
目录 一、需求分析 1.1系统用户角色与权限 1.2 专利信息管理功能 二、数据分析与报表生成 三、系统性能与安全性 四 用户体验与界面设计 五 扩展性与可维护性 六、法律法规与合规性 七. 技术选型与实现 7.1技术选型: 7.2实现方式: 随…...
掌握新编程语言的秘诀:利用 AI 快速上手 Python、Go、Java 和 Rust
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
KiLog2MaximumIncrement的由来和KiMaximumIncrementReciprocal的由来
第一部分:KiLog2MaximumIncrement的由来 i 1; j KeMaximumIncrement; while ((1UI64<<i) < KeMaximumIncrement) { i; } KiLog2MaximumIncrement i; 2^17131072 2^18262144 i18KiLog2MaximumIncrement 中…...
工具层handle_excel
该工具类利用openpyxl的load_workbook加载Excel,通过iter_rows按行迭代数据,将表头和用例数据用zipdict组合成字典,通过list.append将字典(单条测试用例)追加到列表中,从而封装Excel数据解析工具。 模块/类方法/属性使用场景描述o…...
解释 RESTful API,以及如何使用它构建 web 应用程序
RESTful API 是一种符合 REST 架构风格的 API 设计,它基于 HTTP 协议来进行通信,通过对资源进行标识、定义各种操作,并使用 HTTP 请求方法来进行操作(比如 GET、POST、PUT、DELETE 等),实现客户端与服务器之…...
区块链赋能项目包装融资:开启融资新范式
在当今充满挑战与机遇的商业环境中,项目融资对于企业的发展壮大起着关键作用。而项目包装作为吸引投资者、展示项目价值的重要手段,其方式正随着科技的发展不断革新。区块链技术的兴起,为项目包装融资带来了全新的思路与变革,深刻…...
【Linux】应用层自定义协议 + 序列化和反序列化
应用层自定义协议 序列化和反序列化 一.应用层1.再谈 "协议"2.序列化 和 反序列化 二. Jsoncpp1.序列化2.反序列化 三. Tcp全双工 面向字节流四.自定义协议 保证报文的完整性1.Makefile2.Mutex.hpp3.Cond.hpp4.Log.hpp5.Thread.hpp6.ThreadPool.hpp7.Common.hpp8.…...
框架的CVE漏洞利用 php类 java类 手工操作和自动化操作蓝队分析漏洞利用的流量特征
前言 php重要框架和基本的识别特征 php的主要是 tp框架 和 laravel 当然还有 yii等 tp的主要特征 1\报错信息: 2、图标 3、请求头 Laravel特征 1、报错信息 2、请求头 php框架CVE利用 lavarvel 工具 https://github.com/zhzyker/CVE-2021-3129 https://git…...
使用 .github/realse.yml 自动生成 release change log
🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!🌟 您的支持是我们前进的动力!🤝 欢迎贡献代码或提出建议,一起让 gone 变得更好…...
python学习笔记--实现简单的爬虫(一)
任务:爬取豆瓣最受欢迎的250个电影的资料 链接:豆瓣电影 Top 250 用浏览器打开后,使用F12或鼠标右键--检查,查看网页的源代码,分析网页结构,如下图所示: 分析后得知: 1.电影名位于…...
[学习笔记] 部署Docker搭建靶场
前言 我们需要部署Docker来搭建靶场题目,他可以提供一个隔离的环境,方便在不同的机器上部署,接下来,我会记录我的操作过程,简单的部署一道题目 Docker安装 不推荐在物理机上部署,可能会遇到一些问题&…...
二分查找-在排序数组中查找元素的第一个和最后一个位置
34.在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(…...
蓝桥杯真题 2109.统计子矩阵
原题地址:1.统计子矩阵 - 蓝桥云课 问题描述 给定一个 NMNM 的矩阵 AA, 请你统计有多少个子矩阵 (最小 1111, 最大 NM)NM) 满足子矩阵中所有数的和不超过给定的整数 KK ? 输入格式 第一行包含三个整数 N,MN,M 和 KK. 之后 NN 行每行包含 MM 个整数, 代表矩阵 AA. 输出格…...
学术型ppt制作经验分享 - 如何美化科研ppt?
WordinPPT / 持续为双一流高校、科研院所、企业等提供PPT制作系统服务。 - 院士增选、国家科技奖、杰青、长江学者特聘教授、校企联聘教授、重点研发、优青、青长、青拔... / 学术型ppt制作经验分享 部分页面内容 / PPT全文共101页 - 科学技术奖ppt:自然科学奖…...
Python数据可视化实战:从基础图表到高级分析
Python数据可视化实战:从基础图表到高级分析 数据可视化是数据分析的重要环节,通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例,手把手教你使用Python的Matplotlib库完成各类数据可视化任务,涵盖条形图、堆积面积图、…...
稳定运行的以Oracle NoSQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
提高基于Oracle NoSQL数据库的ETL(提取、转换、加载)性能时,主要从多个角度进行优化。 提高基于Oracle NoSQL数据库的ETL性能需要综合考虑多个方面,关键是减少不必要的I/O操作、优化数据转换和加载过程、合理配置Oracle NoSQL数据…...
ORACLE 19.8版本数据库环境EXPDP导数据的报错处理
近期用户在做EXPDP导出时,报错异常termination终止;EXPDP本身是简单的功能并且这个环境也是经常做导出的,到底是什么原因导致了这个问题呢? 导出脚本报错: 分析导出日志,当时系统资源充足但是进程启动失败,…...
GPT-5 将免费向所有用户开放?
GPT-5 将免费向所有用户开放? 硅谷知名分析师 Ben Thompson 最近与 OpenAI CEO Sam Altman 进行了一场深度对谈,其中Sam Altman透漏GPT-5将免费向大家发放。 OpenAI 这波操作可不是一时冲动,而是被逼出来的。DeepSeek 这个新秀横空出世&am…...
【AI模型】深度解析:DeepSeek的联网搜索的实现原理与认知误区
一、大模型的“联网魔法”:原来你是这样上网的! 在人工智能这个舞台上,大模型们可是妥妥的明星。像DeepSeek、QWen这些大模型,个个都是知识渊博的“学霸”,推理、生成文本那叫一个厉害。不过,要是论起上网…...
学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测
目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指:同一类型设备上只允许单地…...
Can通信流程
下面给出一个更详细的 CAN 发送报文的程序流程说明,结合 HAL 库的使用及代码示例,帮助你了解每一步的具体操作和内部原理。 一、系统与外设初始化 1.1 HAL 库初始化 在 main() 函数开头,首先调用 HAL 库初始化函数: HAL_Init()…...
基于BClinux8部署Ceph 19.2(squid)集群
#作者:闫乾苓 文章目录 1.版本选择Ceph版本发布历史目前官方在维护的版本 2.部署方法3.服务器规划4.前置配置4.1系统更新4.2配置hosts cat >> /etc/hosts << EOFssh-keygenssh-copy-id ceph01ssh-copy-id ceph02ssh-copy-id ceph034.5 Python34.6 Syst…...
Workerman5.0如何实现一对一聊天
文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...
c#难点整理2
1.对象池的使用 就是先定义一系列的对象,用一个,调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…...
STM32基础教程——定时器
前言 TIM定时器(Timer):STM32的TIM定时器是一种功能强大的外设模块,通过时基单元(包含预分频器、计数器和自动重载寄存器)实现精准定时和计数功能。其核心原理是:内部时钟(CK_INT)或…...
How to share files with Windows via samba in Linux mint 22
概述 Windows是大家日常使用最多的操作系统,在Windows主机之间,可以共享文件,那么如何在Windows主机与Linux主机之间共享文件呢? 要在Windows主机与Linux主机之间共享文件,我们可以借助Samba协议完成。借助Samba协议…...
[AI速读]如何构建高效的AMBA协议检查器(Checker IP)
在芯片验证过程中,检查器(Checker)是确保设计符合协议规范的关键工具。本文基于一篇技术论文,分享如何为AMBA协议(如AXI、AHB)构建可重用的检查器IP(Checker IP,简称CIP),并简化其核心思路,帮助工程师快速上手。 一、什么是Checker IP? Checker IP是一组用SystemVe…...
VBA-Excel
VBA 一、数据类型与变量 常用数据类型: Byte:字节型,0~255。Integer:整数型,用于存储整数值,范围 -32768 到 32767。Long:长整型,可存储更大范围的整数,范围 -214748364…...
网络华为HCIA+HCIP IPv6
目录 IPv4现状 IPv6基本报头 IPv6扩展报头 IPv6地址 IPv6地址缩写规范 编辑 IPv6地址分配 IPv6单播地址分配 IPv6单播地址接口标识 IPv6常见单播地址 - GUA (2 / 3 开头) IPv6常见单播地址 - ULA IPv6常见单播地址 - LLA IPv6组播地…...
LeetCode 每日一题 2025/3/17-2025/3/23
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 3/17 1963. 使字符串平衡的最小交换次数3/18 2614. 对角线上的质数3/19 2610. 转换二维数组3/20 2612. 最少翻转操作数3/21 2680. 最大或值3/22 2643. 一最多的行3/23 2116…...
git tag以及git
git tag 以及git 一、先说收获吧 1. git bash 在windows上 类似于linux的bash提供的shell命令行窗口,可以执行很多linux命令,cd pwd ls vim cat touch mkdir,还可以用正则匹配查看标签。相当于在windows上装了一个小的linux。git init myproj…...
Android 自定义变形 MD5 算法
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ MD5是一种哈希函数,用于将任意长度的数据映射为一个固定长度的哈希值。它由 Ron Rivest 在 1991 年设计,是继 MD4 之后的改进版本。 M…...
【SpringBoot】MorningBox小程序的完整后端接口文档
以下是「晨光宅配」小程序的完整接口文档,涵盖了所有12个表的接口。 每个接口包括请求方法、URL、请求参数、响应格式和示例 接口文档 1. 用户模块 1.1 获取用户信息 URL: /user/{userId}方法: GET请求参数: userId (路径参数): 用户ID响应格式:{"userId": 1,&qu…...