ShachiMistry/VirusTotal-Data-Pipeline
GitHub: ShachiMistry/VirusTotal-Data-Pipeline
一款基于三层缓存架构的轻量级 VirusTotal 威胁情报管道,通过自建 REST API 和可视化仪表板高效管理 VT 数据查询与配额消耗。
Stars: 0 | Forks: 0
# 🛡️ VirusTotal 数据管道




一个高性能的异步数据管道,用于编排来自 **VirusTotal API v3** 的威胁情报摄取。它具有强大的缓存层、安全的 API 速率限制、关系型数据持久化,并提供了一个基于 Vite + React 构建的精美指标仪表板。
## ⚡ 功能与特性
- **自动化威胁情报**:专为 `domains`(域名)、`IPs` 和 `file hashes`(文件哈希)量身定制的智能指标摄取。
- **高级速率管理**:异步令牌桶速率限制器在本地原生强制执行 VT 的严格配额(4 请求/分钟),不会随意丢弃用户查询。
- **智能三层架构**:
1. **L1 内存/Redis 缓存**:超快的初始响应。
2. **L2 数据库缓存**:SQLAlchemy + SQLite 持久化无限期保存历史查询,以节省 VT API 调用额度。
3. **L3 上游获取**:基于 `httpx` 逻辑的直接 API 轮询回退机制。
- **动态 React Flow 图形界面**:威胁分类(恶意、可疑、无害)的现代可视化,采用纯 CSS 布局和玻璃拟态样式。
## 🏗️ 系统架构流程
```
sequenceDiagram
participant UI as React Dashboard
participant API as FastAPI Backend
participant L1 as Memory/Redis Cache
participant L2 as SQLite Database
participant VT as VirusTotal API
UI->>API: GET /api/v1/ips/1.1.1.1
API->>L1: Check Fast Cache
alt Cache Hit
L1-->>API: Return Source: Cache
else Cache Miss
API->>L2: Check Relational DB
alt DB Hit
L2-->>API: Restore Data
API->>L1: Repopulate Fast Cache
API-->>UI: Return Source: Database
else DB Miss
API->>VT: Fetch live intel
VT-->>API: JSON Response
API->>L2: Async UPSERT persist
API->>L1: Cache response
API-->>UI: Return Source: VirusTotal
end
end
```
## 📋 前置条件
* **Python 3.9+**
* **Node.js 18+**
## 🚀 快速安装指南
### 1. 初始化核心后端
```
git clone https://github.com/ShachiMistry/VirusTotal-Data-Pipeline.git
cd VirusTotal-Data-Pipeline
# 启动环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
pip install greenlet
```
### 2. 配置您的环境
通过复制示例环境格式来建立正确的管道连接。
```
cp .env.example .env
```
_编辑新创建的 `.env` 文件,并将 `VT_API_KEY` 占位符替换为您有效的 VirusTotal 开发者密钥。_
### 3. 启动服务
在两个单独的终端实例中运行以下命令,以同时启动 API 路由和图形仪表板界面。
**终端 1 — FastAPI 服务器:**
```
source venv/bin/activate
uvicorn main:app --reload
```
_您的 Swagger 文档现已在 `http://127.0.0.1:8000/docs` 上生效_
**终端 2 — React 仪表板服务器:**
```
cd frontend
npm install
npm run dev
```
_在 `http://localhost:5173/` 启动您的前端界面_
## 🔌 核心 API 路由
所有端点在调用外部 VT 网络 API 之前,都会原生解析最佳的缓存序列。
| 方法 | 组件 URI | 操作详情 |
| :--- | :--- | :--- |
| `GET` | `/api/v1/domains/{domain}` | 提取被追踪 URL 的安全指标。 |
| `GET` | `/api/v1/ips/{ip}` | 聚合全球 ASN 节点和恶意软件路由。 |
| `GET` | `/api/v1/files/{hash}` | 解析 SHA-256 分析记录和分类。 |
| `GET` | `/health` | 用于监控负载均衡器的诊断轮询模块。 |
_注意:您可以在任何管道端点上传递 `?refresh=true` 逻辑参数,以主动绕过缓存和数据库机制,并强制发起原始上游请求!_
标签:API网关, API集成, Ask搜索, AV绕过, DAST, FastAPI, httpx, IP信誉, Python, React, Redis, SQLAlchemy, SQLite, Syscalls, Token Bucket 限流算法, VirusTotal, Vite, 三级缓存架构, 互联网扫描, 可观测性, 可视化仪表盘, 后端开发, 域名信誉, 威胁情报, 开发者工具, 开源安全工具, 异步处理, 微服务架构, 恶意软件分析, 指标获取, 搜索引擎查询, 数据持久化, 数据管道, 文件哈希, 无后门, 缓存系统, 软件工程, 运行时操纵, 逆向工具, 逆向工程平台