Interactive Crawler工具的使用
交互式爬虫是我之前一直想要尝试去做的一个东西,但由于时间问题一直都没有做,最近正好有点时间,写了初版上传到了github上,项目地址:https://github.com/smlins/Interactive-Crawl, 感兴趣的师傅们可以用用,有其他问题或建议在github上或留言都行,我有时间就去完善。
在我印象里,传统的爬虫就是简单的爬取页面上的超链接,但没有办法获取到页面触发事件所产生的http请求和响应,随着科技的发展,其实这种动态爬虫技术早在几年前就已经存在了,只是我们一直没有关注而已,不管怎样先接触下皮毛,再去深入了解。
一、简介
Interactive Crawler是一款交互式爬虫工具,不仅可以爬取页面中的超链接,还能获取通过页面的各种交互事件触发所发起的请求,支持代理设置,可结合其他漏洞扫描工具使用,目前支持以下事件的触发:
- Form表单的填写去自动提交;
- 获取页面的onclick事件并触发该事件;
- 触发a标签中JavaScript代码;
当然还有以下事件的触发未实现:
获取所有按钮并点击触发;
如果按钮不是通过JavaScript代码中绑定事件的基本上也都能触发, 因为button不像submit标签一样,button需要
onclick
或其他事件来完成事件触发。也可能还有类似于
onmousedown
、onmouseup
等事件的获取和触发;非form表单的输入框输入已经表单提交;
带有事件的隐藏标签触发;
还有很多,只能通过平时不断的实践来收集和完善功能。
二、安装
从github上下载此项目:
1 | git clone https://github.com/smlins/Interactive-Crawl.git |
进入目录并安装运行该项目所需要的模块:
1 | cd Interactive-Crawl && pip install -r requirements.txt |
最后就可以运行该项目
1 | python crawler.py http://example.com |
可通过python crawler.py -h
来查看一些可选参数
1 | 可选参数: |
三、用法
1. 基础用法
1 | 本次演示爬取本地搭建的dvwa页面,与logout有关的链接和事件一律不触发(不退出登陆),另外带上Cookie |
- 若无需显示浏览器界面,在后面加上
--headless
即可;- 若网页图片等媒体资源加载过慢时,可加上
--intercept-request
参数禁止其加载,从而加快页面加载;
2. 结合xray进行漏洞扫描
1 | 以被动扫描模式启动xray |
四、问题总结
  该爬虫脚本主要是采用Python
的pyppeteer
模块编写,目前只支持单个网站的线性爬取,速度较慢,日后再寻思将优化方案。Python也有一些局限性,例如多线程只能并发无法做到并行,故i/o
编程使用协程是最优方案,pyppeteer
本身也存在一些问题尚未修复,自己还是得研究下Chrome Devtools
协议的使用,指不定以后就用Golang语言来完成此脚本。