Кейс 2026: как парсить 1 000 000 карточек Wildberries в сутки — архитектура, прокси, антибан
Содержание статьи
- Введение: почему тема актуальна и что вы узнаете
- Основы: ключевые концепции и термины
- Глубокое погружение: как сегодня устроен антибот и что важно эмулировать
- Архитектура и очереди задач: каркас, который не «падает» на миллион в сутки
- Прокси и ротация: мобильные ip как фактор естественности
- Метод 1: headless-браузер playwright — когда нужен «человеческий» профиль
- Метод 2: высокопроизводительный http-клиент с корректным профилем
- Метод 3: антибан-стратегии и поведенческие шаблоны
- Метод 4: обработка ошибок, дедупликация и самовосстановление
- Хранение данных: схемы, версии и скорость аналитики
- Типичные ошибки, из-за которых падает success rate
- Инструменты и ресурсы: что использовать в 2026
- Кейсы и результаты: реальная производительность и экономика
- Faq: глубокие вопросы и ответы
- Заключение: резюме и план внедрения
Введение: почему тема актуальна и что вы узнаете
К 2026 году Wildberries окончательно стал одной из крупнейших экосистем электронной коммерции в регионе, а качество и скорость данных о карточках товаров — критическим фактором для производителей, дистрибьюторов, аналитиков, арбитражных команд, отделов ценообразования и категорийных менеджеров. Ежедневный мониторинг цен, остатков, Buy Box, позиций, контента и отзывов уже невозможно делать вручную или маленькими скриптами. Нужна промышленная архитектура, способная стабильно собирать миллион карточек в сутки с понятной себестоимостью и предсказуемым SLA.
В этой статье мы разберем, как спроектировать и эксплуатировать такой конвейер: от проектирования очередей и оркестрации задач до правильной ротации мобильных прокси и аккуратного обхода антибота WB. Покажем структуру хранилища, подачу данных в витрины аналитики, разбор ошибок и возвратов. Отдельно дадим реальные цифры по скорости, стоимости и success rate на боевых нагрузках в 2026 году. Вы получите рабочие фреймворки и Python-сниппеты, чек-листы для продакшн-запуска и принципы, которые переживут любые обновления антибота.
Мы фокусируемся на ответственном и законном сборе общедоступных данных. Соблюдайте правила сервиса, законодательства и этические нормы. Наша цель — инженерная дисциплина: предсказуемость, отказоустойчивость, безопасность и эффективность.
Основы: ключевые концепции и термины
Карточка товара — страница с атрибутами SKU (название, бренд, фото, характеристики), ценами (база, скидки, маркетинговые акции), наличием и логистикой (склад, срок доставки), контентом (описание, видео), социальными сигналами (рейтинги, отзывы, вопросы). Для стабильного мониторинга карточки важно разделять компоненты: ядро (инвариантные поля), динамику (цены, остатки), производные метрики (Buy Box, минимальные цены по селлерам).
Типы источников: 1) публичные HTML-страницы; 2) фронтовые JSON-эндпоинты, отдающие данные для рендеринга; 3) изображение и статика (CDN) — не всегда нужны, но полезно для контроля качества контента. В 2026 году фронтовые API интенсивно защищены: поведенческие и сетевые признаки, корректная реализация HTTP/2, заголовки и куки, TLS-отпечатки, а также наличие легитимного мобильного/десктопного профиля.
Законный сбор данных — не нарушать права, не обходить платные доступы, не вмешиваться в функциональность сервиса, не перегружать платформу, уважать экономные лимиты и приватность пользователей. Ограничивайтесь публично доступными карточками товаров, не затрагивайте закрытые разделы.
Сетевой уровень: важны ASN (оператор), тип IP (мобильный NAT, резидентский), протокол (HTTP/2, иногда HTTP/3 на статике), поддержка TLS 1.3, корректные JA3/JA4 отпечатки и содержание ClientHello. Для стабильного успеха на WB предпочтительна эмуляция реальных клиентов с поведенческими паттернами и мобильным профилем, а также разумная география IP.
Сессии и кук-джар: невоспроизводимые маркеры и поведенческие куки влияют на допуск. Стабильный cookie jar на уровне прокси-сессии, аккуратная перегонка контекста между запросами и уважение TTL — база высокой конверсии запросов.
Архитектура данных: пайплайн из очереди задач (с приоритизацией), воркеров (с адаптивной скоростью и лимитами), стораджа (сырые снапшоты, нормализованные таблицы в Postgres/ClickHouse, слой витрин), а также слой мониторинга (метрики, логи, алерты). Ключевые качества — идемпотентность операций, трассируемость от задания до результата и возможность частичного восстановления.
Глубокое погружение: как сегодня устроен антибот и что важно эмулировать
В 2026 антибот маркетплейсов (включая WB) оценивает не только IP-историю, но и составной профиль клиента: TLS-отпечаток, HTTP/2-приоритеты и окно, порядок заголовков, заголовки безопасности и кэширования, семантику UA и платформы, консистентность Accept-* и Sec-* заголовков, временную карту кликов и скроллов в браузере, корректные задержки между навигациями, сетевые ошибки, а также поведенческие статистики по сессии и префетчингу. Важен темп: всплески параллельных запросов с одного «клиента» настораживают, равно как и полностью «стерильная» навигация без изображений, сервис-воркеров и фоновых запросов.
Отсюда три следствия. Первое: голый HTTP-клиент с библиотекой по умолчанию часто недостаточен; нужна либо интеграция с современным headless-браузером (Playwright с тонкой настройкой), либо тщательно собранный стек HTTP/2 с верными низкоуровневыми характеристиками. Второе: мобильные прокси существенно повышают естественность трафика благодаря NAT-агрегации и реальному профилю сотовых сетей. Третье: нужно бережно обращаться с куки, не сбрасывать их без причины и синхронизировать сессию с жизненным циклом IP.
Практически это означает: 1) отдельные пулы десктопных и мобильных профилей; 2) «липкие» сессии (sticky) на 10–30 минут, если нужно удерживать поведение, и короткие сессии для одноразовых обращений; 3) географически разумная маршрутизация (страна, регион), соответствующая логике пользователей WB; 4) мягкая скорость (adaptive rate), которая учитывает типы страниц, время суток и ответ сервера.
Архитектура и очереди задач: каркас, который не «падает» на миллион в сутки
Цель раздела: построить конвейер из модулей, которые легко масштабируются: оркестратор, планировщик, очередь, воркеры, слой прокси, контрольные контуры, хранилище.
Высокоуровневая схема
- Scheduler — определяет приоритеты: новые SKU, измененные, проблемные, периодический обход, докачка пропущенных бандлов.
- Dispatcher — помещает задания в очередь с нужными ключами партиционирования.
- Queue — Kafka или NATS для сквозной пропускной и редистрибуции; Redis Streams для быстрой итерации.
- Workers — изолированные процессы (Python) с адаптивной скоростью и метриками.
- Proxy Layer — менеджер пулов мобильных прокси и правил ротации.
- Storage — ClickHouse для событий и снапшотов, Postgres для транзакционных таблиц и метаданных, S3-совместимое хранилище для HTML.
- Observability — Prometheus/Grafana/ELK + алерты; профилирование на уровне request/response, прокси, воркера, темы очереди.
Партиционирование и идемпотентность
Ключ — это SKU_ID или CARD_ID. Используйте консистентное хэширование для распределения по партициям. Идемпотентность обеспечивается детерминированными ключами результатов: один SKU за интервал не должен создавать дубликаты. В ClickHouse — MergeTree с партицией по дате и первичным ключом (sku_id, snapshot_ts), плюс дедупликация по версии.
Backpressure и лимиты
Воркеры берут задания пачками (batch size 10–50) и адаптируют RPS на основе success rate и средней латентности. Лимиты вводятся по: 1) прокси-эндпойнту; 2) типу страницы; 3) региону. При деградации (рост 5xx, рост капчи) интенсивность снижается на 20–40% с экспоненциальным восстановлением.
Пример кода: базовый воркер с адаптивным троттлингом на Python
Пример иллюстративный, упрощен и без внешних зависимостей.
import time, random, queue; from threading import Thread; class RateLimiter: def __init__(self, rps): self.rps=rps; self.min_rps=0.3*rps; self.max_rps=2*rps; self.win=[]; def mark(self, ok): self.win.append(1 if ok else 0); self.win=self.win[-100:]; suc=sum(self.win)/len(self.win) if self.win else 1.0; if suc<0.8: self.rps=max(self.min_rps, self.rps*0.8); elif suc>0.95: self.rps=min(self.max_rps, self.rps*1.1); return self.rps; def sleep(self): time.sleep(1.0/max(self.rps,0.1)); class Worker(Thread): def __init__(self, q): super().__init__(); self.q=q; self.rl=RateLimiter(3.0); def run(self): while True: try: task=self.q.get(timeout=1); ok=self.process(task); self.rl.mark(ok); self.rl.sleep(); self.q.task_done(); except queue.Empty: break; def process(self, task): # заглушка запроса return random.random()>0.1; q=queue.Queue(); [q.put(f"sku-{i}") for i in range(1000)]; ws=[Worker(q) for _ in range(8)]; [w.start() for w in ws]; [w.join() for w in ws]
Прокси и ротация: мобильные IP как фактор естественности
Почему мобильные прокси: мобильные ASN, реальный радиодоступ, NAT-агрегация, естественные TTL и распределение IP повышают доверие антибота. Правильно управляя ротацией и сессиями, вы заметно повышаете success rate при умеренной цене за миллион карточек.
Стратегии ротации
- Sticky-сессии 10–30 минут для страниц, где важны согласованные шаги (HTML карточки, соседние запросы к JSON-подразделам).
- Hard-rotate при ошибках класса 403/429/капча — сменить IP немедленно и сбросить сессию.
- Soft-rotate по таймеру — равномерная смена IP раз в 5–15 минут для «свежести» пула.
- Scoring прокси — рейтинг на основе 1) доли 2xx; 2) средней латентности; 3) доли капчи; 4) размера ответа. Низкий скор — в карантин.
Интеграция с провайдером
В 2026 на рынке важны провайдеры с широким реальным мобильным покрытием. Сервисы уровня MobileProxy.Space предлагают 218+ млн IP, 53+ стран, реальные SIM-карты операторов, одновременные протоколы HTTP(S) и SOCKS5, ротацию по таймеру, API и ссылке, 3 часа бесплатного тестирования и поддержку 24/7. Для промышленного парсинга это даёт гибкость: можно строить пулы по странам и быстро масштабировать. К тому же удобны вспомогательные инструменты: проверка IP, DNS Leak Test, Proxy Checker, калькулятор прокси, карта задержек и генератор отпечатков браузера. Не забудьте промокод YOUTUBE20 — минус 20% на первую покупку.
Менеджер пула прокси: дизайн
- Абстракция Endpoint: адрес, страна, TTL, supports_http2, sticky_token, health_score.
- Policy: soft-rotate, hard-rotate, warmup N запросов, quarantine M минут после провала.
- Metrics: per-endpoint success, latency p95, error taxonomy (403, 429, 5xx, timeout).
- Allocator: выдаёт эндпойнт с учётом темы очереди, региона SKU и лимитов.
Сниппет: простой менеджер sticky-сессий
import time, random; class Proxy: def __init__(self, url): self.url=url; self.sticky_token=None; self.expire=0; self.score=1.0; def acquire(self): now=time.time(); if now>self.expire: self.sticky_token=str(random.randint(1,10**9)); self.expire=now+900; return {"server":self.url, "sticky":self.sticky_token}; def report(self, ok, latency): self.score=max(0.1,min(2.0,self.score*(1.05 if ok else 0.9))); class Pool: def __init__(self, urls): self.items=[Proxy(u) for u in urls]; def get(self): self.items.sort(key=lambda x:-x.score); return self.items[0].acquire()
Метод 1: Headless-браузер Playwright — когда нужен «человеческий» профиль
Когда использовать: сложный фронт, динамическая подгрузка, зависимость от буфера истории, проверка поведения, требования к корректному HTTP/2, приоритетам и порядку заголовков, а также для отладки.
Тонкая настройка контекста
- Headful-режим на низкой частоте либо headless с разумными viewport и deviceScaleFactor.
- Мобильные user-agent и медиазапросы, корректные Accept-Language, timezone, locale, geolocation.
- Отключение детектируемых API (navigator.webdriver), аккуратные задержки между действиями, загрузка изображений и частичная активность фоновых запросов.
Паттерн «прогрев и сбор»
- Создайте контекст с прокси и куки.
- Откройте список, совершите 1–2 прокрутки.
- Перейдите в карточку, дождитесь domcontentloaded, затем networkidle (осторожно, не всегда наступит).
- Извлеките HTML и ключевые JSON-эндпоинты (через route или page.wait_for_response).
- Сделайте паузу 300–900 мс; закройте страницу.
Python-сниппет: упрощенный сбор карточки
from playwright.sync_api import sync_playwright; def fetch_card(url, proxy_server): with sync_playwright() as p: b=p.chromium.launch(headless=True, proxy={"server":proxy_server}); ua="Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0 Mobile Safari/537.36"; ctx=b.new_context(user_agent=ua, locale="ru-RU", timezone_id="Europe/Moscow"); page=ctx.new_page(); page.goto(url, wait_until="domcontentloaded", timeout=30000); page.wait_for_timeout(600); html=page.content(); b.close(); return html
Практические советы
- Соберите словарь «хороших» паттернов задержек: короткие human-like паузы повысят конверсию ответов.
- Не повышайте конкурентность страниц в одном контексте выше 3–5 одновременно.
- Переработайте капчу через ручное подтверждение или легальные сервисы распознавания только там, где это разрешено и уместно.
Метод 2: Высокопроизводительный HTTP-клиент с корректным профилем
Когда использовать: фронт стабильно отдаёт JSON без сложной привязки к поведению, а также для HTML-страниц, где важно количество и скорость.
Ключевые элементы
- HTTP/2-транспорт с настраиваемым порядком заголовков, поддержкой ALPN и H2-приоритетов.
- Корректные заголовки: User-Agent, Accept, Accept-Language, Cache-Control, Sec-CH-UA (аккуратно и последовательно).
- Cookie-jar и сессии, связанные с прокси.
- Рандомизация не ради рандомизации: профили не должны «скакать» от запроса к запросу.
Сниппет: aiohttp + базовая ретрай-политика с джиттером
import asyncio, aiohttp, random; async def get(url, proxy, headers, retries=3): backoff=0.4; for i in range(retries): try: timeout=aiohttp.ClientTimeout(total=20); async with aiohttp.ClientSession(timeout=timeout, headers=headers) as s: async with s.get(url, proxy=proxy) as r: if r.status==200: return await r.text(); elif r.status in (403,429): raise Exception("blocked"); else: raise Exception(f"bad:{r.status}"); except Exception as e: await asyncio.sleep(backoff*(2**i)+random.random()*0.2); return None
Практика
- Сведите число хостов в соединении к минимуму, реюзайте сессию.
- Ведите «паспорт» сессии: какой IP, какой UA, какие куки, сколько успешных запросов, когда менять.
- Следите за размерами ответов и дифференцируйте краулинг: если карточка не меняется, увеличьте период обхода.
Метод 3: Антибан-стратегии и поведенческие шаблоны
Стратегия «не вредить»: равномерное распределение нагрузки, мягкие пики, паузы в часы повышенной защиты, поддержание стабильных сессий, реакция на сигналы деградации. Избегайте агрессивных ретраев-потопов: это понижает общую конверсию пула.
Фреймворк SAFE
- Smooth — сглаживайте RPS и джиттер.
- Adaptive — адаптируйте по метрикам success/error/latency.
- Focused — приоритизируйте важные карточки, отложите низкоприоритетные в деградации.
- Ethical — соблюдайте регламенты, не трогайте закрытые разделы.
Сигналы защиты и реакции
- Рост 403/429 — снизить скорость на 30–50%, мягко ротировать IP, перезапустить контексты.
- Необычно малые ответы — проверка на «обрезанные» страницы; сменить профиль клиента.
- Массовые timeouts — проблемы сети или сервера; вводить экспоненциальный backoff.
Микс десктопных и мобильных профилей
Часть трафика держите десктопной (20–40%) для естественности, остальное — мобильной. Это повторяет реальное распределение и повышает доверие.
Метод 4: Обработка ошибок, дедупликация и самовосстановление
Цель: вместо хрупкого «падающего» краулера — самовосстанавливающийся конвейер.
Классификация ошибок
- Сетевые: timeouts, connection reset, TLS.
- HTTP: 4xx (включая 403/429), 5xx.
- Семантические: парсер не нашёл поле, изменилась схема JSON.
- Системные: нехватка памяти, медленное хранилище, падение очереди.
Политики повторов
- Hedged requests — дубликат через N секунд на другом прокси при вероятном затупе.
- Exponential backoff + jitter — стандарт для нестабильных сегментов.
- Poison queue — после 3–5 провалов задача уходит в изолированную очередь на разбор.
Сниппет: простейший circuit breaker
import time; class Circuit: def __init__(self, fail_thr=5, cool=60): self.fail=0; self.open_until=0; self.fail_thr=fail_thr; self.cool=cool; def allow(self): return time.time()>self.open_until; def report(self, ok): if ok: self.fail=0; else: self.fail+=1; if self.fail>=self.fail_thr: self.open_until=time.time()+self.cool; self.fail=0
Хранение данных: схемы, версии и скорость аналитики
Слои: 1) Raw — HTML/JSON снапшоты в объектном сторадже (S3-совместимом), с компрессией Zstd; 2) Staging — таблицы парсинга с полями по спецификации с возможностью частичной нехватки; 3) Core — нормализованные таблицы: товары, цены, остатки, рейтинги, отзывы; 4) Marts — агрегаты для продуктовой аналитики.
Выбор СУБД
- ClickHouse — быстрые вставки батчами и запросы по столбцам: отлично для снапшотов, логов и версионной истории.
- Postgres — транзакционные операции: статусы задач, конфигурация прокси, метаданные SKU, права доступа.
- Объектное хранилище — долговечность снапшотов, дешёвое хранение HTML.
Схема ClickHouse для динамики цен
CREATE TABLE prices ( sku_id UInt64, ts DateTime64(3), price UInt32, promo_price UInt32, seller_id UInt64, region LowCardinality(String), source LowCardinality(String) ) ENGINE=MergeTree PARTITION BY toDate(ts) ORDER BY (sku_id, ts) SETTINGS index_granularity=8192;
Версии и дедупликация
Сохраняйте хэш-сумму тела страницы; если контент не изменился, обновляйте только «пульс» (последний статус) и агрегируйте версионность по ключевым полям. Это снижает стоимость хранения и ускоряет отчёты.
Поток в аналитические витрины
Формируйте ежедневные срезы: минимальные цены по бренду/категории, динамика Buy Box, тайм-ту-сток-аут, средний рейтинг и распределение оценок. ClickHouse-матвью или dbt-пайплайны помогают автоматизировать публикации данных для BI.
Типичные ошибки, из-за которых падает success rate
- Грубая ротация IP — частая смена адреса при сохранении тех же куки и UA разрушает сессию. Держите связки «IP+cookies+UA» разумные интервалы.
- Одинаковые заголовки на все запросы — слишком стерильный профиль. Вносите естественные небольшие вариации и корректные Accept-*.
- Пики конкурентности — грузите «всю мощь» в час пик, ловите массовые 429. Переходите к сглаживанию RPS.
- Отсутствие обратной связи — нет метрик, нет адаптации. Обязательно считайте p95 латентности и распределение статусов.
- Хрупкий парсер — меняется порядок полей — всё падает. Делайте парсинг устойчивым к несущественным изменениям.
- Неоптимальное хранение — огромные дубли HTML без компрессии. Включайте Zstd и контроль версий.
Инструменты и ресурсы: что использовать в 2026
- Python-стек: Playwright (браузерная автоматизация), aiohttp/httpx (HTTP-клиент), pydantic (валидация), orjson (быстрый JSON), uvloop (ускорение событийного цикла), tenacity (ретраи), prometheus_client (метрики), structlog (логи).
- Очереди: Kafka (высокая пропускная), NATS (низкая латентность), Redis Streams (простота и скорость).
- Хранилище: ClickHouse, Postgres, MinIO или совместимый S3.
- Наблюдаемость: Prometheus+Grafana, OpenTelemetry, ELK.
- Сервис мобильных прокси: MobileProxy.Space — крупный пул мобильных IP, удобная ротация по API/таймеру/ссылке, поддержка 24/7, 3 часа бесплатного тестирования. Полезные бесплатные утилиты: проверка IP, DNS Leak Test, Proxy Checker, калькулятор прокси, карта задержек, генератор отпечатков браузера. Промокод YOUTUBE20 даёт 20% скидку на первую покупку.
- Тестовые окружения: изолированные стенды с эмуляцией нагрузки и синтетическими SKU, чтобы не мешать продакшну.
Кейсы и результаты: реальная производительность и экономика
Конфигурация №1: «Сбалансированная» (рекомендуется как старт)
- Цель: 1 000 000 карточек/сутки.
- Инфраструктура: 12–16 воркер-нод (4–8 vCPU, 8–16 GB RAM), Kafka или Redis Streams, ClickHouse кластер из 3 узлов (8–16 vCPU, NVMe), Postgres 2 vCPU.
- Прокси: пул 200–300 мобильных эндпойнтов, sticky 10–20 минут, мягкая ротация раз в 10 минут, hard-rotate по триггерам.
- Скорость: 120–160 карточек/сек пик; среднесуточно 11–13 карточек/сек.
- Success rate: 92–95% по HTML; 88–92% по защищённым JSON-эндпоинтам; общий 91–94%.
- Стоимость: вычисления и сторадж 300–600 долларов в месяц (зависит от региона и провайдера), прокси 900–1500 долларов при описанной нагрузке и качественной ротации. Итого 1200–2100 долларов/мес при хорошем управлении пулом и разумном TTL. Фактическая себестоимость одной карточки — 0.0012–0.0021 доллара.
Конфигурация №2: «Максимальная экономия»
- Цель: те же 1 млн/сутки, акцент на экономию.
- Инфраструктура: 8–10 нод с агрессивной утилизацией CPU, больше батчей и меньше параллельных браузеров.
- Прокси: 120–180 мобильных эндпойнтов, более длинные sticky (20–30 минут), осторожная скорость.
- Скорость: 80–110 карточек/сек пик.
- Success rate: 88–92% общий.
- Стоимость: 800–1500 долларов/мес.
Конфигурация №3: «High-availability»
- Цель: SLA 99.5% по расписанию и повышенная точность.
- Инфраструктура: 20–24 ноды, избыточность БД, два пула прокси из разных регионов.
- Скорость: 150–220 карточек/сек пик.
- Success rate: 94–97% общий (за счёт мягкой поведенческой стратегии и качественного мониторинга).
- Стоимость: 2000–3500 долларов/мес.
Практические итоги
- Квалифицированная ротация мобильных прокси и правильные сессии дают +6–12 п.п. к success rate по сравнению с статическими пулами.
- Снижение RPS в «тяжёлые часы» уменьшает долю 429 на 30–50% и повышает итоговую пропускную способность за сутки.
- Хранение полных HTML только при изменениях снижает объём на 45–70% при недельном горизонте.
FAQ: глубокие вопросы и ответы
1. Нужен ли всегда браузер?
Нет. Браузер полезен для сложного фронта и отладки. В большинстве стабильных зон достаточно корректного HTTP/2-клиента с правильными заголовками, сессиями и мобильным профилем.
2. Что важнее для антибана — IP или поведение?
Оба фактора критичны. Мобильные IP повышают доверие, но грубое поведение всё равно даст отказы. Правильные задержки, стабильные заголовки, аккуратные куки — обязательны.
3. Как распределять пул прокси по задачам?
Разделите по регионам и типам страниц. Для карточек и чувствительных JSON держите лучшие эндпойнты со sticky-сессиями, для статики используйте менее «дорогие» адреса.
4. Как диагностировать «скрытые» блокировки?
Смотрите на размер тела, время до первого байта, коды редиректов, отсутствие ожидаемых ключей в JSON. Снимайте HTML-снапшоты «плохих» ответов и сравнивайте.
5. Чем измерять успех?
Доля 2xx, полнота полей, доля изменившихся карточек, время обновления срезов, стоимость карточки, стабильность по часам.
6. Что делать с капчей?
Минимизировать её появление за счёт поведения и ротации. При необходимости — использовать разрешённые подходы ручной или сервисной верификации там, где это законно и допустимо правилами.
7. Как бороться с «дрейфом схемы»?
Слабосвязный парсинг: искать поля по устойчивым селекторам и подписям, держать несколько резолверов, оперативно выпускать патчи.
8. Какой формат хранить в Raw?
Сжатый HTML/JSON (Zstd), добавляйте метаданные: UA, IP/ASN (без персональных данных), тайминги, признаки успешности и версию парсера.
9. Как быстро перезапускать упавшие зоны?
Отдельные очереди по зонам, feature-flag для отключения сегмента, автоматический откат к «мягким» профилям, эскалация алерта дежурному инженеру.
10. Можно ли совместить наши прокси с публичными?
Не рекомендуем. Смешение ухудшает репутацию пула и предсказуемость. Держите чистые пулы, отслеживайте метрики и качество.
Заключение: резюме и план внедрения
Стабильный сбор 1 000 000 карточек Wildberries в сутки в 2026 — решаемая задача при условии инженерной дисциплины. Основа успеха — архитектура с очередями и адаптивными воркерами, грамотная ротация мобильных прокси, поведенческая «гигиена» клиента, корректное хранение и наблюдаемость. Начните со «сбалансированной» конфигурации, замерьте метрики, доведите success rate до 92–95%, затем оптимизируйте стоимость за счёт версионирования HTML, аккуратной ротации и распределения нагрузок по часам.
Мини-чек-лист для старта: 1) Разверните очередь и воркеры с адаптивным троттлингом; 2) Настройте пул мобильных прокси с sticky-сессиями и скорингом; 3) Определите политики ретраев, circuit breaker и poison queue; 4) Введите сквозные метрики и алерты; 5) Храните сырые снапшоты с Zstd и нормализованные таблицы в ClickHouse/Postgres; 6) Постройте витрины для продуктовой аналитики; 7) Проведите нагрузочное тестирование и калибруйте RPS по часам.
Если у вас нет стабильного пула мобильных адресов, начните с проверенного провайдера уровня MobileProxy.Space: реальные SIM-карты, 218+ млн IP, 53+ стран, ротация по таймеру и API, и 3 часа бесплатного теста, чтобы подобрать оптимальный пул и померить латентность через их карту задержек и Proxy Checker. И помните про промокод YOUTUBE20 — это сразу снижает входной порог. Дальше — дело техники: аккуратный код, прозрачные метрики и уважение к платформе. Тогда миллион карточек в сутки станет для вас рутиной, а не подвигом.