ShachiMistry/VirusTotal-Data-Pipeline

GitHub: ShachiMistry/VirusTotal-Data-Pipeline

一款基于三层缓存架构的轻量级 VirusTotal 威胁情报管道,通过自建 REST API 和可视化仪表板高效管理 VT 数据查询与配额消耗。

Stars: 0 | Forks: 0

# 🛡️ VirusTotal 数据管道 ![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg) ![FastAPI](https://img.shields.io/badge/FastAPI-0.111.0-009688.svg?style=flat&logo=FastAPI&logoColor=white) ![React](https://img.shields.io/badge/React-18.x-61DAFB.svg?style=flat&logo=react&logoColor=black) ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) 一个高性能的异步数据管道,用于编排来自 **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, 三级缓存架构, 互联网扫描, 可观测性, 可视化仪表盘, 后端开发, 域名信誉, 威胁情报, 开发者工具, 开源安全工具, 异步处理, 微服务架构, 恶意软件分析, 指标获取, 搜索引擎查询, 数据持久化, 数据管道, 文件哈希, 无后门, 缓存系统, 软件工程, 运行时操纵, 逆向工具, 逆向工程平台