Почему 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 и проверка контента. Для мониторинга ретейлеров по регионам это означает меньше банов и более чистые данные.