KM-it-ops/osint-dashboard
GitHub: KM-it-ops/osint-dashboard
基于FastAPI构建的轻量级OSINT仪表盘,集成Firecrawl实现零日漏洞追踪与目标情报分析的可视化平台。
Stars: 0 | Forks: 0
# KM-IT-Ops OSINT 仪表盘
适合初学者的脚手架:**FastAPI** 提供由 **Jinja2** 模板和 **Tailwind CSS** (CDN) 构建的 HTML 页面。头条新闻存储在 **SQLite** (`backend/data/osint.db`) 中,并在每次请求时加载。
## 前置条件
- 已安装 Python 3.10+ 且可用 `python` 调用。
## 设置
在此文件夹 (`osint-dashboard/`) 中执行:
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
在 macOS/Linux 上,请改用 `source .venv/bin/activate` 来激活。
## 运行开发服务器
该应用要求你的**当前工作目录**为 `backend/`,以便正确解析导入 (`app.main`)。
```
Set-Location backend
uvicorn app.main:app --reload
```
打开 **http://127.0.0.1:8000/** —— 你应该会看到 Hello World 页面。
API 文档(自动生成):**http://127.0.0.1:8000/docs**
### SQLite (`osint.db`)
在启动时,应用会在需要时创建 **`backend/data/osint.db`**。如果头条新闻表为**空**,它会从 **`backend/data/zero_day_headlines.json`**(旧版 Firecrawl 导出格式)**执行一次性导入**。此后,**`/`** 和 **`/api/headlines`** 将**仅从 SQLite 读取**数据。
要在编辑 JSON 后**重新加载**(例如有新的 Firecrawl 结果):删除 `backend/data/osint.db`,重启服务器,JSON 将被再次导入。
**Cursor MCP:** 全局 MCP 配置包含 **`mcp-sqlite-osint`**(`npx mcp-sqlite` → `osint.db` 的路径),因此你可以在 DB 文件存在后检查表。如果服务器未显示,请在 Cursor 中重新加载 MCP。
### 刷新零日漏洞头条 (Firecrawl → JSON → DB)
1. 更新 **`backend/data/zero_day_headlines.json`**(包括 `topic`、`updated_at`、`source_note`,以及包含 `title` + `url` 的 `headlines`)。你可以使用 Firecrawl CLI 生成候选项,然后粘贴到该格式中:
```
npx firecrawl-cli search "recent cybersecurity zero-day vulnerabilities" -o .firecrawl/zero-day-search.json
```
2. 删除 **`backend/data/osint.db`** 并重启 uvicorn,以便应用将 JSON 重新导入 SQLite。
## 实时目标分析器 (Firecrawl API)
仪表盘可以对域名或 CVE 运行**临时 OSINT**:它调用 **Firecrawl 的 HTTP 搜索 API**(而非 Cursor MCP),将结果标准化,保存到 SQLite,并在主页上显示报告。
1. 从 [Firecrawl](https://firecrawl.dev) 获取 API 密钥(或使用你自托管实例的 URL)。
2. 在 `osint-dashboard/` 文件夹中,创建一个 **`.env`** 文件(可选但推荐):
FIRECRAWL_API_KEY=your_firecrawl_api_key_here
# 可选:自托管
# FIRECRAWL_API_URL=https://your-instance.example
将真实的密钥保留在 `.env`(已添加到 .gitignore)或宿主机的机密环境变量中——切勿保存在受版本控制的文件中。
3. 重启 uvicorn。在 **http://127.0.0.1:8000/** 上使用 **Live Target Analyzer** 搜索框。
**API (用于脚本):**
- `POST /api/analyze-target` —— JSON 请求体 `{"target": "example.com"}` 或 `{"target": "CVE-2024-1234"}`
- `GET /api/target-reports?limit=10` —— 最近的已保存报告
报告存储在 `backend/data/osint.db` 的 **`target_intelligence_reports`** 表中。
**注意:** 在 Cursor 中的一次性研究仍可使用 **Firecrawl MCP**;而运行中的应用则始终使用 **REST API** 和 `FIRECRAWL_API_KEY`。
## 项目布局
| 路径 | 用途 |
|------|---------|
| `backend/app/main.py` | FastAPI 应用和路由 |
| `backend/app/db.py` | SQLite:头条新闻数据源 + `target_intelligence_reports` |
| `backend/app/firecrawl_client.py` | Firecrawl `/v1/search` HTTP 客户端 |
| `backend/app/target_analyzer.py` | 目标分类,标准化情报报告 |
| `backend/templates/` | HTML 模板 |
| `backend/static/` | 静态文件 (CSS, 图片) —— 供后续使用 |
| `backend/data/osint.db` | SQLite 数据库 (已添加到 .gitignore;运行时创建) |
| `backend/data/zero_day_headlines.json` | 可选的一次性种子文件 (格式与 Firecrawl 导出相同) |
标签:AV绕过, BeEF, ESC4, FastAPI, Firecrawl, IT运维, Jinja2, OSINT, Python, Socks5代理, SQLite, Syscall, Tailwind CSS, URL抓取, Web开发, 仪表盘, 前端模板, 后端开发, 威胁情报, 安全运营, 实时处理, 开发者工具, 情报大屏, 情报聚合, 扫描框架, 数据库, 数据抓取, 无后门, 漏洞分析, 爬虫, 用户定义反射加载器, 网络安全, 路径探测, 逆向工具, 隐私保护, 零日漏洞, 靶场分析