爬虫调度篇[Web 漏洞扫描器]

0x00 前言

上一篇主要如何通过向浏览器页面注入 JavaScript 代码来尽可能地获取页面上的链接信息,最后完成一个稳定可靠的单页面链接信息抓取组件。这一篇我们跳到一个更大的世界,看一下整个漏扫爬虫的运转流程,这一篇会着重描写爬虫架构设计以及调度部分。

0x01 设计

在这里插入图片描述
这张图片是不是很熟悉,其实这就是 Scrapy 的架构设计图,我们简单看一下这张图的流程:

  • 1.Engine 拿到 Requests
  • 2.Engine 将 Requests 丢到 Scheduler 中,并向 Scheduler 请求下一个准备抓取的 Request
  • 3.Scheduler 返回下一个准备抓取的 Request
  • 4.Engine 将 Request 丢到 Downloader 中,中途经过 Downloader Middlewares 处理
  • 5.Downloader 处理 Request 产生 Response 返回给 Engine,中途经过 Downloader Middlewares 处理
  • 6.Engine 将 Response 丢到 Spider 中,中途经过 Spider Middleware 处理
  • 7.Spider 处理 Response 产生出 item 和新的 Requests 返回给 Engine,中途经过 Spider Middleware 处理
  • 8.Engine 将 item 丢到 Item Pipelines 处理,同时将 Requests 丢到 Scheduler 中
    重复 1-8 步骤,直到 Scheduler 没有新的 Requests

在整体架构上我直接参考了 Scrapy 的设计,只不过我实在受不了 Twisted 那种扭曲的写法, 所以直接换了个网络库重新造了个和 Scrapy 差不多的轮子,新的架构图如下:
在这里插入图片描述
上面架构图中消息队列(MQ)左边的内部名为 CasterPy,右边的内部名为 CasterJS, 我们前两篇主要介绍的单页面链接信息抓取组件(CasterJS)就是上面的架构设计中的 Downloader, 我们的架构设计和 Scrapy 的区别是:

  • 我们的 Downloader 直接返回链接信息而不是返回响应内容
  • 我们的 Downloader 是分布式的,可部署在不同
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值