
Автоматизированная разведка для пентестинга и баг-баунти
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 вебхук |
| Мониторинг | JSON-логи · ID запросов · Prometheus /metrics · опционально Sentry |
| Развёртыв. | Docker Compose · стек контейнеров Heroku |
git clone https://github.com/gokulapap/Reconator
cd Reconator
cp .env.example .env # optional: add Telegram / webhook keys / API key
docker compose up --build
| Сервис | URL |
|---|---|
| Веб-интерфейс | 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) # recommended
heroku config:set TELEGRAM_API_KEY=... TELEGRAM_CHAT_ID=... # optional
git push heroku master
heroku ps:scale web=1 worker=1
# api
cd backend && pip install -r requirements.txt
uvicorn app.main:app --reload
# worker (separate shell)
python -m app.worker
# web (separate shell)
cd frontend && npm install && npm run dev # proxies /api → :8000
# tests + lint
cd backend && pytest && ruff check .
ADMIN_API_KEY, все изменения требуют X-API-KeyOpenAPI доступен по /docs.
cron.py → воркер с блокировкой строк, корректным завершением, отменойheroku.ymlТолько для авторизованного тестирования. Используйте только на системах, которыми вы владеете или на которые имеете разрешение. Выпущено под лицензией GPL-3.0.
| Метод | Путь | Аутентификация | Назначение |
|---|
| 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 |
| Переменная окружения | По умолчанию | Примечания |
|---|
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 | * | Разделены запятыми |