网络爬虫之HTTP原理

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.mzph.cn/web/3049.shtml

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

相关文章

从零开始写 Docker(十二)---实现 mydocker stop 停止容器

本文为从零开始写 Docker 系列第十二篇,实现类似 docker stop 的功能,使得我们能够停止指定容器。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原理&#x…

[韭]第一次参加护网行动要注意什么??

前言 为什么要写这篇文章呢,一是对当下安全环境进行一个分析,二是以过来人的身份留下一点经验。 当下安全环境分析 现在这个时代,大家都已经踏上了信息高速公路,可以自己拿搜索引擎搜一下自己知道的大厂裁员情况,有…

油猴脚本:bing 搜索结果居中

文章目录 效果预览脚本使用步骤安装油猴脚本添加脚本 效果预览 脚本 // UserScript // name bing居中 // namespace http://tampermonkey.net/ // version 2024-04-24 // description try to take over the world! // author You // match http…

rust 卸载重新安装 安装

原因:接触区块链时报错 linking with x86_64-w64-mingw32-gcc failed: exit code: 1 Rust编译需要C环境,如果你没有,Rust也能安装成功,只是无法编译代码 C的编译工具有两个,一个是msvc,也就是visual studi…

CTFshow-PWN-栈溢出(pwn44)

64位的 system(); 但是好像没"/bin/sh" 上面的办法不行了,想想办法 检查: 是 64 位程序 ida 反编译 main 函数: 跟进 ctfshow 函数: 存在栈溢出 offset:0xAh8 在前面经验的基础上,这里我们直…

Python-VBA函数之旅-issubclass函数

目录 一、issubclass函数的常见应用场景: 二、issubclass函数使用注意事项: 三、如何用好issubclass函数? 1、issubclass函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页&#xff…

Linux下载及安装OpenSSL

文章目录 前言一、OpenSSL下载二、OpenSSL安装1.上传下载好的安装包到服务器2.解压3.切换目录4.配置config5.编译6.安装7.备份旧版本OpenSSL7.创建软链接8.添加OpenSSL动态链接库9.更新库缓存10.查看OpenSSL版本验证安装是否成功 前言 一般系统会自带有OpenSSL,我们…

ubuntu 24.04 beta server NAT模式上网设置

在Ubuntu 24.04 Beta上设置网络通常涉及使用命令行工具。以下是设置静态IP地址和动态IP地址的步骤: 动态IP设置: 查找你的网络接口名称: ip a ens37是我NAT模型的一张网卡,此时是没有ip的。 下面介绍如何NAT模式下添加DHCP动态…

【数据结构与算法】:带你手搓顺序表(C/C++篇)

文章目录 一、顺序表1.1 线性表 二、顺序表2.1 概念及结构2.2 实现方法1. 顺序表的初始化2. 顺序表的销毁3. 扩容4. 尾部插入/尾部删除5. 头部插入/头部删除6. 指定位置插入/删除7. 顺序表的查找8. 顺序表元素的索引9. 顺序表元素的修改10. SeqList.c完整代码 一、顺序表 1.1 …

FL Studio21中文版值不值得下载?2024优点和缺点测评介绍

FL Studio21的优点和缺点分析如下: 优点: 功能全面: FL Studio 21提供了从音频录制、编辑到混音和母带处理的全套工具,满足音乐制作的全流程需求。内置多种虚拟乐器和效果器,覆盖了广泛的音色和风格。直观易用&#…

粒子群算法(PSO)matlab代码实现

粒子群算法(PSO)matlab代码实现 %% 清空命令行和工作区 clc clear %% 目标函数:求解函数在[0,50]区间上的最小值 f(x) x.*sin(x).*cos(2*x) - 2.*sin(3*x)3*x.*sin(4*x); %% 初始化算法参数 population50; % 粒子的数量 dimension1; …

frp 实现 http / tcp 内网穿透(穿透 wordpress )

frp 实现 http / tcp 内网穿透(穿透 wordpress ) 1. 背景简介与软件安装2. 服务端配置2.1 配置文件2.2 wordpress 配置文件2.3 frps 自启动 3.客户端配置3.1 配置文件3.2 frpc 自启动 同步发布在个人笔记frp 实现 http / tcp 内网穿透(穿透 w…

详细分析mysqlslap的基本知识 | 压力测试(附Demo)

目录 前言1. 基本知识2. 参数解读2.1 auto-generate-sql2.2 only-print2.3 iterations2.4 并发处理参数 前言 对数据库进行压力测试,对此补充这方面的详细知识点 1. 基本知识 mysqlslap 是 MySQL 自带的用于模拟数据库负载的压力测试工具 可以模拟多个客户端并发…

C++—DAY2

定义一个矩形类Rec,包含私有属性length,width,有以下成员函数: void set length(int l);//设置长度 void set width(int w); //设置宽度 int get length(); //获取长度 int get_width(); //获取宽度 void show(); //输出…

《本能》我们为什么管不住自己 - 三余书屋 3ysw.net

本能:我们为什么管不住自己 大家好,今天我们来解读一本名为《本能》的书。这本书有两位作者,第一位是特里伯纳姆,他是哈佛大学商学院的访问学者,在1997年获得哈佛大学商业经济学博士学位,也是自1997年起一…

无重复最长子串

专栏持续更新50道算法题,都是大厂高频算法题,建议关注, 一起巧‘背’算法! 文章目录 题目解法 滑动窗口总结 题目 解法 滑动窗口 采取滑动窗口的方法降低时间复杂度定义一个 map 数据结构存储 (k, v),其中 key 值为字符,value 值…

Shader for Quest 2: 自定义shader在Unity Editor中可以使用,但是在Quest 2中却不可以

GameObject segment GameObject.Find("DisplayArea_" i); MeshRenderer renderer segment.GetComponent<MeshRenderer>(); Material mat new Material(Shader.Find("Custom/MyShader")); mat.mainTexture option.Image360;上面这份代码&#x…

Qt中常用对话框

Qt中的对话框&#xff08;QDialog&#xff09;是用户交互的重要组件&#xff0c;用于向用户提供特定的信息、请求输入、或进行决策。Qt提供了多种标准对话框以及用于自定义对话框的类。以下将详细介绍几种常用对话框的基本使用、使用技巧以及注意事项&#xff0c;并附带C示例代…

vmp入门(一):android dex vmp还原和安全性论述

看了一下&#xff0c;目前市面上关于dex vmp还原就我兄弟写的这一个&#xff0c;我不得不佩服他巨强的二级制分析能力。关于dex vmp 他的大部分都写了&#xff0c;但是&#xff0c;他搞的实在是太复杂了&#xff0c;他的分析基本都是基于静态的数据流向分析&#xff0c;这种对于…

Sylar C++高性能服务器学习记录05 【线程模块-知识储备篇】

早在19年5月就在某站上看到sylar的视频了&#xff0c;一直认为这是一个非常不错的视频&#xff0c;还有幸加了sylar本人的wx&#xff0c;由于本人一直是自学编程&#xff0c;基础不扎实&#xff0c;也没有任何人的督促&#xff0c;没能坚持下去&#xff0c;每每想起倍感惋惜。恰…