近期研究业界安卓APP主要漏洞类型。wooyun算是国内最有名的漏洞报告平台,总结一下这上面的漏洞数据对后面测试与分析漏洞趋势有指导意义,因此写一个爬虫。
不再造轮子了,使用Python的Scrapy框架实现之。
一、安装
64位系统安装时,一定要注意Python的位数与Scrapy及其依赖库位数一致。否则各种坑爹Bug
- 安装32位Python 2.7
- 下载并安装pip(方便自动安装管理依赖库)
https://pypi.python.org/pypi/pip/7.1.2
下载源码,python setup.py install安装之
- pip install scrapy
遇到问题1:ERROR: ‘xslt-config‘ 不是内部或外部命令,也不是可运行的程序
下载个lxml-3.5.0b1.win32-py2.7.exe安装 ,
https://pypi.python.org/pypi/lxml/3.5.0b1#downloads
- 运行demo代码
遇到问题2:exceptions.ImportError: No module named win32api
从http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/
这里下载一下pywin32程序,安装之。
以上,框架安装完毕。
二、爬虫怎么写
爬wooyun网站漏洞的工程,目录结构如下:
修改items.py(抓取数据的容器):
# -*- coding:gb2312 -*- import scrapy from scrapy.item import Item, Field class Website(scrapy.Item): url = Field() title = Field()
编写spider.py(顾名思义,主要功能这里实现):
# -*- coding:gb2312 -*- from scrapy.spiders import CrawlSpider,Rule from scrapy.linkextractors.sgml import SgmlLinkExtractor from scrapy.selector import Selector from wooyun.items import Website import sys sys.stdout=open(‘output.txt‘, ‘wb‘) class WooyunSpider(CrawlSpider): name = "wooyun" allowed_domains = ["wooyun.org"] start_urls = [ "http://wooyun.org/bugs/", ] rules = ( Rule(SgmlLinkExtractor(allow=(‘bugs/page/([\w]+)‘, ),)), #http://wooyun.org/bugs/page/3 Rule(SgmlLinkExtractor(allow=(‘bugs/wooyun-‘, )), callback=‘parse_item‘), ) def parse_item(self, response): sel = Selector(response) items = [] item = Website() item[‘title‘] = sel.xpath(‘/html/head/title/text()‘).extract() item[‘url‘] = response items.append(item) return items
以上爬取所有漏洞名称,及url。功能根据需求扩展即可。
str1 = sel.xpath(‘//h3[@class="wybug_type"]/text()‘).extract() ‘‘‘ str1 = "漏洞类型: 设计缺陷/逻辑错误" ‘‘‘
时间: 2024-10-13 18:14:32