网络爬虫之HTTP原理

news/2024/5/8 2:18:56

image.png

**

image.png

URI和URL

URI的全称Uniform Resource Identifier ,即统一资源标志符。URL的全称Uniform Resource Locator 即统一资源定位符。 URL是URI的子集,也就是每一个URL就是URI,但是每一个URI不一定是URL,URI还有一个子类叫URN,它的全称Universal Resource Name-统一资源名称,URN只命名资源而不指定资源位置。

image.png

image.png

HTTP和HTTPS 

HTTP的全称叫 Hyper Text Transfer Protocol(超文本传输协议)。 HTTPS的全称叫 Hyper Text Transfer over Secure Socket Layer(加密的超文本协议),HTTP加入SSL层。

HTTPS的安全基础是SSL,因此通过它传输的内容都是经过SSL加密的,它的主要作用可以分为两种:

  • 建立信息安全通道,来保证数据传输的安全

  • 确认网站的真实性,凡是使用了HTTPS的网站,都可以通过点击浏览器地址的锁头标志来查看网站认证之后的真实的信息,也可以通过CA机构颁发的安全签章来查询

HTTP的请求过程

image.png

右侧栏点击社区社交,即发送了一个请求。这个过程浏览器向网站所在的服务器发送了一个请求,网站的服务器收到请求解析处理和解析并返回了接口,浏览器拿到接口的数据进行渲染并显示。

image.png

请求

请求,由客户端向服务器发送,可以分为四部分,请求方法,请求网址(URL)、请求头、请求体

请求方法 常见的请求方法有两种:GET和POST

方法描述
GET请求页面,并返回页面内容
HEAD类似GET请求,只不过返回的响应中没有具体的内容,用于获取报头
POST大多用于提交表单或上传文件,数据包含在请求体中
PUT从客户端向服务器传送的数据取代指定文档中的内容
DELETE请求服务器删除指定的页面
CONNECT把服务器当作跳板,让服务器代替客户端访问其它网页
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,主要用于测试或诊断

请求头 请求头,用来说明服务器需要使用的附加信息,重要的有Cookies、Referer、User-Agent。

  • Accept:请求报头域,用于指定客户端可接受哪些类型的信息

  • Accept-Language:指定客户端可接受的语言类型

  • Accept-Encoding:指定客户端可接受的内容编码

  • Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从HTTP1.1版本开始,必须包含此内容。

  • Cookie:也常用复数形式Cookies,这是为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。

  • Referer:此内容用来标识这个请求从哪个页面发过来的,服务器可以拿到这信息并做相应的处理,如来源统计、防盗链处理等

  • User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用操作系统及版本、浏览器及版本信息。

  • Content-Type:也叫互联网媒体类型,在HTTP协议消息头中,它用来表示请求中的媒体类型信息,如text/html代表HTML,image/gif 代表GIF图片,application/json代表JSON类型。

请求体 请求体一般的内容是POST请求中的表单数据,而对GET请求,请求头为空。

Content-Type提交数据方式
application/x-www-form-urlencoded表单数据
multpart/form-data表单文件上传
application/json序列化JSON数据
text/xmlXML数据

响应

 响应,由服务器返回客户端,可分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)、响应体(Response Body).

响应状态码 响应状态码表示服务器的响应状态,如200表示服务器正常,404表示资源找不到,500表示服务器内部出错。

状态码

说明

详情

100

继续

请求者应当继续提出请求

服务器已收到请求的一部分,正在等待其余部分

101

切换协议

请求者已要求服务器切换协议,服务器已确认并准备切换

200

成功

服务器已成功处理了请求

201

已创建

请求成功并且服务器创建了新的资源

202

已接受

服务器已接受了请求,但尚未处理

203

非授权信息

服务器成功处理了请求,但返回的信息可能来自另外一个源

204

无内容

服务器成功处理了请求,但没有返回任何内容

205

重置内容

服务器成功处理,内容被重置

206

部分内容

服务器成功处理了部分请求

300

多种选择

针对请求,服务器可执行多种操作

301

永久移动

请求的网页已永久移动到新的位置,即永久重定向

302

临时移动

请求网页暂时跳转到其它位置,即暂时重定向

303

查看其它位置

如果原来的请求是POST,重定向目标文档应该通过GET提取

304

未修改

此请求返回的网页未修改,继续使用上次资源

305

使用代理

请求者应该使用代理访问该网页

307

临时重定向

请求的资源临时从其它位置响应

400

错误请求

服务器无法解析该请求

401

未授权

请求没有进行身份验证或验证不通过

403

禁止访问

服务器拒绝此请求

404

未找到

服务器找不到请求的网页

405

方法禁用

服务器禁用了请求指定的方法

406

不接受

无法使用请求的内容响应请求的网页

407

需要代理授权

请求者需要使用代理授权

408

请求超时

服务器请求超时

409

冲突

服务器在完成请求时发生冲突

410

已删除

请求的资源已永久删除

411

需要有效长度

服务器不接受不含有效内容长度长度标头字段的请求

412

未满足前提条件

服务器未满足请求者在请求中设置的其中一个前提条件

413

请求实体过大

请求实体过大,超出服务器的处理能力

414

请求URL过长

请求网址太长,服务器无法处理

415

不支持类型

请求格式不被请求页面支持

416

请求范围不符

页面无法提供请求的范围

417

未满足期望值

服务器未满足期望请求标头字段的要求

500

服务器内部错误

服务器遇到错误,无法完成请求

501

未实现

服务器不具备完成请求的功能

502

错误网关

服务器作为网关或代理,从上游服务器收到无效响应

503

服务不可用

服务器目前无法使用

504

网关超时

服务器作为网关或代理,但没有及时从上游服务器收到请求

505

HTTP版本不支持

服务器不支持请求中所用的HTTP版本协议

响应头 响应头包含服务器对请求的应答响应,如Content-Type,Server,Set-Cookie等

  • Date:标识响应产生的时间

  • Last-Modified:指定资源的最后的修改时间。

  • Content-Encoding:指定响应内容的编码

  • Sever:包含服务器的信息,比如名称、版本号等

  • Content-Type:文档类型,指定返回的数据类型是什么,如text/html

  • Set-Cookie:设置Cookies。响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求

  • Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

响应体 最重要当响应属性响应体的内容。响应体的正文数据都在响应体中。请求网页时,响应的就是HTML代码;请求一张图片时,响应的数据就是二进制数据。

image.png

1、GET和POST有什么区别

        数据传输的不同:GET请求通过URL传输数据,而POST请求通过请求体传输。

        安全性不同:GET请求在URL中可以看见,通过历史记录、缓存可看;POST的数据在请求体中,安全相对较高。

        数据类型不同:GET只允许ASCII字符;POST无限制。

        特性不同:GET是安全(这里的安全是指只读特性,就是使用这个方法不会引起服务器状态变化)且幂等(幂等的概念是指同一个请求方法执行多次和仅执行一次的效果完全相同),而POST是非安全非幂等

2、HTTP和HTTPS的区别

         HTTP无CA证书,HTTPS有CA证书。

         HTTP明文传输,HTTPS是具有安全性的SSL加密传输。

         HTTP默认的端口是80;HTTPS默认的端口是443.

image.png


http://www.mrgr.cn/p/13155382

相关文章

不谈虚的,平台即产品真的有那么好吗?

从开发者角度看PaaP,会关注哪些点?随着信息技术的高速发展,我们每隔一段时间就能看到一个热门术语在各大平台被分析和讨论。当我们上搜索引擎搜索相关词条,就会找到大量与该技术优势、亮点相关的文章。特别是“平台即产品”(PaaP)策略,其在实际应用中的利用价值和效用性…

excel文件导入dbeaver中文乱码

1.将excel文件进行另存为,保存类型选择【CSV】 2.选择【工具】–>【web选项】–> 【编码】–> 【简体中文(GB18030)】 3.在DBeaver进行数据导入 直接导入应该就可以,如果不行的话按下面处理。 选择【导入数据——选择cs…

四川易点慧电子商务:抖音小店引领潮流,先进模式打造电商新标杆

在当下数字化浪潮中,电子商务行业如日中天,四川易点慧电子商务有限公司以其独特的视角和前瞻性的战略布局,成功在抖音小店领域崭露头角,成为行业内的佼佼者。本文将深入剖析四川易点慧电子商务的成功秘诀,以及其在抖音…

dotnet 使用 MSTestRunner 将单元测试制作为独立可执行文件

以往的单元测试都是不能单独作为一个独立的可执行文件跑的,需要在 VisualStudio 或 VSTest 或 dotnet test 里面运行。这就限制了运行单元测试的环境了,有时候开发者可能期望在无 SDK 或开发环境下执行单元测试,这时就可以用到本文介绍的 MSTestRunner 功能,将单元测试制作…

为 IIncrementalGenerator 增量 Source Generator 源代码生成项目添加单元测试

本文属于 IIncrementalGenerator 增量 Source Generator 源代码生成入门系列博客,本文将和大家介绍如何为源代码生成项目添加单元测试添加单元测试的作用不仅可以用来实现通用的单元测试提高质量的功能,还能用来辅助调试 IIncrementalGenerator 增量 Source Generator 源代码…

kvm修改虚拟机名称

kvm修改虚拟机名称关闭虚拟机 注意:如果虚拟机有快照需要先删除快照! virsh list --all virsh shutdown test_66.124正常关闭后,虚拟机状态state为:shut off 修改配置文件名称mv test_66.124.xml wugang_test_66.124.xml 修改配置文件内容修改图中标注的名称,即虚拟机的名…

Django框架之Django安装与使用

一、Django框架下载 首先我们需要先确定好自己电脑上的python解释器环境,否则会导致后面项目所需要的库安装不了以及项目无法运行的问题。 要下载Django并开始使用它,你可以按照以下步骤进行: 1、安装Python 首先,确保你的计算…

一步步教你在 Windows 上构建 dotnet 系应用的 UOS 软件安装包

本文将详细指导大家如何逐步为 dotnet 系列应用创建满足 UOS 统信系统软件安装包的要求。在这里,我们所说的 dotnet 系列应用是指那些能够在 Linux 平台上构建 UI 框架的应用,包括但不限于 CPF 应用、UNO 应用、Avalonia 应用等本文将详细指导大家如何逐步为 dotnet 系列应用…

Lock-It for Mac(应用程序加密工具)

OSXBytes Lock-It for Mac是一款功能强大的应用程序加密工具,专为Mac用户设计。该软件具有多种功能,旨在保护用户的隐私和数据安全。 Lock-It for Mac v1.3.0激活版下载 首先,Lock-It for Mac能够完全隐藏应用程序,使其不易被他人…

微信小程序展示倒计时

html <view class"countdown"> <text>倒计时&#xff1a;</text> <text wx:for"{{countdown}}" wx:key"index">{{item}}</text> </view> ts data: {countdown: [], // 存放倒计时数组 targetTime:…

如何才能算得上专业的数据实时同步方案,一文了解!

数据实时同步是指在多个系统或平台之间保持数据的即时一致性,数据实时同步方案是企业在数字化转型过程中,为了满足业务需求,确保数据的实时性、完整性、高效性和可靠性而采取的一系列技术和策略。实时数据同步的重要性: 1.即时决策:实时数据同步可以提供准确的数据,使决策…

C# Socket 文件发送传输

客户端向服务器发送文件: 服务器: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Server { cl…

如何3分钟,快速开发一个新功能

背景 关于为什么做这个代码生成器&#xff0c;其实主要有两点: 参与的项目中有很多分析报表需要展示给业务部门&#xff0c;公司使用的商用产品&#xff0c;或多或少有些问题&#xff0c;这部分可能是历史选型导致的&#xff0c;这里撇开不不谈&#xff1b;项目里面也有很多C…

js逆向实战之喜马拉雅Xm-Sign参数解密

url:https://www.ximalaya.com/channel/11/ 分析过程抓包,关注有页面数据回显的数据包。该url的请求头中有个加密的参数,找到该参数的加密过程。由于该参数名比较不常见,可以直接全局搜索这个参数名。只有一处,打断点。切换页码,触发断点。非常直接,xm-sign是由d.getSig…

【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护

【中级软件设计师】上午题12-软件工程&#xff08;2&#xff09; 1 系统测试1.1 单元测试1.2 集成测试1.2.1 自顶向下1.2.2 自顶向上1.2.3 回归测试 2 测试方法2.1 黑盒测试2.1.1 McCabe度量法 2.2 白盒测试2.2.1 语句覆盖-“每个流程”执行一次2.2.2 判定覆盖2.2.3 条件覆盖-A…

可审批可审计追溯的单网络导出文件方案,了解一下!

在物理隔离状态下,单网络导出文件是一个重要的安全需求,特别是在处理敏感数据时。在这种环境下,数据导出需要采取特殊的安全措施,以确保数据传输的安全性和合规性。需要考虑以下因素: 安全性:确保传输过程加密,防止数据在传输过程中被截获。 性能:对于大文件或大量数据…

pyclipper的多边形操作(转载)

等距离缩放多边形: 参考博客:https://blog.csdn.net/jizhidexiaoming/article/details/134435885文本检测DBnet中对标签的预处理里面需要用到这个操作:将文本标注框等距离缩放用于生成标签二值图像和阈值图像,如下所示: 备注:上图出自Dbnet论文 原来python有个库pyclippe…

什么是K8s架构?一文让你全面了解K8s(Kubernetes)

什么是K8s架构?一文让你全面了解K8s(Kubernetes)K8S架构定义K8S是一个开源的容器部署和管理平台。它提供容器编排、容器运行时、以容器为中心的基础设施编排、负载平衡、自我修复机制和服务发现。K8S体系结构,有时也称为K8S应用程序部署体系结构或K8S客户端-服务器体系结构,…

Java并发编程:ThreadPoolExecutor详细源码解析与应用

Thread直接创建线程的弊端 在开始解析ThreadPoolExecutor类之前&#xff0c;让我们先来了解直接创建线程所带来的弊端。在Java中&#xff0c;线程是资源密集型对象&#xff0c;每当需要并发执行任务时&#xff0c;直接创建新线程会带来以下问题&#xff1a; 资源消耗 每个线…

使用 ForAttributeWithMetadataName 提高 IIncrementalGenerator 增量 Source Generator 源代码生成开发效率和性能

本文将告诉大家如何使用 ForAttributeWithMetadataName 方法用来提高 IIncrementalGenerator 增量 Source Generator 源代码生成的开发效率以及提高源代码生成器的运行效率这是一个在 2022 的 6 月 15 才合入的新功能。原因是 Roslyn 团队发现了大量的源代码生成器和分析器项目…