-
Добавить CLI-интерфейс поверх
scraper_core.py- Парсинг аргументов черезargparse/typer- Поддержка конфиг-файла (.yaml/.toml) с настройками по умолчанию -
Поддержка нескольких платформ - Экспериментальная поддержка non-CTFd движков (например, Scoreboard-фреймворков/самописных панелей) через адаптеры - Интерфейс
BasePlatformClientс реализациямиCTFdClient,XXXClientи т.п. -
Улучшенная обработка ошибок - Красивый вывод в веб-интерфейсе: какие задачи упали, HTTP-коды, ретраи - Логи в файл с таймстампами и уровнем (INFO/WARN/ERROR)
-
Фильтры задач - Качать только задачи определённых категорий (Web, Crypto, OSINT, Forensic, Misc, Rev, Pwn и т.д.) - Фильтр по минимальному/максимальному количеству очков - Флаг «качать только unsolved» (если CTFd в API отдаёт
solved_by_me) -
Экспорт в другие форматы - Генерация JSON/YAML с метаданными задач (id, title, category, value, url, локальный путь) - Экспорт в формат, совместимый с локальными CTF-платформами / учебными стендами
-
Кэширование и инкрементальные обновления - Не перекачивать файлы, если они уже есть и размер совпадает - Режим "update": докачивать только новые таски и новые файлы
-
Улучшения веб-интерфейса - Выбор категорий/диапазона очков прямо в форме перед стартом - Прогресс-бар по количеству скачанных задач - Страница с логом выполнения (live-лог через SSE/WebSocket)
-
Документация и примеры - Примеры использования
scraper_core.run_scrape()из CLI-скриптов - Скриншоты веб-интерфейса - Раздел «рецепты»: бэкап всего CTF, скачивание конкретного ID, интеграция в CI/CD -
Тестирование - Юнит-тесты для разбора URL, парсинга категорий, генерации путей - Моки для CTFd API (например, через
respx) и тесты без реального интернета -
Настройки структуры директорий - Опция выбирать схему: -
<out_dir>/<Category>/<Title>/…(как сейчас) -<out_dir>/<Title>/…-<out_dir>/<Category>/<ID>_<Title>/…- Шаблон пути через форматную строку ({category}/{id}_{name}) -
Поддержка защищённых инстансов - Автообновление токена, если CTFd настроен на короткоживущие access tokens - Поддержка доп. заголовков (например, внутренние SSO-прокси)