Caso 2026: Cómo extraer 1,000,000 de fichas de Wildberries al día — arquitectura, proxies, anti-bloqueo
Contenido del artículo
- Introducción: por qué es relevante y qué aprenderás
- Fundamentos: conceptos clave y términos
- Profundizando: cómo está estructurado el anti-bot hoy y qué es importante emular
- Arquitectura y colas de tareas: un marco que no 'falla' al millón diario
- Proxies y rotación: ip móviles como factor de naturalidad
- Método 1: navegador sin interfaz playwright — cuando se necesita un perfil 'humano'
- Método 2: cliente http de alto rendimiento con perfil correcto
- Método 3: estrategias anti-bloqueo y patrones de comportamiento
- Método 4: manejo de errores, deduplicación y auto-recuperación
- Almacenamiento de datos: esquemas, versiones y velocidad de analítica
- Errores típicos que disminuyen la tasa de éxito
- Herramientas y recursos: qué usar en 2026
- Casos y resultados: rendimiento y economía real
- Preguntas frecuentes: cuestiones profundas y respuestas
- Conclusión: resumen y plan de implementación
Introducción: por qué es relevante y qué aprenderás
Para 2026, Wildberries se habrá consolidado como uno de los ecosistemas de comercio electrónico más grandes de la región, y la calidad y velocidad de los datos de las fichas de productos se convertirán en un factor crítico para productores, distribuidores, analistas, equipos de arbitraje, departamentos de precios y gerentes de categoría. La monitorización diaria de precios, existencias, Buy Box, posiciones, contenido y reseñas ya no puede hacerse manualmente o con pequeños scripts. Se necesita una arquitectura industrial que pueda recolectar un millón de fichas al día con un costo claro y un SLA predecible.
En este artículo, analizaremos cómo diseñar y operar una línea de producción de este tipo: desde el diseño de colas y orquestación de tareas hasta la correcta rotación de proxies móviles y eludir de manera cuidadosa el anti-bot de WB. Mostraremos la estructura del almacenamiento, la entrega de datos a las vitrinas de análisis, el análisis de errores y devoluciones. Además, proporcionaremos cifras reales sobre velocidad, costos y tasa de éxito en condiciones reales de 2026. Obtendrás marcos de trabajo funcionales y snippets en Python, listas de verificación para el lanzamiento a producción y principios que perdurarán a través de cualquier actualización del anti-bot.
Nos enfocamos en la recolección responsable y legal de datos públicos. Respeta las normas del servicio, la legislación y las normas éticas. Nuestro objetivo es la disciplina ingenieril: previsibilidad, resistencia a fallos, seguridad y eficiencia.
Fundamentos: conceptos clave y términos
Ficha de producto — página con atributos de SKU (nombre, marca, foto, características), precios (base, descuentos, promociones), disponibilidad y logística (almacenamiento, tiempo de entrega), contenido (descripción, video), señales sociales (calificaciones, reseñas, preguntas). Para el monitoreo estable de fichas, es importante separar los componentes: núcleo (campos invariables), dinámica (precios, existencias), métricas derivadas (Buy Box, precios mínimos por vendedores).
Tipos de fuentes: 1) páginas HTML públicas; 2) endpoints JSON frontales que entregan datos para renderizado; 3) imágenes y estáticos (CDN) — no siempre necesarios, pero útiles para controlar la calidad del contenido. En 2026, las APIs frontales estarán intensamente protegidas: características de comportamiento y red, correcta implementación de HTTP/2, encabezados y cookies, huellas TLS, además de un perfil legítimo móvil/escritorio.
Recolección legal de datos — no vulnerar derechos, no eludir accesos de pago, no interferir en la funcionalidad del servicio, no sobrecargar la plataforma, respetar los límites económicos y la privacidad de los usuarios. Limítate a las fichas de productos de acceso público, no toques secciones privadas.
Nivel de red: son importantes los ASN (operador), tipo de IP (móvil NAT, residencial), protocolo (HTTP/2, a veces HTTP/3 en estáticos), soporte TLS 1.3, huellas JA3/JA4 correctas y contenido de ClientHello. Para el éxito estable en WB, se prefiere emular clientes reales con patrones de comportamiento y un perfil móvil, así como una geografía IP razonable.
Sesiones y cookie jar: marcadores no reproducibles y cookies de comportamiento afectan el acceso. Un cookie jar estable a nivel de sesión proxy, una cuidadosa transmisión de contexto entre solicitudes y respeto por el TTL son la base para una alta conversión de solicitudes.
Arquitectura de datos: pipeline de cola de tareas (con priorización), trabajadores (con velocidad y límites adaptativos), almacenamiento (snapshots crudos, tablas normalizadas en Postgres/ClickHouse, capa de vitrinas), así como una capa de monitoreo (métricas, logs, alertas). Las cualidades clave son la idempotencia de operaciones, trazabilidad desde la tarea hasta el resultado y la posibilidad de recuperación parcial.
Profundizando: cómo está estructurado el anti-bot hoy y qué es importante emular
En 2026, el anti-bot de marketplaces (incluyendo WB) evalúa no solo la historia de IP, sino también el perfil compuesto del cliente: huella TLS, prioridades y ventana HTTP/2, orden de encabezados, encabezados de seguridad y cacheo, semántica UA y plataforma, consistencia de encabezados Accept-* y Sec-*, mapa temporal de clics y desplazamientos en el navegador, retardos correctos entre navegaciones, errores de red, así como estadísticas de comportamiento por sesión y pre-fetching. El ritmo es importante: picos de solicitudes paralelas desde un solo 'cliente' llaman la atención, al igual que una navegación completamente 'estéril' sin imágenes, service workers y solicitudes en segundo plano.
De aquí surgen tres consecuencias. Primero: un cliente HTTP desnudo con una biblioteca por defecto a menudo es insuficiente; se necesita integración con un navegador moderno sin interfaz (Playwright con ajustes finos), o un stack HTTP/2 cuidadosamente ensamblado con características de bajo nivel correctas. Segundo: proxies móviles aumentan notablemente la naturalidad del tráfico gracias a la agregación NAT y el perfil real de las redes móviles. Tercero: hay que manejar cuidadosamente las cookies, no resetearlas sin motivo y sincronizar la sesión con el ciclo de vida IP.
Prácticamente, esto significa: 1) pools separados de perfiles de escritorio y móviles; 2) sesiones 'pegajosas' (sticky) de 10 a 30 minutos si es necesario mantener el comportamiento, y sesiones cortas para accesos únicos; 3) enrutamiento geográficamente razonable (país, región), que corresponda a la lógica de usuarios de WB; 4) velocidad suave (adaptive rate), que considere los tipos de páginas, la hora del día y la respuesta del servidor.
Arquitectura y colas de tareas: un marco que no 'falla' al millón diario
Objetivo de la sección: construir una línea de producción de módulos que sean fácilmente escalables: orquestador, planificador, cola, trabajadores, capa de proxy, bucles de control, almacenamiento.
Esquema de alto nivel
- Scheduler — define prioridades: nuevos SKU, modificados, problemáticos, recorridos periódicos, descarga de bundles omitidos.
- Dispatcher — coloca tareas en la cola con las claves de particionamiento necesarias.
- Queue — Kafka o NATS para paso y redistribución continua; Redis Streams para rápida iteración.
- Workers — procesos aislados (Python) con velocidad y métricas adaptativas.
- Proxy Layer — administrador de pools de proxies móviles y reglas de rotación.
- Storage — ClickHouse para eventos y snapshots, Postgres para tablas transaccionales y metadatos, almacenamiento compatible con S3 para HTML.
- Observabilidad — Prometheus/Grafana/ELK + alertas; perfilado a nivel de request/response, proxy, worker, tema de cola.
Particionamiento e idempotencia
La clave es SKU_ID o CARD_ID. Usa hashing consistente para la distribución entre particiones. La idempotencia está garantizada por claves determinísticas de resultados: un SKU por intervalo no debe crear duplicados. En ClickHouse — MergeTree con partición por fecha y clave primaria (sku_id, snapshot_ts), más deduplicación por versión.
Backpressure y límites
Los trabajadores toman tareas en lotes (batch size 10–50) y adaptan RPS según la tasa de éxito y la latencia media. Se imponen límites por: 1) endpoint de proxy; 2) tipo de página; 3) región. En caso de degradación (aumento de 5xx, aumento de captcha), la intensidad disminuye un 20–40% con recuperación exponencial.
Ejemplo de código: worker básico con throttling adaptativo en Python
El ejemplo es ilustrativo, simplificado y sin dependencias externas.
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): # placeholder de request 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]
Proxies y rotación: IP móviles como factor de naturalidad
Por qué proxies móviles: ASN móviles, acceso radio real, agregación NAT, TTL naturales y distribución de IP aumentan la confianza del anti-bot. Manejó correctamente la rotación y las sesiones, puedes aumentar notablemente la tasa de éxito a un costo moderado por millón de fichas.
Estrategias de rotación
- Sesiones pegajosas de 10 a 30 minutos para páginas donde son importantes los pasos acordados (fichas HTML, solicitudes adyacentes a subsecciones JSON).
- Rotación dura ante errores de clase 403/429/captcha — cambiar IP inmediatamente y resetear la sesión.
- Rotación suave por temporizador — cambio uniforme de IP cada 5 a 15 minutos para 'frescurar' el pool.
- Scoring de proxies — calificación basada en 1) proporción 2xx; 2) latencia promedio; 3) proporción de captcha; 4) tamaño de respuesta. Bajo puntaje — en cuarentena.
Integración con el proveedor
En 2026, en el mercado son importantes los proveedores con amplia cobertura móvil real. Servicios como MobileProxy.Space ofrecen más de 218 millones de IP, 53 países, SIM reales de operadores, protocolos simultáneos HTTP(S) y SOCKS5, rotación por temporizador, API y enlace, 3 horas de prueba gratuita y soporte 24/7. Para scraping industrial, esto ofrece flexibilidad: puedes construir pools por países y escalar rápidamente. Además, son útiles herramientas auxiliares: verificación de IP, DNS Leak Test, Proxy Checker, calculadora de proxies, mapa de latencias y generador de huellas de navegador. No olvides el código promocional YOUTUBE20 — 20% de descuento en la primera compra.
Diseño del administrador de pool de proxies
- Abstracción Endpoint: dirección, país, TTL, supports_http2, sticky_token, health_score.
- Política: soft-rotate, hard-rotate, warmup N solicitudes, quarantine M minutos tras fallo.
- Métricas: éxito por endpoint, latencia p95, taxonomía de errores (403, 429, 5xx, timeout).
- Allocator: distribuye el endpoint considerando el tema de la cola, región SKU y límites.
Snippet: simple administrador de sesiones 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()
Método 1: Navegador sin interfaz Playwright — cuando se necesita un perfil 'humano'
Cuándo usarlo: frente complicado, carga dinámica, dependencia del historial de navegación, chequeo de comportamiento, requerimientos para HTTP/2, prioridades y orden de encabezados, además de para depuración.
Ajustes finos del contexto
- Modo headful a baja frecuencia o headless con viewport y deviceScaleFactor razonables.
- Agentes de usuario móviles y media queries, Accept-Language adecuadas, timezone, locale, geolocalización.
- Desactivar APIs detectables (navigator.webdriver), retardos cuidadosos entre acciones, carga de imágenes y actividad parcial en solicitudes en segundo plano.
Patrón de 'precalentamiento y recolección'
- Crea un contexto con proxy y cookies.
- Abre la lista, haz 1-2 desplazamientos.
- Ve a la ficha, espera a que se cargue domcontentloaded, luego networkidle (ten cuidado, no siempre ocurrirá).
- Extrae HTML y puntos finales JSON clave (a través de route o page.wait_for_response).
- Haz una pausa de 300 a 900 ms; cierra la página.
Snippet en Python: recolección simplificada de ficha
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
Consejos prácticos
- Recoge un diccionario de 'buenos' patrones de retardos: pausar brevemente como un humano aumentará la conversión de respuestas.
- No aumentes la concurrencia de páginas en un mismo contexto por encima de 3-5 al mismo tiempo.
- Resuelve el captcha a través de confirmación manual o servicios legales de reconocimiento solo donde sea permitido y pertinente.
Método 2: Cliente HTTP de alto rendimiento con perfil correcto
Cuándo utilizar: el frente entrega JSON de manera estable sin un comportamiento complicado, así como para páginas HTML donde la cantidad y velocidad son importantes.
Elementos clave
- Transporte HTTP/2 con orden de encabezados configurable, soporte ALPN y prioridades H2.
- Encabezados correctos: User-Agent, Accept, Accept-Language, Cache-Control, Sec-CH-UA (cuidadosamente y de manera consistente).
- Cookie-jar y sesiones, relacionadas con proxies.
- Randomización no solo por randomización: los perfiles no deben 'saltar' de solicitud a solicitud.
Snippet: aiohttp + política de reintento básica con jitter
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("bloqueado"); else: raise Exception(f"malo:{r.status}"); except Exception as e: await asyncio.sleep(backoff*(2**i)+random.random()*0.2); return None
Práctica
- Minimiza el número de hosts en la conexión, reutiliza la sesión.
- Llevar un 'pasaporte' de sesión: qué IP, qué UA, qué cookies, cuántas solicitudes exitosas, cuándo cambiar.
- Observa el tamaño de las respuestas y diferencia el crawling: si la ficha no cambia, aumenta el periodo de recorrido.
Método 3: Estrategias anti-bloqueo y patrones de comportamiento
Estrategia 'no dañar': distribución uniforme de carga, picos suaves, pausas en horas de alta seguridad, mantenimiento de sesiones estables, reacción a señales de degradación. Evita ataques agresivos de reintentos: esto disminuye la tasa de conversión del pool en general.
Framework SAFE
- Suave — suaviza RPS y jitter.
- Adaptativo — adapta según métricas de éxito/error/latencia.
- Enfocado — prioriza fichas importantes, aplaza de bajo prioridad en degradación.
- Ético — respeta las regulaciones, no toques secciones privadas.
Señales de protección y reacciones
- Aumento de 403/429 — reduce la velocidad entre un 30–50%, rota suavemente la IP, reinicia contextos.
- Respuestas anormalmente pequeñas — verificar 'páginas recortadas'; cambia el perfil del cliente.
- Masivas timeouts — problemas de red o del servidor; implementar un backoff exponencial.
Mezcla de perfiles de escritorio y móviles
Mantén parte del tráfico en escritorio (20-40%) para naturalidad, el resto en móviles. Esto replica la distribución real y aumenta la confianza.
Método 4: Manejo de errores, deduplicación y auto-recuperación
Objetivo: en lugar de un crawler frágil que 'falla' — un pipeline de auto-recuperación.
Clasificación de errores
- Redes: timeouts, conexión restablecida, TLS.
- HTTP: 4xx (incluyendo 403/429), 5xx.
- Semánticos: el parser no encontró el campo, cambió el esquema JSON.
- Sistemáticos: falta de memoria, almacenamiento lento, caída de cola.
Políticas de reintentos
- Hedged requests — duplicado a N segundos en otro proxy ante posible bloqueo.
- Exponential backoff + jitter — estándar para segmentos inestables.
- Poison queue — tras 3-5 fracasos, la tarea va a una cola aislada para su análisis.
Snippet: el circuito breaker más simple
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
Almacenamiento de datos: esquemas, versiones y velocidad de analítica
Capas: 1) Raw — snapshots HTML/JSON en almacenamiento objeto (compatible con S3), con compresión Zstd; 2) Staging — tablas de scraping con campos según especificación con posibilidad de falta parcial; 3) Core — tablas normalizadas: productos, precios, existencias, calificaciones, reseñas; 4) Marts — agregados para analítica de productos.
Selección de DBMS
- ClickHouse — inserciones rápidas en lotes y consultas por columnas: excelente para snapshots, logs e historial de versiones.
- Postgres — operaciones transaccionales: estados de tareas, configuración de proxies, metadatos de SKU, permisos.
- Almacenamiento de objetos — durabilidad de snapshots, almacenamiento económico de HTML.
Esquema ClickHouse para dinámica de precios
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;
Versiones y deduplicación
Guarda el hash del contenido de la página; si el contenido no ha cambiado, solo actualiza el 'pulso' (el último estado) y agrega la versionabilidad según campos clave. Esto reduce los costos de almacenamiento y acelera los reportes.
Flujo hacia vitrinas analíticas
Forma cortes diarios: precios mínimos por marca/categoría, dinámica de Buy Box, tiempo hasta agotarse, calificación promedio y distribución de puntajes. Las vistas materializadas de ClickHouse o pipelines de dbt ayudan a automatizar las publicaciones de datos para BI.
Errores típicos que disminuyen la tasa de éxito
- Rotación de IP áspera — cambio frecuente de dirección manteniendo las mismas cookies y UA destruye la sesión. Mantén combinaciones 'IP+cookies+UA' en intervalos razonables.
- Encabezados iguales en todas las solicitudes — perfil demasiado estéril. Introduce pequeñas variaciones naturales y acepta-* correctas.
- Picos de concurrencia — sobrecargas 'toda la potencia' en hora pico, provocando masivos 429. Pasa a suavizar el RPS.
- Falta de retroalimentación — sin métricas, sin adaptación. Asegúrate de contabilizar la latencia p95 y la distribución de estados.
- Parser frágil — cambia el orden de campos y todo falla. Haz que el scraping sea resistente a cambios no esenciales.
- Almacenamiento subóptimo — enormes duplicados de HTML sin compresión. Usa Zstd y mantén el control de versiones.
Herramientas y recursos: qué usar en 2026
- Matriz de Python: Playwright (automatización del navegador), aiohttp/httpx (cliente HTTP), pydantic (validación), orjson (JSON rápido), uvloop (aceleración del ciclo de eventos), tenacity (reintentos), prometheus_client (métricas), structlog (logs).
- Colas: Kafka (alta capacidad de paso), NATS (baja latencia), Redis Streams (simples y rápidas).
- Almacenamiento: ClickHouse, Postgres, MinIO o S3 compatible.
- Observabilidad: Prometheus+Grafana, OpenTelemetry, ELK.
- Servicio de proxies móviles: MobileProxy.Space — gran pool de IP móviles, fácil rotación a través de API/temporizador/enlace, soporte 24/7, 3 horas de prueba gratuita. Útiles herramientas gratuitas: verificación de IP, DNS Leak Test, Proxy Checker, calculadora de proxies, mapa de latencias, generador de huellas de navegador. El código promocional YOUTUBE20 da un 20% de descuento en la primera compra.
- Entornos de prueba: stands aislados con emulación de carga y SKU sintéticos, para no interferir con la producción.
Casos y resultados: rendimiento y economía real
Configuración nº1: 'Balanceada' (recomendada como inicio)
- Objetivo: 1,000,000 de fichas/día.
- Infraestructura: 12–16 nodos de trabajadores (4–8 vCPU, 8–16 GB RAM), Kafka o Redis Streams, clúster ClickHouse de 3 nodos (8–16 vCPU, NVMe), Postgres 2 vCPU.
- Proxies: pool de 200–300 endpoints móviles, pegajosos de 10–20 minutos, rotación suave cada 10 minutos, rotación dura por triggers.
- Velocidad: 120–160 fichas/segundo pico; promedio diario 11–13 fichas/segundo.
- Tasa de éxito: 92–95% en HTML; 88–92% en endpoints JSON protegidos; global 91–94%.
- Costo: cálculos y almacenamiento 300–600 dólares al mes (depende de la región y proveedor), proxies 900–1500 dólares ante carga descrita y rotación de calidad. Total 1200–2100 dólares/mes con buena gestión del pool y TTL razonable. Costo efectivo por ficha — 0.0012–0.0021 dólares.
Configuración nº2: 'Máxima economía'
- Objetivo: el mismo 1 millón/día, enfocado en economía.
- Infraestructura: 8–10 nodos con uso agresivo de CPU, más lotes y menos navegadores paralelos.
- Proxies: 120–180 endpoints móviles, sesiones pegajosas más largas (20–30 minutos), velocidad cautelosa.
- Velocidad: 80–110 fichas/segundo pico.
- Tasa de éxito: 88–92% total.
- Costo: 800–1500 dólares/mes.
Configuración nº3: 'Alta disponibilidad'
- Objetivo: SLA 99.5% programado y mayor precisión.
- Infraestructura: 20–24 nodos, redundancia de base de datos, dos pools de proxies de diferentes regiones.
- Velocidad: 150–220 fichas/segundo pico.
- Tasa de éxito: 94–97% total (gracias a una estrategia de comportamiento suave y monitoreo de calidad).
- Costo: 2000–3500 dólares/mes.
Resultados prácticos
- La rotación calificada de proxies móviles y las sesiones adecuadas aportan entre 6–12 puntos porcentuales a la tasa de éxito en comparación con pools estáticos.
- Reducir el RPS en 'horas pesadas' disminuye la proporción de 429 en un 30–50% y mejora la capacidad total de paso por día.
- Almacenar HTML completos solo ante cambios reduce el volumen en un 45–70% con un horizonte semanal.
Preguntas frecuentes: cuestiones profundas y respuestas
1. ¿Siempre se necesita un navegador?
No. El navegador es útil para frentes complicados y depuración. En la mayoría de las zonas estables, es suficiente con un cliente HTTP/2 correcto con los encabezados, sesiones y perfil móvil adecuados.
2. ¿Qué es más importante para el anti-bloqueo: IP o comportamiento?
Ambos factores son críticos. Las IP móviles aumentan la confianza, pero un comportamiento grosero aún generará bloqueos. Los retardos correctos, encabezados estables y cookies adecuadas son obligatorios.
3. ¿Cómo distribuir el pool de proxies entre tareas?
Divide por regiones y tipos de páginas. Para fichas y JSON sensibles, mantén los mejores endpoints con sesiones pegajosas, para estáticos usa direcciones menos 'costosas'.
4. ¿Cómo diagnosticar bloqueos 'ocultos'?
Observa el tamaño del cuerpo, tiempo hasta el primer byte, códigos de redirección, ausencia de claves esperadas en JSON. Toma snapshots HTML de 'malas' respuestas y compáralos.
5. ¿Cómo medir el éxito?
Proporción de 2xx, completitud de campos, proporción de fichas cambiadas, tiempo de actualización de cortes, costo por ficha, estabilidad por horas.
6. ¿Qué hacer con los captchas?
Minimiza su aparición a través de comportamiento y rotación. Cuando sea necesario, utiliza enfoques de verificación manual o de servicio permitidos donde sea legal y adecuado según las normas.
7. ¿Cómo combatir el 'deriva de esquema'?
Scraping débilmente acoplado: busca campos por selectores y firmas resistentes, mantén varios resolvers, publica parches rápidamente.
8. ¿Qué formato almacenar en Raw?
HTML/JSON comprimido (Zstd), añade metadatos: UA, IP/ASN (sin datos personales), timings, señales de éxito y versión del parser.
9. ¿Cómo reiniciar rápidamente zonas caídas?
Colas separadas por zonas, feature-flag para deshabilitar segmento, rollback automático a perfiles 'suaves', escalada de alerta a ingeniero de guardia.
10. ¿Se pueden combinar nuestros proxies con públicos?
No lo recomendamos. La mezcla deteriora la reputación del pool y la previsibilidad. Mantén pools limpios, controla métricas y calidad.
Conclusión: resumen y plan de implementación
Recolectar de manera estable 1,000,000 de fichas de Wildberries al día en 2026 es una tarea posible bajo la disciplina ingenieril. La base del éxito es una arquitectura con colas y trabajadores adaptativos, una rotación correcta de proxies móviles, 'higiene' de cliente de comportamiento, almacenamiento adecuado y observabilidad. Comienza con la configuración 'balanceada', mide métricas, lleva la tasa de éxito al 92–95%, luego optimiza el costo mediante la versionabilidad de HTML, rotación cuidadosa y distribución de cargas por horas.
Mini-lista de verificación para iniciar: 1) Despliega cola y trabajadores con throttling adaptativo; 2) Configura pool de proxies móviles con sesiones pegajosas y scoring; 3) Define políticas de reintentos, circuit breaker y poison queue; 4) Introduce métricas y alertas de trazabilidad; 5) Almacena snapshots crudos con Zstd y tablas normalizadas en ClickHouse/Postgres; 6) Construye vitrinas para analítica de productos; 7) Realiza pruebas de carga y calibra RPS por horas.
Si no cuentas con un pool estable de direcciones móviles, comienza con un proveedor confiable como MobileProxy.Space: SIM reales, más de 218 millones de IP, 53 países, rotación por temporizador y API, y 3 horas de prueba gratuita para encontrar el pool óptimo y medir latencia a través de su mapa de latencias y Proxy Checker. Y recuerda el código promocional YOUTUBE20 — eso baja inmediatamente el umbral de entrada. Luego, es cuestión de técnica: código cuidadoso, métricas claras y respeto por la plataforma. Así, un millón de fichas al día se convertirá en tu rutina, y no en un logro.