使用scrapy爬取sebug漏洞库

2018-02-05 16:21:56 浏览数 (1)

微信号:freebuf

由于项目需要抓取sebug的漏洞库内容,就利用scrapy框架简单写了个抓取sebug的爬虫,并存入数据库,mysql或mongodb,这里以mysql为例。

关于scrapy

Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

一图胜千言哈:

操作步骤

1,先建立个scrapy项目,会自动生成一个目录结构

Scrapy startproject sebug

2,分析下sebug的漏洞详情页面内容,在item.py定义要抓取的数据结构

3,sebug的一个URL:http://sebug.net/vuldb/vulnerabilities?start=1 遍历start可以列出所有漏洞的列表。基于CrawkSpider定义一个爬虫类,并添加相应的爬虫规则,然后引入HtmlXPathSelector解析网页,提取所需的页面内容,存入item。

爬虫规则分析

(1)URL以/vuldb/ssvid-xxx 为后缀的网页,调用回调函数处理页面内容,提取数据

Rule(SgmlLinkExtractor(allow=('/vuldb/ssvid-(d{1,6})$',)),callback='parse_vul')

(2)URL如/vuldb/vulnerabilities?start=xxx 的自动抓取网页链接供爬虫处理

Rule(SgmlLinkExtractor(allow=('/vuldb/vulnerabilities?start=(d{1,2})$',)),follow=True)

4,编写pipelines文件,把item存入mysql。

5,在setting.py中添加pipelines:

ITEM_PIPELINES = ['sebug.pipelines.SebugPipeline']

为了防止spider被BAN掉,还可以设置访问延迟和user-agent。

DOWNLOAD_DELAY = 2

RANDOMIZE_DOWNLOAD_DELAY = True

USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'

6,在mysql中创建对应的表结构。

Create table vulninfo (ssv varchar(10) not null,appdir varchar(20),title varchar(50),content mediumtext,publishdate varchar(50))charset=utf8;

7,运行爬虫

scrapy crawl sebugvul

8,运行截图

代码地址:

https://github.com/Hongxs/scrapy-sebug

0 人点赞