SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI
GitHub: SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI
一款面向安全学习者的礼貌型 Web 漏洞扫描器,结合 AI 辅助报告功能,用于非破坏性地检测并报告常见的 Web 安全配置问题。
Stars: 27 | Forks: 0
# 学习级别的 AI Web 漏洞扫描器
**运行 python app.py 之后**

**运行 mainScaner.py 之后**

**运行 cd Reports, python -m http.server 8080 之后**

**JSON 报告示例**

**HTML 报告示例**

**AI 帮助中心** **1).**  **2).** 
**发送前未进行匿名化处理**

**发送前已进行匿名化处理**

# 目录
- [核心功能](#key-features)
- [扫描器的功能与限制](#what-this-scanner-does-and-doesnt)
- [环境要求](#requirements)
- [文件结构](#files)
- [安装说明](#installation)
- [用法与命令行参数](#usage--command-line-arguments)
- [示例](#examples)
- [输出文件与报告格式](#output-files--report-format)
- [内部机制与设计决策](#internals--design-decisions)
- [扩展扫描器](#extending-the-scanner)
- [安全与法律声明](#safety--legal-notes)
- [贡献指南](#contributing)
- [联系/致谢](#contact--acknowledgements)
# 核心功能
- 基于队列的礼貌爬虫(无递归线程生成)。
- 针对主机的速率限制(可通过 `--delay` 配置),避免猛烈请求服务器
- `robots.txt` 感知(扫描器会检查并尽可能遵守规则)。
[](https://github.com/SagarBiswas-MultiHAT/AI_Web_Vulnerability_Scanner/actions)
[](https://www.python.org/)
[](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI)
[](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI/blob/main/LICENSE)
[](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI/commits)
[](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI/issues)
一个适合放入作品集的、**学习级别**的 Web 漏洞扫描器,以及轻量级的 **AI 辅助报告查看器**。本项目展示了一种礼貌、非破坏性的方法,用于爬取和发现常见的 Web 安全问题(安全标头、不安全的 cookie 标志、反射型 XSS 启发式检测以及基础的基于错误的 SQL 注入指示器)。它内置了一个基于 Flask 的小型 AI 代理,旨在为报告内的 AI 辅助功能提供支持(可选)。
图片
**运行 python app.py 之后**

**运行 mainScaner.py 之后**

**运行 cd Reports, python -m http.server 8080 之后**

**JSON 报告示例**

**HTML 报告示例**

**AI 帮助中心** **1).**  **2).** 
**发送前未进行匿名化处理**

**发送前已进行匿名化处理**

快速解释 — 基于队列的爬虫、礼貌爬虫与无递归线程生成(适合初学者)
#### **1.** 基于队列的爬虫 **基于队列的爬虫**使用**单一共享工作队列**来管理所有需要访问的 URL。 **工作原理(概念上):** 1. 从基础 URL 开始 → 将其放入队列 2. 工作线程重复执行: - 从队列中取出**一个 URL** - 获取页面 - 提取链接 - 将**新的、允许的 URL** 添加回同一队列 3. 重复此过程,直到队列为空或达到深度限制 **这意味着:** - 每个工作线程一次处理**一个 URL** - 对扫描内容有**集中控制** - 爬取顺序、深度和限制保持可预测 #### **2.** 礼貌爬虫 **礼貌爬虫**的设计初衷是**不给服务器带来压力或造成损害**。 在此扫描器中,礼貌性包括: - ⏱ 针对主机的速率限制 (`--delay`) - 🤖 遵守 `robots.txt` - 🌱 仅限 GET 请求(非破坏性) - 🚫 无暴力破解或 payload 泛洪 - 🧵 受控的线程数量 扫描器不会猛烈请求网站,而是表现得像一个**谨慎的人类在使用浏览器**。 #### **3.** 无递归线程生成(关键设计选择) 这解释了爬虫**刻意不做**的事情。 **✘ 糟糕的设计(递归生成线程):**
| |
| ------------------------------ |
| 线程 A 访问 URL A |
| └── 生成线程 B 用于链接 B |
| └── 生成线程 C 用于链接 C |
| └── 生成线程 D 用于链接 D |
**线程**是一个轻量级的执行单元,允许程序**并行工作(并行意味着多个任务同时执行,而不是一个接一个地执行。)**。
**这种方法的问题:**
- 无限制的线程增长
- 失去对并发的控制
- 服务器不堪重负
- 扫描器耗尽内存或 socket
- 难以执行延迟和爬取深度
这种模式被称为**递归线程生成** —— 每一个发现的链接都会创建新线程。
### ✓ 本扫描器的替代方案是什么?
[ 队列 ]
↓
工作线程池(固定大小)
↓
获取 → 提取 → 入队(回到队列)
一个等同于 `--threads` 设置(默认:10)的固定线程池。线程在启动时创建一次并被重复使用 —— 不会为每个发现的链接创建新线程。
- 线程只创建**一次**
- 线程数量是**固定的**(`--threads`)
- **没有任何线程会创建另一个线程**
- 发现的链接被视为**数据**,而不是新的执行上下文
#### 为什么这种设计被认为是最佳实践?
| 方面 | 基于队列的爬虫 | 递归生成 |
| ---------------------- | ---------------------- | ------------------ |
| 线程控制 | ✅ 固定且可预测 | ❌ 无限制 |
| 速率限制 | ✅ 可强制执行 | ❌ 困难 |
| 服务器安全 | ✅ 礼貌 | ❌ 激进 |
| 内存安全 | ✅ 稳定 | ❌ 有风险 |
| 调试 | ✅ 更简单 | ❌ 混乱 |
| 法律/伦理安全 | ✅ 安全得多 | ❌ 有风险 |
这就是为什么**专业工具和搜索引擎爬虫**使用基于队列的设计。
**结果:** 更安全的扫描、可预测的行为、符合伦理的爬取以及更容易的扩展性。