Заказчик обратился с задачей: ежедневно собирать цены и остатки с 20 сайтов конкурентов. Через неделю после запуска первого скрипта на requests все IP заблокировала защита Cloudflare, а ещё через месяц изменилась вёрстка — данные перестали собираться вовсе. Так выглядит типичный провал без промышленного подхода. Мы разрабатываем системы, которые не ломаются: планировщик с приоритетами, ротация резидентных прокси, обход антибот-защит, нормализация и мониторинг. Наш опыт — 15+ проектов для e-commerce, агрегаторов и исследовательских задач. Экономия бюджета на сборе данных достигает 60%, окупаемость системы — 2-3 месяца. Если вам нужна надёжная система сбора данных, свяжитесь с нами для консультации.
Как обойти Cloudflare Bot Management?
Самый сложный кейс — Cloudflare с Bot Fight Mode. Решение: Playwright с реальным fingerprint браузера, обход через puppeteer-extra-plugin-stealth, имитация мышиных движений через CDP. Для особо стойких — ротация IP через резидентные прокси от BrightData или Oxylabs.
| Защита | Метод обхода |
|---|---|
| Rate limiting | Адаптивные задержки, распределение по IP |
| CAPTCHA (reCAPTCHA v2/v3) | 2captcha/Anti-Captcha API или обучение собственной модели |
| Cloudflare Bot Management | Playwright с реальным fingerprint, TLS fingerprint (циклическая ротация) |
| JavaScript challenges | Headless browser с полным выполнением JS |
| Honeypot-ссылки | Фильтрация невидимых элементов перед обходом |
| IP reputation blocks | Residential proxy (BrightData, Oxylabs, Smartproxy) |
Почему парсер ломается через месяц?
Веб-сайты меняют структуру каждые 3-4 недели. Без системы мониторинга вы узнаете о поломке только когда данные перестанут обновляться. Мы встраиваем автоматические проверки: сравнение DOM-схемы с эталоном, процент успешных извлечений, тесты на фикстурах. Типичный показатель стабильной работы — 95%+ успешных парсингов.
Архитектура масштабируемой системы парсинга
Планировщик и очередь задач
Celery с Redis или RabbitMQ — проверенный выбор. Каждый URL — задача с приоритетом, retry-политикой и TTL. Scrapy-cluster или собственный оркестратор координирует воркеры. Используем Python 3.12, Celery 5.3, Redis 7.
Загрузчик страниц
Два режима:
- Статические —
httpxс async, connection pooling, keep-alive - JavaScript-рендеринг — Playwright 1.40 (предпочтительно) или Puppeteer, headless Chromium с управлением профилями
Ротация идентификаторов
Пул прокси (residential или datacenter), смена User-Agent из реальных fingerprint-датасетов, случайные задержки с нормальным распределением, управление куки-сессиями.
Извлечение данных
CSS-селекторы или XPath для стабильных структур. Для сложной логики — parsel (обёртка над lxml). Если структура нестабильна — LLM-экстракция через OpenAI или локальную Ollama с few-shot промптами.
Хранение и нормализация
Raw HTML в S3/MinIO для повторной обработки. Извлечённые данные — PostgreSQL 16 или ClickHouse (для аналитики по миллиардам записей). Дедупликация по URL-хешу + content-hash.
Сравнение подходов: Celery vs Argo Workflows
| Критерий | Celery | Argo Workflows |
|---|---|---|
| Простота настройки | Низкая (Python-стек) | Средняя (Kubernetes) |
| Масштабирование | 100+ воркеров | 1000+ воркеров |
| Время отклика на сбой | Минуты | Секунды |
| Сообщество | Большое | Растущее |
Для большинства проектов Celery — оптимальный выбор: быстрее внедряется, легче поддерживать. Argo — для Kubernetes-инфраструктур с жёсткими SLA.
Архитектура для высоконагруженного парсинга
[Scheduler] -> [Redis Queue] -> [Fetcher Workers x N] | [Parser Workers x M] | [Raw Store S3] + [DB Writer] | [Monitor / Dashboard] Fetcher и Parser — разные воркеры. Fetcher I/O bound (100+ async задач на процесс), Parser CPU bound (1 процесс на ядро).
Как настроить парсер за 5 шагов
- Анализ источников: изучите структуру целевых сайтов, определите объём данных и частоту обновления.
- Выбор стека: определите, нужен ли JS-рендеринг, какой тип прокси, какую СУБД.
- Реализация извлечения: напишите селекторы или XPath для каждого поля, протестируйте на фикстурах.
- Настройка мониторинга: добавьте алерты на падение процента успешных парсингов и изменение DOM.
- Деплой и обкатка: разверните систему на сервере, прогоните тестовый период 2-3 дня.
Правовые и этические аспекты
Перед запуском: проверка robots.txt, анализ ToS сайта, оценка нагрузки. Для публичных данных это обычно приемлемо. Для закрытых разделов — требуется разрешение. Мы всегда консультируем по legal-рискам.
Процесс работы и сроки
Что входит в работу
- Архитектура системы под ваши источники
- Реализация кода с документацией
- Настройка мониторинга и алертов
- Обучение вашей команды
- Поддержка 1 месяц после запуска
- Гарантия стабильной работы (согласно SLA)
Сроки реализации
| Этап | Срок |
|---|---|
| Базовый парсер одного сайта | 3-5 дней |
| Очередь + ротация прокси + retry | 5-7 дней |
| JS-рендеринг + антибот-обход | 7-14 дней |
| Мониторинг, нормализация, хранение | 5-10 дней |
| Полная система под 10+ источников | 4-8 недель |
Сценарии использования и обслуживание
Мониторинг конкурентов. Цены, ассортимент, наличие — сбор раз в час с историей. Экономия до 60% времени ваших аналитиков.
Агрегация объявлений. OLX, Avito-подобные площадки: десятки тысяч записей в сутки, дедупликация, геокодирование.
Исследовательские задачи. Сбор датасетов для ML, мониторинг тональности, анализ SEO-позиций. Контентные проекты. Синдикация новостей, агрегация вакансий, каталоги из открытых источников.
Обслуживание системы
Хорошо спроектированная система — не разовая разработка, а инфраструктура с жизненным циклом. Закладывайте 20% времени от разработки в год на поддержку. Мы гарантируем быструю реакцию на поломки.
Оценим ваш проект за 1 день — напишите нам. Закажите разработку системы парсинга под ключ и получите консультацию по архитектуре.







