Ко всем статьям

Мобильные прокси для Scrapy: middleware, ретраи и лимиты без банов

2026-02-18
Мобильные прокси для Scrapy: middleware, ретраи и лимиты без банов

Практический гайд: как подключить индивидуальные мобильные прокси к Scrapy, настроить downloader middleware, ретраи и throttling для стабильного парсинга.

Почему Scrapy «упирается» без прокси

Scrapy — один из самых удобных Python-фреймворков для краулинга и парсинга: он быстрый, асинхронный и хорошо масштабируется. Но из‑за скорости и параллельности сайты часто начинают воспринимать ваши запросы как автоматизированный трафик и включают защиту — от ограничения скорости до блокировок и «мягких» заглушек.

Прокси не решают всё сами по себе, но в практических задачах (мониторинг цен, наличия, ассортимента и региональной выдачи) это базовый инструмент. Если нужны результаты «как у мобильных пользователей», логично использовать мобильные IP: они часто проходят фильтры лучше, чем датацентровые.

Что такое индивидуальные мобильные прокси

  • Доступ «в одни руки» (без общего выхода с другими клиентами).
  • Трафик через мобильных операторов (4G/LTE/5G) и мобильная репутация.
  • Ротация IP и/или sticky‑сессии (удержание IP на время).
  • Выбор локации/оператора для региональной выдачи.

Где в Scrapy подключается прокси: downloader middleware

В Scrapy управление запросами удобно делать через downloader middleware. Прокси применяются через request.meta["proxy"] (например, http://user:pass@host:port). Собственный middleware помогает централизовать правила: какой маршрут использовать, как ротировать, что делать при бане.

scrapy proxy middleware: что стоит заложить

  • выбор прокси по домену, региону, типу запроса (каталог/карточка/API);
  • подстановка авторизации и параметров сессии;
  • детект банов и лимитов (403/429/503, block‑страницы, капча);
  • переключение прокси перед ретраем (чтобы повтор не шёл тем же выходом);
  • логирование статистики по прокси/региону/домену.

Ретраи в Scrapy: как не усилить блокировки

У Scrapy есть RetryMiddleware для временных проблем (таймауты, часть 5xx). Но «в лоб» ретраи часто ухудшают ситуацию: вы повторяете запросы тем же темпом и тем же маршрутом.

Практика: при 429 делайте backoff (пауза растёт), снижайте параллельность и не штурмуйте «тяжёлые» страницы. При 403 чаще помогает смена мобильного IP и более «человеческий» ритм, особенно в связке со стабильными заголовками и аккуратными cookies.

Throttling Scrapy: AutoThrottle, задержки и параллельность

  • DOWNLOAD_DELAY — минимальная пауза между запросами.
  • CONCURRENT_REQUESTS и CONCURRENT_REQUESTS_PER_DOMAIN — параллельность.
  • AutoThrottle — автоматическая подстройка задержек под реакцию сайта.
  • AUTOTHROTTLE_DEBUG — диагностика на старте, чтобы понять, где сайт «злится».

Для длительного мониторинга почти всегда выигрывает подход «медленнее, но стабильно».

Сигналы сайта: лимиты, блок, капча

  • 429: rate limit — нужно замедляться и делать backoff.
  • 403: IP‑блок/антибот/фингерпринт запроса.
  • 503/520/521: временные ошибки, иногда со стороны CDN.
  • 200, но «не тот» HTML: капча или заглушка, которую важно распознавать.

Отпечаток запроса: заголовки, cookies, последовательность

Даже с мобильной IP можно быстро поймать блок, если отпечаток запроса выглядит неестественно. Обычно помогает: реалистичный User‑Agent, стабильные Accept/Language, аккуратная работа с cookies (или осознанное отключение), а также более «логичная» последовательность действий (иногда заход с категории на карточку).

Кейс: мониторинг цен/наличия у ретейлеров по регионам

Задача: регулярно проверять цену и наличие по списку SKU у нескольких ретейлеров, где результаты отличаются по регионам из‑за складов, доставки и локальных акций.

  • Маршрут лучше строить как регион + домен, а под него держать sticky‑сессию.
  • Каталог можно обходить чуть быстрее, карточки товара — аккуратнее.
  • При всплеске 403/429 — снижать скорость, менять IP, откладывать проблемные SKU.

Чек‑лист перед продакшеном

  • Пилот 50–200 URL и анализ доли 403/429/капчи.
  • Политика ретраев: коды, число попыток, backoff.
  • Отдельные лимиты по доменам (delay и параллельность).
  • Валидация контента и лог причин неуспеха.
  • Мониторинг: успех, средняя задержка, «падающие» регионы/прокси.

Итог

Мобильные прокси для Scrapy помогают получать региональную выдачу и снижать риск блокировок, но устойчивость даёт связка: продуманный scrapy proxy middleware, контролируемые ретраи, грамотный throttling Scrapy и проверка контента. Для мониторинга ретейлеров по регионам это означает меньше банов и более чистые данные.