对于crawlergo|rad|burpsuite|awvs爬虫的对比
字数 3031 2025-08-15 21:33:37

Web爬虫工具对比分析及使用指南

1. 测试环境与工具概述

本次测试对比了多种Web爬虫工具在相同测试站点(http://testphp.vulnweb.com)上的表现,包括:

  1. 手写基准爬虫:基于Python的简单爬虫,仅抓取a标签下的href和script标签下的src
  2. crawlergo:基于Chrome的浏览器爬虫
  3. rad:轻量级爬虫工具
  4. Burp Suite Pro v202012:专业Web安全测试工具中的爬虫模块
  5. AWVS 2019:Acunetix Web Vulnerability Scanner中的爬虫模块

2. 各工具详细分析

2.1 手写基准爬虫

实现代码

from urllib.parse import urlparse,urljoin
from bs4 import BeautifulSoup
import requests
import validators
from queue import Queue
import threading

requests.packages.urllib3.disable_warnings()

class jsfinder():
    def __init__(self,url,cookie=""):
        self.baseUrl = self.return_entire_url(url)
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
            "cookie": cookie}
        self.q = Queue()
        self.crawed_list = set()
        self.urlList = []
        self.q.put(url)
        self.spider_status = 1
    
    def return_entire_url(self,url):
        if url is not None:
            if url.startswith('http') or urlparse(url).scheme:
                return url.strip()
            else:
                if self.baseUrl == "":
                    self.baseUrl = "http://" + url
                print(self.baseUrl)
                return urljoin(self.baseUrl,url.strip())
        else:
            pass
    
    def spider(self):
        while(not self.q.empty() or self.spider_status):
            url = self.q.get()
            if url in self.crawed_list :
                continue
            print("requesting:",url)
            try:
                resp = requests.get(url=url, headers=self.headers, timeout=5, verify=False)
                self.htmlParse(resp)
                self.crawed_list.add(url)
            except:
                print("requests error:",url)
            if self.spider_status == 1:
                time.sleep(5)
                self.spider_status = 0
        print(self.q.qsize())
    
    def htmlParse(self,response):
        tempList = []
        blacklist = ['#',None,'javascript:']
        soup = BeautifulSoup(response.text.encode('utf-8'), 'html.parser')
        for href in soup.find_all('a'):
            tempList.append(href.get('href'))
        for href in soup.find_all('script'):
            tempList.append(href.get('src'))
        tempList = list(set(tempList)-set(blacklist))
        for i in tempList:
            url = self.return_entire_url(i)
            if validators.url(url):
                print("get:",url)
                if url not in self.crawed_list :
                    self.urlList.append(url)
                    if urlparse(url).netloc in self.baseUrl:
                        self.q.put(url)

特点

  • 仅抓取a标签的href和script标签的src
  • 使用队列和多线程进行爬取
  • 简单的URL规范化处理
  • 结果包含46个链接,包含许多跨域链接和带参数的URL

2.2 crawlergo

使用示例

#!/usr/bin/python3
# coding: utf-8
import simplejson
import subprocess

def main():
    target = "http://testphp.vulnweb.com/"
    cmd = ["/path/to/crawlergo", "-c", "/usr/bin/google-chrome", "-o", "json", target]
    rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = rsp.communicate()
    result = simplejson.loads(output.decode().split("--[Mission Complete]--")[1])
    req_list = result["req_list"]
    for req in req_list:
        print(req)

if __name__ == "__main__":
    main()

特点

  • 基于Chrome浏览器,能执行JavaScript
  • 返回48条请求记录
  • 返回数据包含完整的请求信息:URL、方法、headers、数据和来源(source)
  • 能自动填充表单并提交
  • 支持XHR请求的捕获
  • 结果中包含POST请求和表单提交数据

2.3 rad

使用命令

./rad_linux_amd64 --target http://testphp.vulnweb.com --text-output rad.log

特点

  • 轻量级命令行工具
  • 返回42条记录,去重后39条
  • 输出简洁,仅包含请求方法和URL
  • 能发现Mod_Rewrite_Shop目录下的路径
  • 支持GET和POST请求的识别

2.4 Burp Suite Pro

特点

  • 扫描速度较慢,但结果数量随时间增加
  • 初始截图显示49个结果,后续增加到100+
  • 能发现大量Mod_Rewrite_Shop目录下的路径
  • 包含详细的响应信息:状态码、内容类型、响应长度等
  • 专业级工具,功能全面但资源消耗较大

2.5 AWVS 2019

特点

  • 扫描速度较快(可能是自家网站优化原因)
  • 返回405个结果
  • 大量结果集中在Mod_Rewrite模块下
  • 包含许多深层目录结构和文件
  • 专业扫描器,包含安全扫描功能

3. 工具对比分析

3.1 数据量对比

工具 初始结果数量 特点
手写爬虫 46 包含跨域链接
crawlergo 48 包含完整请求信息
rad 42(去重39) 简洁输出
Burp Suite 49(增至100+) 随时间增加
AWVS 405 大量Mod_Rewrite结果

3.2 功能对比

功能 手写爬虫 crawlergo rad Burp Suite AWVS
JavaScript执行 ✔️ ✔️ ✔️
表单自动填充 ✔️ ✔️ ✔️
XHR请求捕获 ✔️ ✔️ ✔️
请求详情返回 ✔️ ✔️ ✔️
扫描速度
资源消耗
专业安全扫描 ✔️ ✔️

3.3 数据质量分析

  1. 手写爬虫 vs rad

    • 17个共同发现的URL
    • rad发现了更多Mod_Rewrite_Shop目录下的路径
  2. 手写爬虫 vs crawlergo

    • 18个共同发现的URL
    • crawlergo发现了更多动态生成的URL和表单提交
  3. crawlergo vs rad

    • 结果高度相似
    • crawlergo提供更详细的请求信息
  4. Burp Suite vs AWVS

    • 都发现大量URL
    • AWVS结果更多集中在Mod_Rewrite模块
    • Burp Suite提供更详细的响应分析

4. 使用建议

4.1 工具选择指南

  1. 快速URL收集

    • 首选:rad(轻量快速)
    • 备选:crawlergo(更详细但稍重)
  2. 完整请求分析

    • 首选:crawlergo(提供完整请求信息)
    • 备选:Burp Suite(更全面但更重)
  3. 安全扫描

    • 首选:AWVS(专业扫描)
    • 备选:Burp Suite(可定制性高)
  4. 简单需求/定制开发

    • 手写爬虫(灵活可控)

4.2 最佳实践

  1. crawlergo使用技巧

    • 结合Chrome使用以获得最佳效果
    • 解析输出时注意"Mission Complete"分隔符
    • 可利用source字段区分请求来源(DOM/XHR/Navigation等)
  2. rad高效使用

    • 适合批量扫描多个目标
    • 输出可重定向到文件便于后续分析
    • 可结合其他工具进行后续处理
  3. Burp Suite优化

    • 适当调整爬虫速度设置
    • 利用Scope限制目标范围
    • 结合其他模块进行综合测试
  4. AWVS扫描建议

    • 对自家产品优化较好
    • 适合全面安全评估
    • 注意资源消耗,避免影响正常业务

5. 技术细节深入

5.1 crawlergo高级功能

  1. 请求来源(source)类型

    • Target:初始目标
    • DOM:从DOM解析的URL
    • XHR:Ajax请求
    • Navigation:导航请求
    • OpenWindow:通过window.open触发的请求
  2. 表单自动填充

    • 自动识别表单并填充测试数据
    • 支持复杂表单提交
    • 可捕获提交后的请求和响应
  3. 动态内容处理

    • 完全支持JavaScript渲染
    • 能捕获动态生成的URL
    • 处理单页应用(SPA)效果较好

5.2 rad核心优势

  1. 轻量高效

    • 单二进制文件,无依赖
    • 低资源消耗
    • 快速启动和扫描
  2. 输出简洁

    • 易于解析和处理
    • 可轻松集成到自动化流程
    • 适合大规模扫描任务
  3. 基础功能完备

    • 支持基本认证
    • 处理常见Web技术
    • 适度的JavaScript支持

5.3 专业工具深度功能

  1. Burp Suite爬虫模块

    • 与代理工具深度集成
    • 支持自定义爬取策略
    • 可结合主动/被动扫描
  2. AWVS扫描引擎

    • 深度内容分析
    • 高级安全检测算法
    • 全面的漏洞检测

6. 总结与推荐

6.1 工具对比总结

维度 手写爬虫 crawlergo rad Burp Suite AWVS
易用性
功能性 极高 极高
性能
详细度 极高
适用场景 定制开发 全面爬取 快速扫描 专业测试 安全审计

6.2 推荐方案

  1. 日常安全测试

    • crawlergo + rad组合
    • 快速全面覆盖
  2. 专业渗透测试

    • Burp Suite全功能使用
    • 结合手动测试
  3. 自动化监控

    • rad定期扫描
    • 配合自定义脚本分析
  4. 定制开发基础

    • 参考手写爬虫实现
    • 根据需求扩展功能

通过合理选择和组合这些工具,可以构建高效的Web应用爬取和安全测试工作流程,满足不同场景下的需求。

Web爬虫工具对比分析及使用指南 1. 测试环境与工具概述 本次测试对比了多种Web爬虫工具在相同测试站点(http://testphp.vulnweb.com)上的表现,包括: 手写基准爬虫 :基于Python的简单爬虫,仅抓取a标签下的href和script标签下的src crawlergo :基于Chrome的浏览器爬虫 rad :轻量级爬虫工具 Burp Suite Pro v202012 :专业Web安全测试工具中的爬虫模块 AWVS 2019 :Acunetix Web Vulnerability Scanner中的爬虫模块 2. 各工具详细分析 2.1 手写基准爬虫 实现代码 特点 仅抓取a标签的href和script标签的src 使用队列和多线程进行爬取 简单的URL规范化处理 结果包含46个链接,包含许多跨域链接和带参数的URL 2.2 crawlergo 使用示例 特点 基于Chrome浏览器,能执行JavaScript 返回48条请求记录 返回数据包含完整的请求信息:URL、方法、headers、数据和来源(source) 能自动填充表单并提交 支持XHR请求的捕获 结果中包含POST请求和表单提交数据 2.3 rad 使用命令 特点 轻量级命令行工具 返回42条记录,去重后39条 输出简洁,仅包含请求方法和URL 能发现Mod_ Rewrite_ Shop目录下的路径 支持GET和POST请求的识别 2.4 Burp Suite Pro 特点 扫描速度较慢,但结果数量随时间增加 初始截图显示49个结果,后续增加到100+ 能发现大量Mod_ Rewrite_ Shop目录下的路径 包含详细的响应信息:状态码、内容类型、响应长度等 专业级工具,功能全面但资源消耗较大 2.5 AWVS 2019 特点 扫描速度较快(可能是自家网站优化原因) 返回405个结果 大量结果集中在Mod_ Rewrite模块下 包含许多深层目录结构和文件 专业扫描器,包含安全扫描功能 3. 工具对比分析 3.1 数据量对比 | 工具 | 初始结果数量 | 特点 | |------|-------------|------| | 手写爬虫 | 46 | 包含跨域链接 | | crawlergo | 48 | 包含完整请求信息 | | rad | 42(去重39) | 简洁输出 | | Burp Suite | 49(增至100+) | 随时间增加 | | AWVS | 405 | 大量Mod_ Rewrite结果 | 3.2 功能对比 | 功能 | 手写爬虫 | crawlergo | rad | Burp Suite | AWVS | |------|---------|----------|-----|-----------|------| | JavaScript执行 | ❌ | ✔️ | ❌ | ✔️ | ✔️ | | 表单自动填充 | ❌ | ✔️ | ❌ | ✔️ | ✔️ | | XHR请求捕获 | ❌ | ✔️ | ❌ | ✔️ | ✔️ | | 请求详情返回 | ❌ | ✔️ | ❌ | ✔️ | ✔️ | | 扫描速度 | 快 | 中 | 快 | 慢 | 快 | | 资源消耗 | 低 | 中 | 低 | 高 | 高 | | 专业安全扫描 | ❌ | ❌ | ❌ | ✔️ | ✔️ | 3.3 数据质量分析 手写爬虫 vs rad : 17个共同发现的URL rad发现了更多Mod_ Rewrite_ Shop目录下的路径 手写爬虫 vs crawlergo : 18个共同发现的URL crawlergo发现了更多动态生成的URL和表单提交 crawlergo vs rad : 结果高度相似 crawlergo提供更详细的请求信息 Burp Suite vs AWVS : 都发现大量URL AWVS结果更多集中在Mod_ Rewrite模块 Burp Suite提供更详细的响应分析 4. 使用建议 4.1 工具选择指南 快速URL收集 : 首选:rad(轻量快速) 备选:crawlergo(更详细但稍重) 完整请求分析 : 首选:crawlergo(提供完整请求信息) 备选:Burp Suite(更全面但更重) 安全扫描 : 首选:AWVS(专业扫描) 备选:Burp Suite(可定制性高) 简单需求/定制开发 : 手写爬虫(灵活可控) 4.2 最佳实践 crawlergo使用技巧 : 结合Chrome使用以获得最佳效果 解析输出时注意"Mission Complete"分隔符 可利用source字段区分请求来源(DOM/XHR/Navigation等) rad高效使用 : 适合批量扫描多个目标 输出可重定向到文件便于后续分析 可结合其他工具进行后续处理 Burp Suite优化 : 适当调整爬虫速度设置 利用Scope限制目标范围 结合其他模块进行综合测试 AWVS扫描建议 : 对自家产品优化较好 适合全面安全评估 注意资源消耗,避免影响正常业务 5. 技术细节深入 5.1 crawlergo高级功能 请求来源(source)类型 : Target:初始目标 DOM:从DOM解析的URL XHR:Ajax请求 Navigation:导航请求 OpenWindow:通过window.open触发的请求 表单自动填充 : 自动识别表单并填充测试数据 支持复杂表单提交 可捕获提交后的请求和响应 动态内容处理 : 完全支持JavaScript渲染 能捕获动态生成的URL 处理单页应用(SPA)效果较好 5.2 rad核心优势 轻量高效 : 单二进制文件,无依赖 低资源消耗 快速启动和扫描 输出简洁 : 易于解析和处理 可轻松集成到自动化流程 适合大规模扫描任务 基础功能完备 : 支持基本认证 处理常见Web技术 适度的JavaScript支持 5.3 专业工具深度功能 Burp Suite爬虫模块 : 与代理工具深度集成 支持自定义爬取策略 可结合主动/被动扫描 AWVS扫描引擎 : 深度内容分析 高级安全检测算法 全面的漏洞检测 6. 总结与推荐 6.1 工具对比总结 | 维度 | 手写爬虫 | crawlergo | rad | Burp Suite | AWVS | |------|---------|----------|-----|-----------|------| | 易用性 | 中 | 高 | 高 | 中 | 中 | | 功能性 | 低 | 高 | 中 | 极高 | 极高 | | 性能 | 高 | 中 | 高 | 低 | 中 | | 详细度 | 低 | 高 | 低 | 极高 | 高 | | 适用场景 | 定制开发 | 全面爬取 | 快速扫描 | 专业测试 | 安全审计 | 6.2 推荐方案 日常安全测试 : crawlergo + rad组合 快速全面覆盖 专业渗透测试 : Burp Suite全功能使用 结合手动测试 自动化监控 : rad定期扫描 配合自定义脚本分析 定制开发基础 : 参考手写爬虫实现 根据需求扩展功能 通过合理选择和组合这些工具,可以构建高效的Web应用爬取和安全测试工作流程,满足不同场景下的需求。