使用scrapy爬取sebug漏洞库

2015-03-07 +4 207049人围观 ,发现 6 个不明物体 WEB安全

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

关于scrapy

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

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

Scrach,是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。

不太了解scrapy的童鞋看这里:http://doc.scrapy.org/en/0.24/intro/overview.html

一图胜千言哈:

操作步骤

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

相关推荐

这些评论亮了

  • 陈老师 回复
    我还用scrapy写了爬sex8的种子和图
    )30( 亮了
发表评论

已有 6 条评论

取消
Loading...
星明月稀

这家伙太懒,还未填写个人描述!

1 文章数 1 评论数 0 关注者

特别推荐

文章目录

    文章目录

      推荐关注

      官方公众号

      聚焦企业安全

      填写个人信息

      姓名
      电话
      邮箱
      公司
      行业
      职位
      css.php