Si estás realizando scraping de marketplaces durante la noche, creando cuentas de Facebook Ads durante 8 horas o automatizando publicaciones masivas en Instagram, te habrás encontrado con el problema de la desconexión de sesiones. El proxy cambia la IP, el navegador pierde las cookies, el script falla en la tercera hora de trabajo. En esta guía, analizaremos cómo configurar sesiones estables de larga duración para tareas que funcionan durante varias horas hasta un día sin detenerse.
Qué es la gestión de sesiones y para qué sirve
La gestión de sesiones es el manejo del estado de la conexión entre tu herramienta (navegador, script, bot) y el servicio objetivo durante un tiempo prolongado. Para tareas cortas, como el scraping de 100 productos en 5 minutos, esto no es crítico. Pero si la tarea se realiza durante varias horas, es importante mantener:
- La misma dirección IP — para que el sitio no sospeche un cambio de dispositivo
- Cookies y localStorage — para la autenticación y el seguimiento de acciones
- Fingerprint del navegador — conjunto de características del dispositivo (User-Agent, resolución de pantalla, WebGL)
- Estado del script — qué páginas han sido procesadas, dónde se detuvo en caso de fallo
Si al menos uno de los parámetros cambia durante el proceso, el sitio puede bloquear la cuenta, interrumpir el scraping de CAPTCHA o restablecer la sesión de autenticación.
Tareas típicas de larga duración: creación de cuentas de Facebook Ads (6-12 horas de calentamiento), scraping de todos los productos de una categoría en Wildberries (3-8 horas), publicación masiva en 50 cuentas de Instagram (4-10 horas con retrasos), monitoreo de precios de competidores 24/7.
Problemas típicos en sesiones largas
Analicemos qué es lo que más frecuentemente interrumpe las sesiones de larga duración y lleva a la detención de la tarea:
1. Rotación de la dirección IP del proxy
Muchos servicios de proxy cambian la IP por defecto cada 5-15 minutos. Para scraping sin autenticación esto es normal, pero si estás logueado en una cuenta de Facebook Ads, un cambio de IP de Moscú a San Petersburgo a mitad de sesión generará sospechas. La plataforma pedirá confirmación de inicio de sesión, enviará un código al teléfono o incluso bloqueará la cuenta por actividad sospechosa.
Solución: utilizar sticky sessions (sesiones pegajosas) — un modo en el que el proxy proporciona la misma IP durante 10 minutos, 1 hora o 24 horas. Más detalles en la sección siguiente.
2. Tiempo de espera de conexión del proxy
Algunos proveedores de proxy cierran la conexión si no hay actividad durante 10-30 minutos. Si tu script hace una pausa entre acciones (por ejemplo, imita a una persona — 5 minutos leyendo un producto, luego pasa al siguiente), el proxy puede cerrar la conexión. Al intentar continuar, el script recibirá un error y fallará.
Solución: configurar solicitudes keep-alive (ping al proxy cada 2-3 minutos) o elegir un proveedor sin tiempos de espera estrictos. Los proxies residenciales y móviles suelen mantener la conexión más tiempo que los de centros de datos.
3. Cambio del fingerprint del navegador
Si reinicias el navegador anti-detección o el script crea una nueva instancia del navegador, el fingerprint cambia. Incluso con la misma IP, el sitio verá que el User-Agent, la resolución de pantalla, la lista de fuentes o el fingerprint del canvas difieren de la sesión anterior. Esto activa los sistemas anti-fraude.
Solución: guardar el perfil del navegador (en Dolphin Anty, AdsPower, Multilogin esto se hace automáticamente) y no crear uno nuevo en cada inicio. Si usas Selenium o Puppeteer, guarda el User Data Directory con cookies y configuraciones.
4. Pérdida del estado del script en caso de fallo
El script ha estado haciendo scraping durante 6 horas, ha procesado 8000 productos de 10000, y falla debido a un error de red. Si no se guarda el progreso, tendrás que empezar de nuevo. Esto es especialmente crítico para tareas de 12+ horas.
Solución: guardar resultados intermedios en una base de datos o archivo cada N iteraciones (por ejemplo, cada 100 productos). Al reiniciar, el script continuará desde la última posición guardada.
Qué proxies son adecuados para tareas de larga duración
No todos los tipos de proxies son igualmente buenos para sesiones largas. Aquí hay una comparación según los criterios de estabilidad y tiempo de vida de la IP:
| Tipo de proxy | Tiempo de vida de la IP | Estabilidad | Adecuado para |
|---|---|---|---|
| Centros de datos | Ilimitado (IP estática) | Alta, pero fácilmente detectables | Scraping sin autenticación, monitoreo de precios |
| Residenciales | 10 min — 24 horas (sticky sessions) | Media (depende del proveedor) | Creación de cuentas, scraping con autenticación |
| Móviles | 5-30 minutos (cambio por temporizador del operador) | Baja (cambios frecuentes de IP) | Tareas cortas en redes sociales, eludir bloqueos estrictos |
| Proxies ISP | Ilimitado (IP residencial estática) | Muy alta | Tareas largas con autenticación, creación de cuentas premium |
Recomendaciones para la elección:
- Para scraping de marketplaces sin autenticación (Wildberries, Ozon, Yandex.Market) — son adecuados los centros de datos con IP estática. Son baratos, rápidos, y si el sitio no bloquea estrictamente los centros de datos, manejarán tareas de 12+ horas.
- Para la creación de cuentas de Facebook Ads, TikTok Ads, Google Ads — solo proxies residenciales o ISP con sticky sessions de 24 horas. Los móviles no son adecuados debido a los cambios frecuentes de IP.
- Para la automatización de Instagram, TikTok — residenciales con sticky sessions de 1-6 horas. Si la tarea es corta (publicación en 10 cuentas en una hora) — también se pueden usar móviles.
- Para monitoreo 24/7 (seguimiento de precios de competidores, scraping de noticias) — proxies ISP o centros de datos, si el sitio no los bloquea.
Importante: ¡Los proxies móviles NO son adecuados para tareas de larga duración! La IP cambia cada 5-30 minutos por el temporizador del operador móvil, y no puedes controlarlo. Úsalos solo para tareas cortas (registro de cuentas, publicación única, eludir CAPTCHA).
Sticky sessions: cómo fijar la IP durante 24 horas
Sticky sessions (sesiones pegajosas) son un modo de operación del proxy en el que obtienes la misma dirección IP durante un tiempo determinado: 10 minutos, 1 hora, 6 horas o 24 horas. Esto es crítico para tareas con autenticación.
Cómo funcionan las sticky sessions
Normalmente, las sticky sessions se implementan a través de un ID de sesión en la URL del proxy. En lugar del formato estándar:
http://username:password@proxy.example.com:8000
Agregas el parámetro de sesión:
http://username-session-mysession123:password@proxy.example.com:8000
Ahora todas las solicitudes con el identificador mysession123 irán a través de la misma IP, hasta que expire el tiempo de vida de la sesión (normalmente 10-30 minutos por defecto). Si necesitas una sesión más larga, el proveedor puede ofrecer un parámetro de tiempo:
http://username-session-mysession123-lifetime-1440:password@proxy.example.com:8000
Donde lifetime-1440 significa 1440 minutos (24 horas).
Configuración de sticky sessions en servicios populares
En proxies residenciales: la mayoría de los proveedores soportan sticky sessions a través de parámetros en el nombre de usuario. Verifica el formato en la documentación de tu proveedor. Opciones típicas:
username-session-ABC123— fija la IP por el tiempo por defecto (10-30 minutos)username-session-ABC123-sessionduration-60— fija por 60 minutosusername-country-us-session-ABC123— IP de EE. UU. con fijación
En proxies ISP: normalmente la IP es estática por defecto, no se requieren sticky sessions — siempre obtienes la misma dirección, a menos que cambies el proxy manualmente.
En centros de datos: la IP es estática, no se necesitan configuraciones adicionales.
Ejemplo de uso en un navegador anti-detección
Supongamos que estás creando una cuenta de Facebook Ads en Dolphin Anty. La tarea es 8 horas de calentamiento (navegación por sitios, ver videos, dar "me gusta"). Configuración:
- Abre el perfil del navegador en Dolphin Anty
- Ve a la sección "Proxies"
- Selecciona el tipo: HTTP o SOCKS5
- Ingresa el host y el puerto del proxy
- En el campo "Login" indica:
username-session-farm001-sessionduration-480(480 minutos = 8 horas) - Ingresa la contraseña
- Haz clic en "Verificar proxy" — asegúrate de que la IP se detecta
- Guarda el perfil
Ahora durante 8 horas todas las solicitudes de este perfil irán a través de una IP. Incluso si cierras el navegador y lo abres después de una hora, al usar el mismo ID de sesión (farm001) obtendrás la misma IP.
Consejo: Utiliza IDs de sesión comprensibles, relacionados con la tarea. Por ejemplo, farm-fb-account-001, parse-wb-electronics. Esto facilitará la depuración si tienes decenas de tareas paralelas.
Configuración de navegadores anti-detección para sesiones largas
Los navegadores anti-detección (Dolphin Anty, AdsPower, Multilogin, GoLogin, Octo Browser) están diseñados precisamente para sesiones de larga duración con mantenimiento del fingerprint. Pero hay matices en la configuración que son críticos para tareas de 8+ horas.
1. Mantenimiento del perfil del navegador
El perfil del navegador es un conjunto de cookies, localStorage, fingerprint (User-Agent, canvas, WebGL, fuentes). Todos los navegadores anti-detección guardan perfiles automáticamente al cerrarse. ¡Lo principal es no crear un nuevo perfil en cada inicio de tarea!
Enfoque correcto:
- Crea un perfil una vez para una tarea específica (por ejemplo, "Crear cuenta FB #1")
- Configura el proxy con sticky session
- Realiza el primer inicio, inicia sesión en la cuenta
- Cierra el navegador — el perfil se guardará
- En el siguiente inicio, abre el MISMO perfil — la autenticación y el fingerprint se mantendrán
Enfoque incorrecto:
- Cada día crear un nuevo perfil para la misma tarea
- Eliminar cookies manualmente entre inicios
- Cambiar el fingerprint (User-Agent, resolución de pantalla) a mitad de tarea
2. Configuración del fingerprint para estabilidad
Para tareas largas, elige un fingerprint REALISTA que corresponda al proxy. Si el proxy es de Rusia (Moscú), no pongas un User-Agent de MacBook Pro con localización en inglés. Mejor:
- Sistema operativo: Windows 10 o 11 (los más populares en Rusia)
- Navegador: Chrome en la última versión (se actualiza automáticamente en anti-detección)
- Resolución de pantalla: 1920x1080 (la más común)
- Idioma: ru-RU, zona horaria: Europe/Moscow
- WebRTC: desactivar o reemplazar por la IP del proxy (para que no se filtre la IP real)
En Dolphin Anty y AdsPower hay una función "Crear fingerprint aleatorio" — genera una combinación plausible de parámetros. Para tareas largas, esto es más seguro que configurarlo manualmente.
3. Desactivación de actualizaciones automáticas y reinicios
Si la tarea funciona durante 12 horas, asegúrate de que:
- El ordenador no se vaya a modo de suspensión (desactiva en la configuración de energía de Windows/macOS)
- El antivirus no reinicie el sistema para actualizar (pospone las actualizaciones)
- El navegador anti-detección no se actualice automáticamente a mitad de tarea (en la configuración, desactiva la autoactualización o configúralo para la noche)
4. Uso de la API de navegadores anti-detección para automatización
Dolphin Anty, AdsPower, Multilogin proporcionan API para gestionar perfiles desde scripts. Esto permite:
- Iniciar un perfil de navegador desde un script de Python/Node.js
- Conectarse a él a través de Selenium o Puppeteer
- Ejecutar una tarea larga
- Cerrar el perfil automáticamente al finalizar
Ejemplo de inicio de perfil de Dolphin Anty a través de la API (Python):
import requests
from selenium import webdriver
# Iniciar perfil a través de la API de Dolphin Anty
profile_id = "123456"
response = requests.get(f"http://localhost:3001/v1.0/browser_profiles/{profile_id}/start")
data = response.json()
# Conectar Selenium al navegador iniciado
options = webdriver.ChromeOptions()
options.debugger_address = data['automation']['port']
driver = webdriver.Chrome(options=options)
# Ejecutar tarea
driver.get("https://example.com")
# ... tu código de scraping o automatización ...
# Cerrar perfil
requests.get(f"http://localhost:3001/v1.0/browser_profiles/{profile_id}/stop")
Este enfoque garantiza que el fingerprint y las cookies se mantendrán, incluso si el script falla; al reiniciar, te conectarás al mismo perfil.
Automatización y mantenimiento del estado
Para tareas de 8+ horas, es crítico mantener el progreso, para no empezar de nuevo en caso de fallo. Analicemos métodos para diferentes herramientas.
1. Mantenimiento del progreso en la base de datos
Si estás haciendo scraping de 10000 productos de Wildberries, guarda los resultados en SQLite, PostgreSQL o MongoDB después de cada 50-100 productos. Estructura de la tabla:
CREATE TABLE parsing_progress (
id INTEGER PRIMARY KEY,
url TEXT,
status TEXT, -- 'pending', 'completed', 'error'
data TEXT, -- JSON con resultados
created_at TIMESTAMP
);
Al iniciar, el script verifica qué URL aún no han sido procesadas (status = 'pending') y continúa desde allí. Si el script falla, al reiniciar omitirá los productos ya procesados.
2. Uso de colas de tareas
Para tareas complejas (por ejemplo, crear 50 cuentas de Facebook Ads en paralelo), utiliza sistemas de colas: Celery (Python), Bull (Node.js), RabbitMQ. El principio:
- Creas una lista de tareas (50 cuentas)
- Cada tarea es independiente (su propio perfil de navegador, su propio proxy)
- Los trabajadores toman tareas de la cola y las ejecutan
- Si un trabajador falla, la tarea regresa a la cola y es tomada por otro trabajador
Esto garantiza que ninguna tarea se pierda, incluso si parte de los procesos falla.
3. Registro y monitoreo
Para tareas de 12+ horas, configura un registro detallado:
- Registra en el log cada acción (se abrió la página, se hizo clic en el botón, se obtuvieron datos)
- Guarda capturas de pantalla en caso de errores (en Selenium:
driver.save_screenshot('error.png')) - Utiliza niveles de logs: INFO para acciones normales, WARNING para situaciones sospechosas (CAPTCHA, carga lenta), ERROR para fallos
Ejemplo de configuración de registro en Python:
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('parsing.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# En el código
logger.info(f"Producto procesado {product_id}")
logger.warning(f"Carga lenta de la página: {url}")
logger.error(f"Error de scraping: {error}")
Monitoreo y recuperación tras desconexiones
Incluso con la configuración correcta del proxy y del navegador, la sesión puede desconectarse: la red se cae, el proxy se reinicia, el sitio muestra un CAPTCHA. Es importante detectar el problema rápidamente y restaurar el funcionamiento.
1. Verificación de la disponibilidad del proxy
Antes de comenzar la tarea y periódicamente (cada 30-60 minutos), verifica que el proxy esté funcionando:
import requests
def check_proxy(proxy_url):
try:
response = requests.get(
'https://api.ipify.org?format=json',
proxies={'http': proxy_url, 'https': proxy_url},
timeout=10
)
if response.status_code == 200:
ip = response.json()['ip']
logger.info(f"El proxy está funcionando, IP: {ip}")
return True
except Exception as e:
logger.error(f"El proxy no responde: {e}")
return False
# Verificación antes de comenzar
if not check_proxy(proxy_url):
logger.error("El proxy no está disponible, deteniendo la tarea")
exit(1)
2. Manejo de CAPTCHA y bloqueos
Si el sitio muestra un CAPTCHA (Google reCAPTCHA, hCaptcha, Cloudflare Turnstile), la tarea se detiene. Opciones de solución:
- Solución automática de CAPTCHA: integración con servicios como 2Captcha, Anti-Captcha, CapMonster. Resuelven el CAPTCHA en 10-30 segundos, el script continúa trabajando.
- Cambio de proxy: si el CAPTCHA apareció debido a una IP sospechosa, cambia a otro proxy del pool y continúa.
- Pausa y repetición: a veces el CAPTCHA aparece debido a acciones demasiado rápidas. Haz una pausa de 2-5 minutos y luego repite la solicitud.
3. Reinicio automático en caso de fallo
Envuelve el código principal en un try-except y reinicia la tarea en caso de error:
import time
max_retries = 3
retry_delay = 60 # segundos
for attempt in range(max_retries):
try:
# Código principal de la tarea
run_parsing()
break # Si es exitoso, salimos del ciclo
except Exception as e:
logger.error(f"Error en el intento {attempt + 1}: {e}")
if attempt < max_retries - 1:
logger.info(f"Reiniciando en {retry_delay} segundos...")
time.sleep(retry_delay)
else:
logger.error("Se ha superado el número de intentos, deteniendo")
raise
4. Notificaciones sobre problemas
Para tareas que funcionan durante la noche o en fines de semana, configura notificaciones para errores críticos:
- Bot de Telegram: envía un mensaje en caso de error (a través de la biblioteca python-telegram-bot)
- Email: a través de SMTP (biblioteca smtplib en Python)
- SMS: a través de Twilio o servicios similares
Ejemplo de envío de notificación en Telegram:
import requests
def send_telegram_alert(message):
bot_token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
requests.post(url, data={'chat_id': chat_id, 'text': message})
# En caso de error
try:
run_parsing()
except Exception as e:
send_telegram_alert(f"⚠️ Error de scraping: {e}")
Escenarios prácticos de uso
Analicemos tareas específicas y la configuración óptima de gestión de sesiones para cada una.
Escenario 1: Creación de cuenta de Facebook Ads (8 horas de calentamiento)
Tarea: Calentar una nueva cuenta de Facebook Ads antes de lanzar publicidad. Necesita imitar el comportamiento de un usuario normal: ingresar a Facebook, leer el feed, ver videos, dar "me gusta", hacer clic en anuncios. Un total de 8 horas de actividad con pausas.
Configuración:
- Proxy: Residencial con sticky session de 8-12 horas, país — el mismo que se indica en la cuenta (si la cuenta es de EE. UU. — proxy de EE. UU.)
- Navegador: Dolphin Anty o AdsPower, crear un perfil separado para esta cuenta
- Fingerprint: Realista para el país (Windows 10, Chrome, resolución 1920x1080, idioma en-US para EE. UU.)
- Automatización: Script en Selenium con retrasos aleatorios (5-15 minutos entre acciones), imitación de desplazamiento y movimiento del mouse
- Mantenimiento del progreso: Registro de todas las acciones en un archivo, para continuar desde el último en caso de fallo
Riesgos: Cambio de IP a mitad de sesión — Facebook pedirá confirmación de inicio de sesión. Acciones demasiado rápidas — la cuenta será sospechosa.
Escenario 2: Scraping de todos los productos de una categoría en Wildberries (6 horas)
Tarea: Hacer scraping de todos los productos de la categoría "Electrónica" en Wildberries (alrededor de 50000 productos). Necesita obtener el nombre, precio, calificación, cantidad de reseñas. El scraping se realiza sin autenticación.
Configuración:
- Proxy: Centro de datos con IP estática (Wildberries generalmente no bloquea estrictamente los centros de datos) o residencial con sticky session de 6+ horas
- Navegador: No es obligatorio, se puede usar requests + BeautifulSoup (más rápido) o Selenium (si el sitio está en JavaScript)
- Mantenimiento del progreso: Base de datos SQLite, guardar cada 100 productos. Al reiniciar, omitir los ya procesados.
- Manejo de errores: Si un producto no se carga (404, timeout) — omitir y continuar, registrar en el log
Riesgos: Wildberries puede mostrar un CAPTCHA con solicitudes demasiado frecuentes. Solución — agregar un retraso de 1-3 segundos entre productos o usar un pool de proxies con rotación.
Escenario 3: Publicación masiva en 30 cuentas de Instagram (5 horas)
Tarea: Publicar la misma publicación en 30 cuentas de Instagram de clientes. Para cada cuenta — su propio texto y hashtags. Necesita hacerse con retrasos, para no parecer spam.
Configuración:
- Proxy: Residenciales con sticky session de 1-2 horas, para cada cuenta — su propio proxy (para que las cuentas no se relacionen por IP)
- Navegador: Dolphin Anty, crear 30 perfiles (uno por cuenta), en cada uno — su propio proxy
- Automatización: El script inicia los perfiles uno por uno, publica a través de Instagram Web o API, cierra el perfil. Retraso entre cuentas — 10-15 minutos.
- Mantenimiento del progreso: Lista de cuentas en CSV, marcar el estado (publicado/pendiente/error)
Riesgos: Instagram puede bloquear la cuenta por acciones masivas. Solución — agregar retrasos aleatorios, imitar el comportamiento humano (desplazamiento del feed antes de la publicación).
Escenario 4: Monitoreo de precios de competidores en Ozon 24/7
Tarea: Monitorear los precios de 500 productos de competidores en Ozon cada hora, registrar cambios en la base de datos. La tarea funciona constantemente.
Configuración:
- Proxy: Proxies ISP con IP estática (no cambia nunca) o centro de datos
- Automatización: Tarea Cron (Linux) o Programador de tareas (Windows), ejecuta el script cada hora
- Mantenimiento de datos: PostgreSQL o MySQL, tabla con campos: product_id, price, timestamp
- Manejo de errores: Si Ozon no está disponible (error 500) — omitir la iteración, registrar en el log, repetir en una hora
Riesgos: Ozon puede bloquear la IP con solicitudes demasiado frecuentes. Solución — usar un pool de 3-5 proxies con rotación.
Conclusión
La gestión de sesiones para tareas largas es una combinación de la elección correcta de proxies, la configuración del navegador anti-detección y una automatización confiable con mantenimiento del progreso. Puntos clave:
- Para tareas con autenticación (creación de cuentas, trabajo con paneles de publicidad) utiliza proxies residenciales o ISP con sticky sessions de 6-24 horas
- Para scraping sin autenticación, los centros de datos con IP estática son más baratos y rápidos
- Los proxies móviles NO son adecuados para tareas de larga duración debido a los cambios frecuentes de IP
- Mantén el perfil del navegador y no cambies el fingerprint a mitad de tarea
- Registra el progreso y configura reinicios automáticos en caso de fallos
- Para tareas críticas, configura notificaciones sobre problemas (Telegram, email)
Si planeas ejecutar tareas de 8+ horas con autenticación (creación de cuentas, automatización de redes sociales, trabajo con paneles de publicidad), te recomendamos probar proxies residenciales con soporte para sticky sessions — proporcionan una IP estable durante toda la sesión y un riesgo mínimo de bloqueos. Para scraping de marketplaces y monitoreo de precios sin autenticación, son adecuados proxies de centros de datos — son más rápidos y baratos con la misma estabilidad de conexión.