网络爬虫之HTTP原理

技术标签: 爬虫  网络爬虫基础  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/xml XML数据

响应

 响应,由服务器返回客户端,可分为三部分:响应状态码(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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Uncle_wangcode/article/details/138174772

智能推荐

为了防老板偷窥,程序员开源了这个神器-程序员宅基地

文章浏览阅读1.6k次。有些人,在公司上班总想打开网页刷个微博,玩个游戏放松一下,但又怕老板发现,心想假如窗口能隐藏就好了。其实,只要你手眼速度跟得上,按“Alt+Tab”切换屏幕,还是十分适用..._老板键底层原理 csdn

如何制作空心文字_qt 镂空字体-程序员宅基地

文章浏览阅读709次。  条码标签软件在设计制作标签时,虽然没有制图软件那样功能强大,但是基本的设计还是可以做到的,有了这些功能就可以把标签设计得美美哒。本篇文章会给大家介绍空心文字的制作,空心文字和描边文字还是有一些区别的,空心文字的中间都是空的,将其放在带有色彩的背景上时,文字中空的部分就会显示背景色。下面我们就看看制作方法。  打开软件,新建一个标签并设置标签的尺寸。在软件右侧点击“选择其它背景图片”,在文件夹中选择一个图片作为标签的背景。  点击软件左侧的“单行文字”按钮,输入文字。在软件右侧设置字体、字号等_qt 镂空字体

uniapp实现app端图片+视频轮播_uniapp图片视频轮播-程序员宅基地

文章浏览阅读2.3k次。swiper轮播里面,可能有图片也可能有视频。当swiper切换到视频时,视频以动画的样式展示(无按钮、进度条等默认播放控件),自动轮播取消,手动滑动切换取消。当视频播放完毕后,可以自动轮播,可以手动滑动切换。③使用@ended,用来判断视频当播放到末尾时触发事件,解开自动轮播,手动滑动切换。autoplay="autoplay"(是否自动切换)原swiperChange方法中添加判断,实现切换到视频时,自动轮播取消,手动滑动切换取消。video标签里加属性。找了个插件市场里的改的。......_uniapp图片视频轮播

数据结构与算法期末复习——知识点+题库_数据结构算法复习-程序员宅基地

数据结构与算法的基本概念包括数据、数据元素和算法。数据是计算机能识别、存储和处理的符号集合,数据元素是数据的基本单位。算法的评判标准不仅仅是时间复杂度。

iMeta | 南农沈其荣团队发布微生物网络分析和可视化R包ggClusterNet-程序员宅基地

文章浏览阅读1k次。点击蓝字 关注我们ggClusterNet:包含多种基于模块可视化布局算法的微生物网络挖掘R包https://doi.org/10.1002/imt2.32SHORT COMMUNICATIONVolume1, Issue3●2022年6月13日,南农沈其荣团队在iMeta在线发表了题为“ggClusterNet: An R package for microbiome ..._微生物网络分析需要把所有数据都输入吗

exec用法_-exec-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏18次。 博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP 活动 招聘 ITeye 写博客 发Chat 登录注册 我的博客 消息(3) 帐号设置 反馈 帮助 退出 转一个强大的linux命令——find之exec2017年01月09日 11:23:20阅读数:7..._-exec

随便推点

Chrome占用CPU很高的解决办法_chrome 切换标签页 cpu 占用异常-程序员宅基地

文章浏览阅读7.8k次。野草非常喜欢谷歌浏览器chrome,虽然之前纳闷《谷歌浏览器chrome为什么疯狂占用CPU?》,还写了《因Flash致使cpu占用率狂升,野草拟暂停使用谷歌浏览器chrome》,但后来基本上大多数非工作时间的网络生活都是花在谷歌浏览器chrome里了。野草最近总是感觉电脑速度非常慢,还以为是天气太热,笔记本电脑散热不好的缘故。不过今天在使用谷歌浏览器chrome的过程中,又发现CPU占用_chrome 切换标签页 cpu 占用异常

掌控安全Web安全微专业笔记_18+网站-程序员宅基地

文章浏览阅读1.4w次,点赞16次,收藏43次。1-3 Web通信原理一、基本知识介绍IP正统定义:互联网协议地址,缩写为IP地址,是分配给用户上网使用的网际协议的设备的数字标签。老师理解:ip实际上就是地址,如果我想到你家去玩,那么我肯定要知道你家住在哪里,ip实际上就是你电脑的地址,在网络上可以通过ip来访问你的计算机。ip有内网和公网的概念。什么是内网?什么是公网?打个比方:你家的门牌号那就是个公网地址,X省X市X街道X号,别人看到这个地址就能找到你家内网地址是什么妮,假设你住的是一个大楼,比如住401房间,那么只有同一个大楼里面的_18+网站

UVA 11178-Morley's Theorem(计算几何_莫雷定理)_莫雷三角形向量乘法-程序员宅基地

文章浏览阅读1.8k次。Problem DMorley’s TheoremInput: Standard InputOutput: Standard Output Morley’s theorem states that that the lines trisecting the angles of an arbitrary plane triangle meet at the vertices of a_莫雷三角形向量乘法

有哪些好用的智能写作工具?-程序员宅基地

文章浏览阅读1.6k次。如今网络小说蓬勃发展,作家众多。因此,对于写作来说,一个专业的码字写作软件已经成为作者手中不可或缺的工具。写作软件的种类很多,定位也不一样。有一些针对作者的移动创作分享软件,有一些主要是针对喜欢阅读作品的人制作的,有一些是强制性的码字软件,有一些是针对作者创作思维导图灵感和轮廓设计的写作软件。爱发猫AI智能写作可以随时随地能够离线写作,可操作共享导出备份,勾勒思维导图模式,能够同时在多个平台发布,支持原创等。清晰、简单、清晰的码字界面正是作者所需要的。边写边预览内容,可以给作者一个读者的视角去阅_智能写作

栅格化处理激光雷达点云数据_激光雷达基于体素的栅格化-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏27次。栅格化处理激光雷达点云数据matlab版本matlab版本lidardata=load('D:\论文相关数据\高速路数据\highwaypoints1.txt');lidardata1=load('D:\论文相关数据\高速路数据\highwaypoints3.txt');length_lidardata=length(lidardata);k=1;for i=1:length_lida..._激光雷达基于体素的栅格化

Altium Designer 中如何添加或修改原理图中相同元件的pcb封装_ad如何把统一封装添加相同-程序员宅基地

文章浏览阅读1.7w次,点赞3次,收藏10次。一· 步骤: (1) 将要改的封装名记下来或者复制好。 (2) 按住shift键 鼠标左键单击所有需要修改的相同元件,确保所有需要修改的元件都被选中,检查一下。 (3)_ad如何把统一封装添加相同

推荐文章

热门文章

相关标签