• 网络爬虫之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

  • 相关阅读:
    【MySQL | 运维篇】07、MySQL 分库分表之 MyCat 管理与监控
    ORM 操作 MySQL
    C++11开发的消息总线库
    C语言:用二级指针访问二维数组
    ENVI+ERDAS实现Hyperion叶绿素含量反演:经验比值法、一阶微分法
    MySQL数据库干货_16—— SQL99标准中的查询
    利用Pycharm将python文件打包为exe文件
    WorldQuant 101 Alpha 因子的流批一体实现
    AIGC: 区块链与数据安全
    直流无刷BLDC六步换相“电流环”、“速度环”的关系
  • 原文地址:https://blog.csdn.net/Uncle_wangcode/article/details/138174772