txltedxgod/osint-hub
GitHub: txltedxgod/osint-hub
基于 FastAPI 构建的 OSINT Web 应用,集成 Sherlock 和 Maigret 引擎实现跨平台用户名搜索,支持多用户、历史记录和 PDF 报告导出。
Stars: 1 | Forks: 0
# ◉ OSINT Hub v1
**OSINT Hub** —— 一款 Web 应用程序,可借助 **Sherlock** 和 **Maigret** 这两款流行的引擎,根据用户名在数百个网站上查找账号。支持多用户身份验证、查询历史记录、导出 PDF 报告,并可通过 Docker 使用一条命令启动。
## ✨ 功能
* 🔐 **身份验证** —— 支持注册和登录,允许多用户,使用签名的 cookie 管理会话,密码以 PBKDF2-HMAC-SHA256 格式存储。
* 🔎 **username 搜索** —— 单个输入框,可选择引擎,结果按工具分组显示。
* 🕵️ **Sherlock** 和 🧹 **Maigret** —— 作为独立进程并行运行;如果未安装某引擎,应用不会崩溃,而是将其标记为 offline。
* 📜 **查询历史记录** —— 每次搜索及找到的账号都会被保存;支持查看、重新访问和删除。
* 🗄️ **SQLite** —— 通过 SQLAlchemy 2.0 + aiosqlite 实现异步访问。
* 📄 **导出 PDF** —— 可为任何查询生成清晰的报告(reportlab)。
* 🐳 **Docker** —— 执行 `docker compose up -d --build`,服务即可准备就绪。
\---
## 🧩 技术栈
|技术|用途|
|-|-|
|**Python 3.12+**|开发语言|
|**FastAPI + Uvicorn**|Web 框架和 ASGI 服务器|
|**Jinja2**|模板(服务端渲染)|
|**SQLAlchemy 2.0 (async) + aiosqlite**|ORM 和 SQLite 存储|
|**Starlette SessionMiddleware**|基于签名 cookie 的会话|
|**reportlab**|生成 PDF|
|**Sherlock / Maigret**|username 搜索引擎|
|**Docker / docker compose**|容器化|
\---
## 🚀 快速开始(Docker)
```
# 1. 配置环境
cp .env.example .env
# 务必将 SECRET\_KEY 更改为一个长的随机字符串:
# python -c "import secrets; print(secrets.token\_hex(32))"
# 2. 构建并运行
docker compose up -d --build
# 3. 日志
docker compose logs -f web
```
打开 **http://localhost:8000** → 登录页面。第一个注册的账号将成为管理员。
停止服务:`docker compose down`(`./data` 中的数据会保留)。
\---
## 💻 不使用 Docker 运行(开发)
```
python -m venv .venv \&\& source .venv/bin/activate # Windows: .venv\\Scripts\\activate
pip install -r requirements.txt
cp .env.example .env # поменяйте SECRET\_KEY
uvicorn app.main:app --reload
```
SQLite 表会在首次运行时自动创建。
\---
## 🗺️ 项目结构
```
osint-hub/
├── app/
│ ├── main.py # точка входа FastAPI, middleware, lifespan
│ ├── config.py # настройки (pydantic-settings)
│ ├── database.py # асинхронный engine + сессии
│ ├── models.py # User / Search / Result
│ ├── security.py # хеширование паролей
│ ├── dependencies.py # текущий пользователь
│ ├── templating.py # общий Jinja2
│ ├── routers/ # auth, search, history
│ ├── services/ # osint (движки), search\_service, pdf\_service
│ ├── templates/ # base, login, register, dashboard, history…
│ └── static/styles.css # тёмная тема
├── data/ # SQLite-база и PDF-отчёты (volume)
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── .env.example
└── README.md
```
\---
## 🗜️ 数据库 Schema
```
erDiagram
USERS ||--o{ SEARCHES : runs
SEARCHES ||--o{ RESULTS : contains
USERS {
int id PK
string username
string password\_hash
string salt
bool is\_admin
datetime created\_at
}
SEARCHES {
int id PK
int user\_id FK
string query
string tools
string status
int total\_found
datetime created\_at
}
RESULTS {
int id PK
int search\_id FK
string tool
string site\_name
string url
}
```
\---
## 🛣️ 路由
|方法|路径|描述|
|-|-|-|
|GET/POST|`/register`|注册|
|GET/POST|`/login`|登录|
|GET|`/logout`|退出|
|GET|`/`|仪表板 + 搜索表单|
|POST|`/search`|启动搜索|
|GET|`/history`|查询列表|
|GET|`/history/{id}`|查询详情|
|GET|`/history/{id}/pdf`|导出 PDF|
|POST|`/history/{id}/delete`|删除|
\---
## ⚙️ 环境变量
|变量|默认值|描述|
|-|-|-|
|`SECRET\_KEY`|—|会话签名密钥(**务必更改**)|
|`DATABASE\_URL`|`sqlite+aiosqlite:///./data/osint\_hub.db`|连接字符串|
|`REPORTS\_DIR`|`./data/reports`|报告文件夹|
|`SHERLOCK\_TIMEOUT`|`180`|Sherlock 超时时间,秒|
|`MAIGRET\_TIMEOUT`|`240`|Maigret 超时时间,秒|
|`SITE\_TIMEOUT`|`15`|单站点超时时间,秒|
|`SESSION\_MAX\_AGE`|`604800`|会话有效期,秒|
|`LOG\_LEVEL`|`INFO`|日志级别|
\---
## 📝 许可证
MIT —— 详见 [LICENSE](LICENSE)。
标签:AV绕过, Docker, ESC4, FastAPI, OSINT, 安全防御评估, 实时处理, 用户名搜索, 请求拦截, 逆向工具