http协议学习-web机器人

出自:https://www.cnblogs.com/Khan-Sadas/p/6370128.html

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具有特有格式及参数,学习不认真,略了。


猜你喜欢

转载自blog.csdn.net/kangkang_hacker/article/details/80754739
今日推荐