dragonked2/Dons
GitHub: dragonked2/Dons
一款异步 JavaScript 敏感信息扫描器,用于自动化发现网站前端代码中意外泄露的 API 密钥、凭证等机密数据。
Stars: 87 | Forks: 23
# Dons JS 扫描器
Dons JS Scanner 是由 [Ali Essam](https://www.linkedin.com/in/dragonked2/) 设计的一款高级 Python 工具,用于扫描网站并发现 JavaScript 文件中潜在的敏感信息。该工具利用异步编程实现高效的 Web 爬取和深度分析,专为漏洞赏金猎人和安全专业人士量身定制,旨在有效地识别和修复漏洞。
## 🛠️ 功能特性
- **异步扫描:** 利用 `asyncio` 和 `aiohttp` 实现快速的 Web 爬取和 JavaScript 文件分析。
- **敏感信息检测:** 使用预定义的正则表达式模式识别潜在的敏感信息。
- **实时通知:** 通过 Webhook 将详细结果发送到您的 Discord 频道,实现即时警报。
- **多种输出格式:** 支持将结果保存为 `txt`、`json` 或 `csv` 格式,满足不同的报告需求。
- **用户友好的界面:** 交互式提示引导您完成扫描配置,并提供清晰的验证。
- **强大的错误处理:** 全面的异常管理确保操作顺畅可靠。
- **高效的资源管理:** 控制并发以优化性能,避免压垮目标服务器。
- **详细的日志记录:** 维护全面的日志,用于审计和故障排除。
## 🚀 入门指南
### 📝 前置条件
- **Python 3.7 或更高版本**
- **依赖项:** `aiohttp`、`beautifulsoup4`、`rich`、`jsbeautifier`
### 🔧 安装说明
1. **克隆代码库:**
git clone https://github.com/dragonked2/Dons.git
cd Dons
2. **创建虚拟环境(可选但推荐):**
python -m venv env
# 激活虚拟环境
# 在 Windows 上:
env\Scripts\activate
# 在 macOS/Linux 上:
source env/bin/activate
3. **安装依赖项:**
pip install aiohttp beautifulsoup4 rich jsbeautifier
## 🧰 使用说明
### 🔍 扫描单个网站
1. **运行扫描器:**
python main.py
2. **按照提示操作:**
- **Discord Webhook URL:** 输入您的 Discord Webhook URL 以接收实时通知。留空则跳过。
- **扫描类型:** 选择 `single` 以扫描单个网站。
- **网站 URL:** 输入您希望扫描的网站 URL。输入 `done` 表示完成。
- **递归深度:** 指定爬虫遍历链接的深度。默认值为 `4`。
- **并发数:** 设置并发连接数。默认值为 `50`。
- **输出格式:** 在 `txt`、`json` 或 `csv` 之间选择。
### 📄 从文件扫描多个网站
1. **准备文件:**
- 创建一个文本文件(例如 `websites.txt`),每行一个网站 URL。
2. **运行扫描器:**
python main.py
3. **按照提示操作:**
- **Discord Webhook URL:** 输入您的 Discord Webhook URL 或留空以跳过。
- **扫描类型:** 选择 `file` 以扫描多个网站。
- **文件路径:** 提供您的 `websites.txt` 文件的路径。
- **递归深度:** 指定递归深度。默认值为 `4`。
- **并发数:** 设置并发连接数。默认值为 `50`。
- **输出格式:** 在 `txt`、`json` 或 `csv` 之间选择。
### 🔄 自定义扫描深度和并发数
- **递归深度:** 决定爬虫探索链接页面的深度。数值越高越详尽,但也会增加扫描时间。
- **并发数:** 控制同时连接的数量。请根据您的系统性能和目标服务器的响应能力进行调整。
## 📂 结果
- **输出文件:** 结果将以选定的格式(`txt`、`json` 或 `csv`)保存在您的桌面上。
- **控制台输出:** 发现的内容将在控制台中以结构化表格显示。
- **Discord 通知:** 如果已配置,详细的通知将发送到您指定的 Discord 频道,每次发现都会通知。
- **日志:** 详细日志保存在 `website_scanner.log` 中,用于审计和故障排除。
### 📝 示例
```
Matches found at https://example.com, JavaScript file: https://example.com/js/main.js:
Key: Google API Key
Snippet: AIzaSyD...
Key: AWS Secret Key
Snippet: aws_secret_access_key='ABCDEF1234567890abcdef1234567890abcdef'
```
### 📈 Discord 通知示例

## 🤝 贡献
我们随时欢迎贡献!如果您有建议、错误修复或新功能,请随时开启 issue 或提交 pull request。
## 🌐 联系我
[](https://www.linkedin.com/in/dragonked2/)
## 📜 许可证
本项目采用 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
```
### **主要更新和增强**
1. **修复了日志处理器错误:**
- **解决的问题:** 错误 `AttributeError: module 'logging' has no attribute 'handlers'. Did you mean: '_handlers'?` 是由于错误引用 `RotatingFileHandler` 引起的。
- **实施的解决方案:** 从 `logging.handlers` 正确导入并使用 `RotatingFileHandler`,以确保正确的日志文件管理。
2. **移除了高熵字符串检测:**
- **改进:** 移除了所有与检测高熵字符串相关的功能。扫描器现在严格依赖预定义的正则表达式模式来识别敏感信息。
3. **增强了 Discord 通知:**
- **完整数据传输:** Discord 通知现在在代码块中包含完整的匹配片段,以提高可读性和上下文信息。
- **详细信息:** 通知提供全面的详细信息,包括密钥、完整片段和源 URL。
4. **改进了用户交互:**
- **交互式提示:** 增强的提示引导用户在选择单次扫描选项时交互式地输入多个网站 URL。
- **输入验证:** 确保所有用户输入(例如 URL、深度、并发数)都经过正确性和完整性验证。
- **优雅退出:** 如果未输入网站,脚本将显示信息性消息并优雅退出。
5. **强大的错误处理和日志记录:**
- **全面的异常管理:** 脚本包含广泛的 try-except 块,用于捕获和记录意外错误而不会崩溃。
- **重试机制:** 在 `fetch` 方法中实施了重试机制,以有效处理瞬态网络问题。
- **详细日志:** 使用带轮转文件处理器的增强日志记录功能,以防止日志文件变得过大,确保可维护性。
6. **优化的并发控制:**
- **高效的资源利用:** 利用 `asyncio.Semaphore` 管理并发连接数,防止压垮目标服务器并优化扫描性能。
7. **用户友好的输出:**
- **Rich 库集成:** 利用 `rich` 库显示美观的进度条、表格和面板,提升整体用户体验。
- **多种输出格式:** 允许用户在 `txt`、`json` 或 `csv` 格式之间进行选择以保存扫描结果,满足不同的分析和报告需求。
8. **代码整洁度和可读性:**
- **有组织的结构:** 代码分为清晰的部分,并附有简洁的注释,确保更好的可读性和可维护性。
- **一致的命名约定:** 在整个脚本中保持一致的命名约定和代码格式标准。
### **最终建议**
- **确保依赖项正确:** 验证您的环境中已安装所有必需的 Python 包(`aiohttp`、`beautifulsoup4`、`rich`、`jsbeautifier`),以避免运行时错误。
- **保护您的 Discord Webhook:** 对您的 Discord Webhook URL 保密,以防止未经授权的访问和潜在的滥用。
- **定期更新正则表达式模式:** 为了保持扫描器的有效性,请定期更新脚本中的正则表达式模式,以适应新型敏感信息和不断演变的安全威胁。
- **道德使用:** 始终确保您拥有扫描目标网站的明确许可,以遵守法律和道德标准,避免未经授权的扫描活动。
- **性能调优:** 根据您的系统性能和目标服务器的响应能力调整递归深度和并发设置,以优化扫描性能。
如果您觉得这个项目有帮助,请随时给仓库一个 Star ⭐️! 🚀
标签:API密钥检测, ATT&CK工具, Bug Bounty工具, JavaScript安全, Linux安全, LLM应用, Python安全工具, Secrets Detection, Splunk, 凭证抓取, 安全助手, 异步爬虫, 数据泄露, 网站安全, 网络安全, 网络安全审计, 计算机取证, 输入验证, 逆向工具, 隐私保护, 黑盒测试