xsscrapy及scrapy框架简介
XSScrapy介绍
XSScrapy是基于scrapy爬虫框架实现的,是一个快速、直接的XSS漏洞检测爬虫,只需要一个URL,它便可以帮助你发现XSS跨站脚本漏洞。
基本使用命令:
./xsscrapy.py -u http://www.xxxx.com
需要登录时,加上账号、密码作为参数即可,也可以直接传递cookie:
./xsscrapy.py -u http://something.com/login_page -l loginname -p password
XSScrapy的XSS漏洞攻击测试向量将会覆盖
Http头中的Referer字段 User-Agent字段 Cookie 表单(包括隐藏表单) URL参数 URL末尾,如 www.example.com/<script>alert(1)</script> 跳转型XSS |
缺陷:Scrapy并不是一个浏览器,所以对AJAX无能为力;不支持存储型xss注入检查
xsscrapy源码:https://github.com/DanMcInerney/xsscrapy
xsscrapy其实是一个scrapy框架的项目,要理解xsscrapy,必须先了解scrapy的运作机制。先简单介绍一下scrapy的框架结构,然后分析xsscrapy的整体代码实现思路。
scrapy框架简介
- Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛
- 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便
一、安装
pip install scrapy
二、创建Scrapy项目,四部曲
1、新建爬虫项目:scrapy startprojection 项目名称
创建爬虫文件:scrapy genspider 文件名称 域名
2、明确目标:编写items.py,明确要抓取的字段
3、制作爬虫:spiders/xxspider.py,定义爬虫名、start_url、allowed_domain,parse中进行数据的获取付给item,并将item传给pipline
4、存储内容:piplines.py,处理内容的存储,第一次使用时初始化,spider结束后才关闭。
创建Scrapy项目后,scrapy框架会自动生成items.py、spiders.py、piplines.py、middleware.py、settings.py等文件。
三、scrapy框架介绍
- Scrapy Engine:引擎,处理整个系统的数据流处理,触发事物,框架的核心
- Spiders:爬虫,定义了爬取的逻辑和网页内容的解析规则,主要负责发出初始请求、解析响应给管道或者发起新的请求
- Scheduler:调度器,接受引擎发过来的请求,并将其加入队列中,在引擎再次请求时将请求提供给引擎
- Downloader:下载器,下载网页内容,并将下载内容返回给spider
- ItemPipeline:项目管道,负责处理spider从网页中抽取的数据,主要是负责详细分析数据、存储数据
- Downloader Middlewares:下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块
- Spider Middlewares:spider中间件,位于引擎和spider之间的框架,主要处理spider输入的请求和输出的结果及新的请求的处理
对spider来说,爬取的循环类似如下过程:
-
以初始的URL初始化Request,并设置回调函数。 当该request下载完毕并返回时,将生成response,并作为参数传给该回调函数。
spider中初始的request是通过调用
start_requests()
来获取的。start_requests()
读取start_urls
中的URL, 并以parse
为回调函数生成Request
。 -
在回调函数内分析返回的(网页)内容,返回
Item
对象或者Request
或者一个包括二者的可迭代容器。 返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数(函数可相同)。 -
在回调函数内,可以使用 选择器(Selectors) (也可以使用BeautifulSoup, lxml 或者想用的任何解析器) 来分析网页内容,并根据分析的数据生成item。
-
最后,由spider返回的item将被存到数据库(由某些 Item Pipeline 处理)存入到文件中。