Skbindas/Api_Scanner_Bot
GitHub: Skbindas/Api_Scanner_Bot
一款基于Python和Playwright的桌面安全扫描工具,用于发现网站API端点并评估安全威胁,最终生成多格式分析报告。
Stars: 1 | Forks: 0
# API Scanner Pro v2.0



## 概述
**API Scanner Pro** 是一款专业的桌面应用程序,用于扫描网站、检测 API endpoint、分析安全威胁以及导出综合报告。它使用 Python 构建,将通过 Playwright 进行的网络拦截与基于启发式的威胁分析以及现代化的 Tkinter GUI 结合在一起。
### 概述 (印地语)
**API Scanner Pro** एक professional desktop application है जो websites को scan करता है, API endpoints detect करता है, security threats analyze करता है, और comprehensive reports export करता है। Python में built, यह Playwright के माध्यम से network interception को heuristic-based threat analysis और modern Tkinter GUI के साथ combine करता है।
## 功能
### 扫描
- 使用 Playwright 进行完整的基于浏览器的网络拦截
- 从捕获的流量中自动检测 API endpoint
- 提取 Cookie、localStorage 和 sessionStorage
- 解析 HTML 元数据和 Open Graph 标签
- 可配置的扫描超时和重试
### 安全分析
- 基于启发式的 URL 威胁检测(网络钓鱼、域名抢注、可疑 TLD)
- HTML 内容分析(隐藏的 iframe、混淆的 JS、可疑的表单)
- 集成 Shodan 获取主机情报(开放端口、CVE、服务)
- 具有严重性级别的风险评分:安全、低、中、高、严重
### 导出
- 包含完整元数据和扫描器版本信息的 JSON 导出
- 为请求、endpoint 和响应分别生成独立文件的 CSV 导出
- 具有专业样式、基于卡片的布局和响应式设计的 HTML 报告
- 通过 ExportManager 进行批量导出,一次性支持所有格式
### 用户界面
- 基于 Tkinter 的现代化 GUI,带有标签页界面
- 异步扫描,提供实时进度反馈
- 专用标签页:Scanner、Security、Results、Reports
- 自定义 widget:StatusBar、URLInput、LogConsole、RiskBadge
## 架构
```
Api_Scanner_Bot/
├── api_scanner/ # Main package
│ ├── __init__.py # Package init, version = "2.0.0"
│ ├── config.py # AppConfig dataclass (env-based settings)
│ ├── exceptions.py # Custom exception hierarchy
│ ├── logger.py # Logging setup (file + console)
│ ├── utils.py # URL validation, rate limiter, retry, serialization
│ ├── main.py # Application entry point
│ ├── scanner/ # Core scanning engine
│ │ ├── models.py # RequestData, ResponseData, ScanResult, etc.
│ │ ├── network_scanner.py # Playwright-based network interception
│ │ ├── storage_analyzer.py # Cookie/storage extraction
│ │ └── meta_analyzer.py # HTML metadata parsing
│ ├── security/ # Security analysis module
│ │ ├── models.py # ThreatReport, SecurityFinding, etc.
│ │ ├── threat_analyzer.py # Heuristic URL/HTML threat detection
│ │ └── shodan_scanner.py # Shodan API integration
│ ├── exporters/ # Report export system
│ │ ├── base.py # BaseExporter abstract class
│ │ ├── json_exporter.py # JSON report generation
│ │ ├── csv_exporter.py # CSV report generation (pandas)
│ │ ├── html_exporter.py # Standalone HTML report generation
│ │ └── export_manager.py # Multi-format export coordinator
│ └── ui/ # Tkinter GUI
│ ├── app.py # Main ScannerApp window
│ ├── async_handler.py # Daemon thread + event loop for async ops
│ ├── widgets.py # Custom reusable widgets
│ ├── scanner_tab.py # URL scan tab
│ ├── security_tab.py # Security analysis tab
│ ├── results_tab.py # Results display tab
│ └── reports_tab.py # Export/reports tab
├── tests/ # Test suite
│ ├── conftest.py # Shared fixtures
│ ├── test_config.py # Config loading tests
│ ├── test_utils.py # Utility function tests
│ ├── test_models.py # Data model tests
│ ├── test_threat_analyzer.py # Threat detection tests
│ └── test_exporters.py # Export system tests
├── logs/ # Application logs
├── .env # Environment configuration (gitignored)
├── .env.example # Example configuration template
├── requirements.txt # Python dependencies
├── pyproject.toml # Project metadata
└── README.md # This file
```
## 安装说明
### 前置条件
- Python 3.11 或更高版本
- pip 包管理器
### 分步设置
```
# 1. 克隆 repository
git clone https://github.com/your-username/Api_Scanner_Bot.git
cd Api_Scanner_Bot
# 2. 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 安装 Playwright 浏览器(扫描所需)
playwright install chromium
# 5. 配置环境
cp .env.example .env
# 使用你的设置编辑 .env(例如,添加你的 Shodan API key)
# 6. 启动应用程序
python3 -m api_scanner.main
```
## 配置
所有配置均通过环境变量进行管理。创建一个 `.env` 文件(参见 `.env.example`):
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `SHODAN_API_KEY` | `""` | 用于主机安全扫描的 Shodan API key |
| `SCAN_TIMEOUT` | `30` | 等待页面扫描的最大秒数 |
| `MAX_RETRIES` | `3` | 失败网络请求的重试次数 |
| `RATE_LIMIT_DELAY` | `1.0` | 速率受限请求之间的最短间隔秒数 |
| `OUTPUT_DIR` | `scan_results` | 用于存储导出报告的目录 |
| `HEADLESS` | `true` | 以 headless 模式运行浏览器(无可见窗口) |
| `LOG_LEVEL` | `INFO` | 日志详细程度:DEBUG、INFO、WARNING、ERROR、CRITICAL |
## 用法
### 启动 GUI
```
python3 -m api_scanner.main
```
### 扫描工作流
1. 在 Scanner 标签页中输入目标 URL
2. 点击“Scan”开始基于浏览器的分析
3. 在 Results 标签页中查看捕获的 API endpoint 和网络请求
4. 检查 Security 标签页以获取威胁分析结果
5. 通过 Reports 标签页以 JSON、CSV 或 HTML 格式导出报告
### 导出格式
- **JSON**:包含元数据的完整结构化数据,非常适合编程访问
- **CSV**:拆分为 requests.csv、api_endpoints.csv 和 responses.csv 的表格数据
- **HTML**:包含内嵌 CSS 的独立专业报告,适合分享
## 开发
### 设置
```
# 克隆并以开发模式安装
git clone https://github.com/your-username/Api_Scanner_Bot.git
cd Api_Scanner_Bot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
playwright install chromium
```
### 运行测试
```
# 运行完整的 test suite
python3 -m pytest tests/ -v
# 运行特定的 test module
python3 -m pytest tests/test_threat_analyzer.py -v
# 带有覆盖率运行(如果已安装 pytest-cov)
python3 -m pytest tests/ --cov=api_scanner -v
```
### 代码质量
```
# 检查所有文件编译无错误
python3 -m py_compile api_scanner/__init__.py
python3 -m py_compile api_scanner/main.py
# 验证 imports 是否正常
python3 -c "import api_scanner; print(api_scanner.__version__)"
```
## 测试 (印地语)
```
# 运行完整的 test suite
python3 -m pytest tests/ -v
# 测试特定的 module
python3 -m pytest tests/test_threat_analyzer.py -v
```
## 许可证
该项目采用 MIT 许可证授权。
## 贡献
1. Fork 该仓库
2. 创建一个功能分支 (`git checkout -b feature/your-feature`)
3. 为你的更改编写测试
4. 确保所有测试通过 (`python3 -m pytest tests/ -v`)
5. 使用描述性信息提交你的更改
6. 推送并创建一个 Pull Request
标签:API扫描, CISA项目, Playwright, Python, 安全规则引擎, 实时处理, 无后门, 桌面应用, 特征检测, 网络流量拦截, 逆向工具