• HTTP权威协议笔记-9.Web机器人


      经过整个春节的放肆,终于回归了,说实话,春节真心比上班累。

    9.1 爬虫及爬行方式

      (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历。

      (2) 爬行方式:Web机器人会获取Web页面,然后获取这个页面指向的所有Web页面,再指向这个站点所指向的页面,依次类推。

      (3) 从哪儿开始:根集

      爬虫在开始访问的URL初始集合被称为根集。通常一个好的根集会包括一些大的流行Web站点、一个新创建的列表和一个不经常被链接的的无页面列表.

      (4) 链接的提取:爬虫在在Web上移动时,会不断对HTML进行解析,它会对每个链接进行解析,并将这些链接添加到需要爬行的页面列表上去,最终爬虫会将这些相对URL转换为绝对URL。

      (5) 避免环路:爬虫会根据链接在Web页面间不停跳转,在跳转期间要防止其 访问A页面-》访问B页面-》访问C-页面-》访问A页面  的循环状态(文件系统同样会存在该情况)。

        后果:1.消耗网络带宽,导致无法获取其他页面。

             2.爬虫环路不断访问页面的过程中,另一端的服务器也在遭受打击,可能会造成击垮站点,阻止所有正常用户访问站点。

      (6) 爬虫对对访问地址的管理技术

        1.树和散列表:通过搜索树或散列表来记录已访问的URL,这样加速了访问速度。

        2.有损的存在位图:将URL转换为一定长度的数组,这个数组中有个相关的“存在位”,在爬过URL时会将该“存在位”置位,爬虫在再次访问该URL时会发现已访问。

        3.检查点:将已访问的URL列表保存到硬盘上,以防止机器人崩溃。

        4.分类:为每个机器人分配一个特定的URL“片”,由其负责爬行。

      (7) 别名与机器人回路:由于URL的默认端口是否隐藏即会造成回路存在。

      (8) 避免循环和重复

        1.规范URL

        2.广度优先的爬行

        3.节流(限制机器人从一个网站获取的页面数量)

        4.限制URL大小(环路会使URL长度增加,限制URL长度可有效防止无限循环)

        5.URL/站点黑名单

        6.模式检测(通过重复组件的环路模式进行检测,可拒绝继续环路访问)

        7.内容指纹(通过对URL站点内容相同的校验,得出是否访问过,并是否继续访问)

        8.人工监视

    9.2 机器人的HTTP

      机器人同样遵循手HTTP规范的规则,

      1.识别请求首部

      建议机器人实现者发送基本首部信息:

    • User-Agent:机器人名称
    • From:机器人的用户/管理者的邮箱
    • Accept:告知服务器可以发送哪些媒体类型
    • Referer:提供包含当前请求URL的文档URL

      2. 虚拟主机  

      在默认情况下,大多数服务器都会默认的配置一个特定的站点,因此,不包含host的爬虫访问提供两个站点的服务器发出请求时,会造成返回值失误。

      3.条件请求

      机器人只有在内容发生变化时才重新获取内容是有意义的,因此,有些机器人实现了条件HTTP请求,他们会对时间戳或者实体签进行比较,之后确认是否继续获取。

      4.对响应的处理

        1.状态码

        2.实体

      5.User-Agent导向

       很多站点会为不同的用户代理进行内容优化,并尝试对浏览器类型进行检测,以确保支持各种特性,当机器人进行访问时,站点会为机器人提供出错页面而不是请求页面。

       站点管理者应该设计一个处理机器人请求的策略。

    9.3 行为不当的机器人

    • 失效机器人(造成服务器过载,拒绝为其他人服务)
    • 失效的URL(如果一个网页经过大量修改,而机器人依然访问之前记录的该网页内容,机器人会对大量不存在的URL发起请求)
    • 很长的错误URL(URL过长会降低Web服务器性能)
    • 爱打听的机器人(请求私有文档,敏感数据)
    • 动态网关访问

    9.4 拒绝机器人访问

      服务器文档中提供一份Robots.txt,其中标明机器人可以访问服务器的哪些部分,机器人请求时从Web站点首先请求该文档,然后继续访问数据。

      Robots.txt具有特有格式及参数,学习不认真,略了。

  • 相关阅读:
    团队冲刺第一天
    第八周进度报告
    团队会议01
    《梦断代码》阅读笔记(三)
    《梦断代码》阅读笔记(二)
    《梦断代码》阅读笔记(一)
    SCRUM第六天
    SCRUM第五天
    大白话strom——问题收集(持续更新ing)
    maven环境快速搭建(转)
  • 原文地址:https://www.cnblogs.com/Khan-Sadas/p/6370128.html
Copyright © 2020-2023  润新知