Техническое задание на разработку системы парсинга и автоматизации
Требуется создать промышленную, масштабируемую и высоконагруженную систему для сбора данных с веб-ресурсов с использованием браузерной автоматизации.
Цель проекта
Разработка отказоустойчивого бэкенда, который имитирует поведение реального пользователя для выполнения последовательности действий: авторизация на сайте, решение капчи, загрузка PDF-документов и извлечение из них целевых данных.
Ключевые требования к архитектуре
- Производительность: Система должна стабильно работать в режиме 150+ одновременных потоков выполнения.
- Масштабируемость: Архитектура на базе Docker-контейнеров. Должна быть предусмотрена возможность добавления новых серверов-воркеров без остановки работы системы.
- Очереди задач: Обязательное использование брокеров сообщений (Redis/RabbitMQ) для управления задачами. Запрещено использование текстовых файлов для синхронизации.
- Технический стек: Бэкенд на Python (предпочтительно FastAPI или Aiohttp), фреймворк браузерной автоматизации (Playwright или Selenoid), база данных PostgreSQL для хранения результатов.
- Обход защиты: Опыт работы с технологиями обнаружения ботов: Fingerprinting, Canvas, WebGL. Обязательна реализация ротации прокси-серверов.
Основные компоненты системы
- API Gateway: Единая точка входа для приема задач от внешних клиентов (например, Telegram-бота).
- Воркеры: Набор сервисов, ответственных за непосредственное выполнение задач: взаимодействие с сайтом, интеграция с сервисами решения капчи, загрузка и парсинг PDF-файлов.
- Административная панель: Веб-интерфейс для мониторинга состояния системы, управления активными потоками и конфигурационными ключами (прокси, API-ключи сервисов).
Что ожидаем от кандидата
В отклике, пожалуйста, кратко осветите следующие моменты:
- Ваш практический опыт работы с фреймворками браузерной автоматизации (Playwright/Selenium) и оркестрацией контейнеров (Docker).
- Опыт разработки и поддержки систем, работающих под высокой нагрузкой (100+ параллельных процессов/потоков).
- Готовность к работе по детальному техническому заданию, которое будет предоставлено выбранному исполнителю.