最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 解读爬虫中HTTP的秘密

    正文概述    2020-04-22   351

    解读爬虫中HTTP的秘密

    在学习爬虫的过程中,相信大家对HTTP这个词已经不陌生了,它好像从未离开过我们的视线。被迫所需,我们每次都要使用开发者工具去查看请求头,响应头,以及头中的各个字段,使用别人封装好的模块填入信息,敲几行代码就解决了。面对简单的爬取任务,我们也许根本不用管它是什么,但可能等我们真正遇到问题的时候,却无从下手。

    什么是http? 

    超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最为广泛的一种网络协议。所有WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

    1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

    http模型

    HTTP采用了浏览器/服务器这种请求/响应模型,浏览器永远是HTTP请求的发起者,服务器为响应者。这样在浏览器客户端没有发起请求的情况下,服务器是不能主动推送消息给客户端的。

    http的定位

    HTTP是一个应用层协议,是我们想从服务器端获取信息的最直观的请求。比如,在爬虫中使用的<urllib模块>,<requests模块>等都是封装了HTTP协议,作为一个HTTP客户端实现了博文,图片,视频等信息源的下载。

    但是HTTP也不是直接就可以用的,它的请求是建立在一些底层协议的基础上完成的。如TCP/IP协议栈中,HTTP需要TCP的三次握手连接成功后才能向服务器发起请求。当然,如果是HTTPS的话,还需要TSL和SSL安全层。

    一个完整的HTTP请求

    既然HTTP协议需要建立在其它底层协议基础上,我们来看看一个完整的HTTP请求是什么样的。

    当我们点击一个链接或者输入一个链接的时候,整个HTTP的请求过程就开始了,然后经过以下步骤得到最后的信息,我们这里简单介绍一下前四个步骤,旨在了解HTTP。

    <1> 域名解析

    首先会搜索各种本地DNS缓存,如果没有就会向DNS服务器(互联网提供商)发起域名解析,以获取IP地址。

    <2> 建立TCP连接

    当获取IP后,将创建套接字socket连接,也就是TCP的3次握手连接,默认端口号80。

    <3> HTTP请求

    一旦TCP连接成功后,浏览器/爬虫就可以向服务器发起HTTP请求报文了,报文内容包含请求行、请求头部、请求主体。

    <4> 服务器响应

    服务器响应,并返回一个HTTP响应包(如果成功会返回状态码200)和请求的HTML代码。

    响应HTTP请求会返回响应状态码,根据状态码可以知道返回信息的状态。状态码规定如下:

    1xx: 信息响应类,表示接收到请求并且继续处理

          100——必须继续发出请求

          101——要求服务器根据请求转换HTTP协议版本

    2xx: 处理成功响应类,表示动作被成功接收、理解和接受

    200——交易成功

    201——提示知道新文件的URL

    202——接受和处理、但处理未完成

    203——返回信息不确定或不完整

    204——请求收到,但返回信息为空

    205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件

    206——服务器已经完成了部分用户的GET请求

    3xx: 重定向响应类,为了完成指定的动作,必须接受进一步处理

    300——请求的资源可在多处得到

    301——删除请求数据

    302——在其他地址发现了请求数据

    303——建议客户访问其他URL或访问方式

    304——客户端已经执行了GET,但文件未变化

    305——请求的资源必须从服务器指定的地址得到

    306——前一版本HTTP中使用的代码,现行版本中不再使用

    307——申明请求的资源临时性删除

    4xx: 客户端错误,客户请求包含语法错误或者是不能正确执行

    400——错误请求,如语法错误

    401——未授权

    402——保留有效ChargeTo头响应

    403——禁止访问

    404——没有发现文件、查询或URl

    405——在Request-Line字段定义的方法不允许

    406——根据发送的Accept,请求资源不可访问

    407——用户必须首先在代理服务器上得到授权

    408——客户端没有在指定的时间内完成请求

    409——对当前资源状态,请求不能完成

    410——服务器不再有此资源且无进一步地址

    411——服务器拒绝用户定义的Content-Length

    412——一个或多个请求头字段在当前请求中错误

    413——请求的资源大于服务器允许的大小

    414——请求的资源URL长于服务器允许的长度

    415——请求资源不支持请求项目格式

    416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

    417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

    5xx: 服务端错误,服务器不能正确执行一个正确的请求

    500——内部服务器错误

    501——未实现

    502——网关错误


    下载网 » 解读爬虫中HTTP的秘密

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元