Dharshankumar988/PhantomGrid
GitHub: Dharshankumar988/PhantomGrid
一个聚合多源威胁情报的实时分析仪表板,通过统一界面和自建评分引擎,帮助安全团队快速评估IP、域名和URL的风险等级。
Stars: 0 | Forks: 0
# PhantomGrid 🛡️⚡
一个基于 **FastAPI** 构建的未来感全栈网络安全仪表板,利用多源威胁情报分析 IP、域名和 URL。



## ✨ 功能
- 🔎 分析 **IP 地址**、**域名** 或 **完整 URL**
- 🧠 聚合来自以下来源的威胁情报:
- AbuseIPDB
- VirusTotal
- AlienVault OTX
- IP Geolocation API
- 📊 统一评分引擎:
- 风险评分 (0-100)
- 置信度评分 (0-100)
- 风险等级:LOW / MEDIUM / HIGH
- 🏷️ 威胁类别提取(Spam, Botnet, Malware, Phishing)
- 🗺️ 支持全屏模式的交互式威胁地图
- 💾 扫描历史记录存储于 Supabase
- ⚡ 异步调用 + 内存缓存
## 🧱 技术栈
- **Backend:** FastAPI, Uvicorn
- **Frontend:** HTML, Tailwind CSS, JavaScript, Leaflet
- **Database:** Supabase (PostgreSQL)
- **Libraries:** httpx, python-dotenv, supabase-py, pydantic
## 📁 项目结构
```
threat-dashboard/
├── main.py
├── config.py
├── .env
├── .env.example
├── requirements.txt
├── vercel.json
├── README.md
├── /api
│ └── routes.py
├── /services
│ ├── abuseipdb.py
│ ├── virustotal.py
│ ├── otx.py
│ └── geo.py
├── /utils
│ ├── scorer.py
│ ├── categorizer.py
│ ├── confidence.py
│ └── summary.py
├── /models
│ └── schemas.py
├── /templates
│ └── index.html
├── /static
│ ├── script.js
│ └── style.css
└── /supabase
└── scan_history.sql
```
## 🚀 本地设置
### 1) 克隆仓库
```
git clone https://github.com/Dharshankumar988/PhantomGrid.git
cd PhantomGrid/threat-dashboard
```
### 2) 创建虚拟环境
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
```
### 3) 安装依赖
```
python -m pip install -r requirements.txt
```
### 4) 配置环境变量
将 `.env.example` 复制为 `.env` 并填写实际值:
```
ABUSE_API_KEY=your_abuseipdb_api_key
VT_API_KEY=your_virustotal_api_key
OTX_API_KEY=your_otx_api_key
SUPABASE_URL=https://your-project-ref.supabase.co
SUPABASE_KEY=your_supabase_anon_key
```
### 5) 创建 Supabase 表
在 Supabase SQL Editor 中运行 `supabase/scan_history.sql` 中的 SQL。
### 6) 运行应用
```
python -m uvicorn main:app --reload
```
打开:`http://127.0.0.1:8000`
## ☁️ 部署到 Vercel
本项目已通过 `vercel.json` 配置好。
### 1) 安装 Vercel CLI
```
npm i -g vercel
```
### 2) 登录
```
vercel login
```
### 3) 从项目文件夹部署
```
cd threat-dashboard
vercel
```
### 4) 在 Vercel 中添加环境变量
在 Vercel Dashboard -> Project -> Settings -> Environment Variables 中添加:
- `ABUSE_API_KEY`
- `VT_API_KEY`
- `OTX_API_KEY`
- `SUPABASE_URL`
- `SUPABASE_KEY`
### 5) 生产部署
```
vercel --prod
```
## 🔐 在 Vercel 中应填写哪些 API Keys?
填写以下确切的密钥(名称必须匹配):
1. `ABUSE_API_KEY` -> 来自 AbuseIPDB 账户 API 页面
2. `VT_API_KEY` -> 来自 VirusTotal 个人资料/API 密钥页面
3. `OTX_API_KEY` -> 来自 AlienVault OTX 账户设置
4. `SUPABASE_URL` -> 来自 Supabase 项目 API 设置
5. `SUPABASE_KEY` -> Supabase **anon public key**(不是 service_role key)
## 🧪 API 用法
### 分析端点
`POST /analyze`
请求:
```
{
"target": "https://example.com/login"
}
```
响应格式:
```
{
"target": "example.com",
"risk_score": 0,
"confidence_score": 0,
"risk_level": "LOW | MEDIUM | HIGH",
"threat_categories": [],
"detection": {
"malicious": 0,
"total_engines": 0
},
"geolocation": {
"country": "",
"city": "",
"isp": "",
"latitude": 0,
"longitude": 0
},
"summary": ""
}
```
## 🛠️ 故障排除
- 如果地图在展开/折叠后无法正确渲染,请运行另一次扫描或调整窗口大小。
- 如果历史记录未保存,请验证 Supabase 表是否存在以及环境变量设置是否正确。
- 如果本地安装失败,请确保您处于已激活的虚拟环境中。
## 📜 许可证
MIT License
## 🙌 致谢
由 Dharshan 构建,具备 SOC 风格仪表板的设计愿景。
标签:AbuseIPDB, Ask搜索, AV绕过, FastAPI, HTTP/HTTPS抓包, IP信誉分析, Leaflet, PhantomGrid, Python, Supabase, Tailwind CSS, VirusTotal, 交互式地图, 仪表盘, 僵尸网络, 域名安全检测, 威胁情报, 威胁评分, 安全API聚合, 开发者工具, 态势感知, 恶意活动可视化, 数据可视化, 无后门, 测试用例, 网络安全, 逆向工具, 钓鱼检测, 防御性安全, 隐私保护, 风险分析