Reconator 是一个自动化侦察框架。添加一个目标(单独或批量添加),工作进程将对其运行约17个侦察模块(子域名枚举、目录爆破、JS/链接挖掘、WAF指纹识别、接管检查、GF分类等)。仪表板会实时显示各个模块的输出。
| 层 | 技术 |
|---|---|
| API | FastAPI · SQLAlchemy 2 · Alembic · Pydantic v2 |
| 工作进程 | Python子进程运行器,支持超时和取消 |
| 数据库 | PostgreSQL 16 |
| 前端 | React 18 · TypeScript · Tailwind · shadcn/ui · 浅色/深色主题 |
| 认证 | 写入操作使用 API 密钥(X-API-Key);开发模式下开放 |
| 通知 | Telegram + 通用 / Slack / Discord webhook |
| 监控 | JSON 日志 · 请求 ID · Prometheus /metrics · 可选 Sentry |
| 部署 | Docker Compose · Heroku 容器栈 |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # 可选:添加 Telegram / webhook 密钥 / API 密钥
docker compose up --build
| 服务 | URL |
|---|---|
| Web UI | http://localhost:3000 |
| API 文档 | http://localhost:8000/docs |
| 指标 | http://localhost:8000/api/v1/metrics |
或通过 CLI(使用 heroku.yml 容器栈 — 单个镜像同时提供 UI 和 API,工作进程 dyno 运行队列):
heroku create my-reconator --stack=container
heroku addons:create heroku-postgresql:essential-0
heroku config:set ADMIN_API_KEY=$(openssl rand -hex 32) # 推荐
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # 可选
git push heroku master
heroku ps:scale web=1 worker=1
# API
cd backend && pip install -r requirements.txt
uvicorn app.main:app --reload
# 工作进程(新终端)
python -m app.worker
# 前端(新终端)
cd frontend && npm install && npm run dev # 将 /api 代理到 :8000
# 测试 + 代码检查
cd backend && pytest && ruff check .
ADMIN_API_KEY 后,所有变更操作需要 X-API-Key| 方法 | 路径 | 认证 | 用途 |
|---|---|---|---|
| GET | /api/v1/targets | — | 列出+过滤(状态、搜索、标签) |
| POST | /api/v1/targets | ✓ | 加入单个域名到队列 |
| POST | /api/v1/targets/bulk | ✓ | 批量加入多个域名 |
| GET | /api/v1/targets/stats | — | 计数+平均时长 |
| GET | /api/v1/targets/export?format=csv|json | — | 批量导出 |
| GET | /api/v1/targets/{id} | — | 详情+模块摘要 |
| DELETE | /api/v1/targets/{id} | ✓ | 删除(或取消正在运行的任务) |
| POST | /api/v1/targets/{id}/cancel | ✓ | 取消排队/正在运行的任务 |
| POST | /api/v1/targets/{id}/rescan | ✓ | 使用相同标签/模块重新加入队列 |
| GET | /api/v1/targets/{id}/results | — | 所有模块的输出 |
| GET | /api/v1/targets/{id}/results/{module} | — | 单个模块的输出 |
| GET | /api/v1/targets/{id}/results/{module}/download | — | 下载 .txt 文件 |
| GET | /api/v1/modules | — | 可用模块列表 |
| GET | /api/v1/system/info | — | 版本+认证+通知器状态 |
| POST | /api/v1/system/test-notify | ✓ | 发送测试通知 |
| GET | /api/v1/health · /ready · /metrics | — | 健康检查 + Prometheus |
OpenAPI 文档位于 /docs。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
DATABASE_URL | 自动组合 | postgresql://…(Heroku 格式亦可) |
ADMIN_API_KEY | 未设置 | 设置后,变更操作需要 X-API-Key |
RATE_LIMIT_WRITES | 20/minute | slowapi 表达式 |
RATE_LIMIT_BULK | 5/minute | |
TELEGRAM_API_KEY / _CHAT_ID | 未设置 | 为空则禁用 Telegram |
WEBHOOK_URL / WEBHOOK_KIND | 未设置 / generic | generic | slack | discord |
SENTRY_DSN | 未设置 | 设置后启用 Sentry |
WORKER_POLL_INTERVAL_SECONDS | 30 | |
MODULE_TIMEOUT_SECONDS | 1800 | 每个模块的硬超时时间 |
CORS_ORIGINS | * | 逗号分隔 |
cron.py 轮询循环 → 带行锁定、优雅关闭、取消功能的工作进程heroku.yml 的容器栈仅用于授权测试。请仅在你拥有或有权评估的系统上使用。 根据 GPL-3.0 许可发布。