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输入的请求和输出的结果及新的请求的处理

xsscrapy及scrapy框架简介

 

对spider来说,爬取的循环类似如下过程:

  1. 以初始的URL初始化Request,并设置回调函数。 当该request下载完毕并返回时,将生成response,并作为参数传给该回调函数。

    spider中初始的request是通过调用 start_requests() 来获取的。 start_requests() 读取start_urls 中的URL, 并以 parse 为回调函数生成 Request 。

  2. 在回调函数内分析返回的(网页)内容,返回 Item 对象或者 Request 或者一个包括二者的可迭代容器。 返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数(函数可相同)。

  3. 在回调函数内,可以使用 选择器(Selectors) (也可以使用BeautifulSoup, lxml 或者想用的任何解析器) 来分析网页内容,并根据分析的数据生成item。

  4. 最后,由spider返回的item将被存到数据库(由某些 Item Pipeline 处理)存入到文件中。