Saltar al contenido
Empezar gratis
Volver al blog

Gestión de proxies para el scraping web: un diseño práctico

Raluca PenciucÚltima actualización el 16 min read
Gestión de proxies para el scraping web: un diseño práctico
En resumen: La gestión de proxies para el web scraping es la capa de políticas que asigna las tareas autorizadas a las rutas de red adecuadas y realiza un seguimiento de lo que ocurre a continuación. Mantén separados el estado de la sesión, el estado de la ruta y los presupuestos de solicitudes de origen. Rota o retira una ruta por una razón operativa documentada, no como respuesta automática a cada página que no se pueda cargar.

Un trabajador recibe una página de producto vacía y marca su proxy como inactivo. Otro trabajador toma inmediatamente una nueva ruta y repite la solicitud. Tras varios intentos, el grupo de rutas parece no estar en buen estado, pero el fallo real se debe a que el analizador espera un elemento que la fuente ha eliminado.

Eso es un problema de gestión antes que un problema de red. El sistema tomó una decisión de enrutamiento basándose en información de la capa equivocada. Añadir más direcciones agrandaría el error, no lo corregiría.

Un gestor de proxies útil hace algo más que elegir el siguiente punto final. Sabe qué tareas requieren continuidad, qué rutas cumplen los requisitos de ubicación aprobados, cuánto tráfico puede recibir la fuente y cuándo un operador debe revisar un fallo. Su éxito se mide por las observaciones válidas proporcionadas dentro de la política de recopilación, no por la frecuencia con la que cambia de direcciones.

Esta guía describe ese diseño para desarrolladores que gestionan recopiladores autorizados. Los ejemplos son recomendaciones de arquitectura originales, no una referencia de proveedores. Puedes aplicar los mismos límites tanto a un pequeño trabajador basado en una configuración como a un servicio de recopilación compartido de mayor envergadura.

Inicia la gestión de proxies para el scraping web con un contrato

Define qué necesita una tarea antes de asignarle una ruta. Un contrato útil incluye el destino permitido, la región deseada (cuando sea relevante), el plazo, los requisitos de la sesión y el tipo de salida esperado. Mantén las credenciales fuera de la representación diagnóstica habitual de la tarea. El contrato debe describir la intención, no revelar todos los ajustes de conexión específicos de cada proveedor.

A continuación, haz un inventario de las rutas que realmente puedes utilizar. Registra el tipo de producto, los protocolos admitidos, el método de autenticación, los usos aprobados, las capacidades de ubicación y cualquier límite de conexión o tráfico. Distingue entre una dirección de salida individual y una pasarela que elige una salida por ti. Tienen ciclos de vida diferentes y no deben compartir un campo ambiguo denominado simplemente proxy.

La configuración del proveedor no es portátil solo por su denominacio´n. La guía de inicio ra´pido del proxy de Oxylabs ilustra los puntos finales específicos del producto y los diferentes mecanismos para la seleccio´n de ubicacio´n y sesio´n. Considera dicha documentacio´n como información de entrada para un adaptador, no como una razo´n para incorporar la sintaxis del nombre de usuario de un proveedor en todo tu código de extraccio´n.

Añade exclusiones explícitas. Algunas tareas deben permanecer en una infraestructura controlada; otras no pueden enviar cookies a terceros; otras no necesitan un enrutamiento de red alternativo. Un gestor debería poder rechazar las tareas incompatibles en lugar de elegir en silencio la opción disponible más cercana.

Por último, define la aceptación por separado de la entrega. La recepción de bytes cumple con una observación de transporte. La generación de un registro correctamente identificado y oportuno cumple con un requisito de datos. Mantener esa distinción desde el primer documento de diseño evita que el sistema de salud confunda un defecto de la aplicación con una ruta de red fallida.

Asignar rutas según una política en lugar de mediante selección aleatoria

La selección aleatoria puede distribuir tareas independientes, pero no constituye una política de asignación completa. En primer lugar, se deben filtrar los candidatos según los requisitos obligatorios: protocolo, ámbito de destino aprobado, ubicación y compatibilidad de sesión. A continuación, se debe tener en cuenta la disponibilidad y la capacidad. La selección entre los candidatos elegibles es el paso final, no el primero.

Requisito de trabajo

Regla de asignación

No se ha evitado

Página independiente de solo lectura

Utilizar una ruta disponible que cumpla los requisitos

Acoplamiento innecesario de sesiones

Flujo de trabajo permitido de varios pasos

Asignar una ruta al flujo de trabajo

Cambio de contexto a mitad del proceso

Observación específica a nivel regional

Se requiere un enrutamiento verificado y aplicable

Comparación de registros de diferentes mercados

Contexto de solicitud sensible

Utilizar únicamente infraestructura autorizada

Envío de información confidencial a través de una ruta no revisada

Plazo de recogida vencido

No asignar nuevas tareas

Gasto en resultados que ya son inútiles

Asigna a cada tarea una duración limitada. Una concesión identifica al propietario del trabajo y caduca o se libera cuando finaliza el flujo de trabajo. Esto ayuda a recuperar capacidad cuando un trabajador falla. No des por sentado que la ausencia de un pulso indica que un punto final de la red está defectuoso; puede significar que el trabajador o el plano de control han fallado.

Las decisiones de asignación deben ser explicables. Una breve justificación, como «región requerida no disponible», es mejor que un recurso de reserva silencioso que devuelva un contenido erróneo. Una cola puede esperar a disponer de capacidad adecuada hasta el plazo límite y, a continuación, producir un resultado final claro.

Evita la complejidad global innecesaria. Una carga de trabajo modesta puede necesitar un archivo de políticas estático y un pequeño almacén de concesiones, no una plataforma de programación distribuida. Añade coordinación cuando varios trabajadores compartan un recurso limitado o un presupuesto para toda la fuente. La política debe seguir siendo comprensible a medida que la implementación crezca, ya que los responsables de la gestión de incidencias aún necesitan explicar por qué una solicitud utilizó una ruta concreta.

Gestiona una sesión como algo más que una dirección IP

Una dirección de salida estable es solo una parte de algunas sesiones, no una definición completa de la sesión. La aplicación también puede depender de cookies, almacenamiento del navegador, configuración regional, autenticación y el avance a lo largo de una secuencia. Modélalas como estados relacionados pero distintos, en lugar de suponer que un único indicador de enrutamiento lo conserva todo.

Una sesión debe tener un propietario, una hora de inicio, una duración prevista y un límite de recuperación. Si la red cambia de forma inesperada, decide si el trabajo puede continuar o debe reiniciarse desde un estado conocido. Esa decisión corresponde al flujo de trabajo, no a un gestor de grupos genérico que no puede ver la semántica de la aplicación.

Por ejemplo, una secuencia de filtros de catálogo permitida solo puede producir resultados comparables si su región y el estado de los filtros se mantienen coherentes. Si se pierde la continuidad, marca la observación parcial como incompleta. No combines una página anterior de un contexto con una página posterior de otro y las presentes como un único conjunto de datos coherente.

La guía sobre cookies HTTP y sesiones de scraping explica por qué la gestión de cookies debe realizarse junto a la selección de rutas, pero no dentro de ella. Mantén los almacenes de cookies limitados a la sesión prevista. Compartirlos entre tareas no relacionadas puede dar lugar tanto a un contexto incorrecto como a una exposición innecesaria de datos.

Libera el estado de forma deliberada cuando finalice el flujo de trabajo. Deja que caduquen los arrendamientos, elimina los perfiles temporales del navegador cuando sea apropiado y conserva únicamente los metadatos de diagnóstico exigidos por la política. Una acumulación creciente de objetos de sesión olvidados no constituye una resiliencia útil. Se trata de un estado no registrado que dificulta la reproducción de fallos posteriores y puede retener información durante más tiempo del que requiere la tarea.

Separa el estado de la ruta del estado de la fuente y del analizador

Utiliza más de una dimensión de estado. Una ruta puede llegar a un punto final controlado mientras que una fuente concreta rechaza la solicitud. Una fuente puede devolver una página válida mientras que el analizador falla. El sistema de gestión debe preservar estas distinciones antes de decidir qué poner en cuarentena.

Observación

Capa de investigación probable

Respuesta de gestión adecuada

No se puede conectar a la pasarela

Configuración de la red o del proxy

Comprueba la ruta y la conectividad

Autenticación del proxy rechazada

Credenciales o lista de permitidos

Pausar la configuración afectada

Límite de velocidad de destino

Política de tráfico de origen

Reducir o pausar el trabajo correspondiente

Discrepancia en la identidad de la página

Respuesta o contexto de origen

Cuarentena para revisión

Falta un campo obligatorio

Diseño de la fuente o analizador sintáctico

Investiga la extracción, no todo el conjunto

Cuando un intermediario lo facilite, el encabezado «Proxy-Status», definido en el RFC 9209, puede proporcionar información de diagnóstico estructurada sobre la gestión del proxy. Su ausencia no es indicativa de que la ruta esté en buen estado o no. Utilízalo junto con los tiempos de respuesta, las excepciones del cliente y el contexto real de la respuesta, en lugar de convertirlo en una señal universal obligatoria.

Define comprobaciones de estado para la infraestructura de tu propiedad o para la que estés autorizado a realizar pruebas. Una comprobación mínima puede verificar la conectividad esperada o el comportamiento de la ubicación sin acceder repetidamente a la fuente de producción. Mantén las comprobaciones dentro de unos límites y evita transmitir el estado sensible de la sesión a un punto final de diagnóstico.

Nuestra guía de errores de estado del proxy ofrece un flujo de trabajo más detallado para la gestión de incidencias. En la gestión, la clave es la atribución: pon en cuarentena la unidad más pequeña afectada, respaldada por pruebas. Un rechazo específico de una fuente no debe condenar automáticamente todas las rutas, y una respuesta de diagnóstico satisfactoria no debe dar lugar a registros inválidos.

Aplica una limitación de ritmo en toda la fuente a través del grupo

Un grupo de proxies más grande no implica un mayor presupuesto de permisos. Si varios trabajadores recogen datos de una misma fuente, coordina el ritmo total permitido en lugar de asignar a cada ruta un límite independiente que multiplique el tráfico total. Mantén la política de la fuente por encima de la asignación de rutas en el orden de decisión.

El código HTTP 429 indica una limitación de tasa, pero el estándar no exige que el servidor realice el recuento únicamente por dirección IP. El RFC 6585 permite explícitamente otras formas de identificar a los usuarios y contabilizar las solicitudes. Por lo tanto, rotar una dirección no establece ni un permiso ni una solución efectiva para un flujo de trabajo con limitación de tasa.

Utiliza un limitador compartido u otro mecanismo de coordinación adecuado a tu modelo de trabajadores. Incluye los reintentos en el mismo presupuesto. Un reintento sigue siendo una solicitud a la fuente; tratarlo como trabajo en segundo plano gratuito puede hacer que el periodo de mayor actividad coincida con una incidencia.

Respeta las instrucciones de espera aplicables y haz una pausa cuando el margen de recuperación permitido no se ajuste al plazo del trabajo. Reduce el volumen de trabajo en lugar de intentar mantener el rendimiento a cualquier precio. Un registro obsoleto generado tras una prolongada serie de reintentos puede ser peor que la ausencia explícita de una observación.

El ritmo adaptativo puede ayudar, pero no sustituye a la política. La documentación de AutoThrottle de Scrapy describe un ajuste del retraso basado en la latencia que respeta la configuración de concurrencia y retrasos establecida. Si utilizas un mecanismo similar, asegúrate de que su agrupación se ajuste al presupuesto de la fuente que pretendes aplicar. Un retraso elegido automáticamente puede seguir siendo inadecuado si cada proxy se trata erróneamente como una fuente independiente.

Desarrolla la observabilidad en torno al trabajo aceptado

Registra información suficiente para relacionar una decisión de asignación con un resultado final. Entre los campos útiles se incluyen el identificador del trabajo, la referencia de la ruta, la versión de la configuración, el grupo de fuentes, la hora, el recuento de reintentos y la categoría del resultado. Da preferencia a las referencias opacas frente a las credenciales sin procesar o las URL completas que contengan información sensible. El objetivo es explicar el comportamiento, no copiar cada solicitud en un registro permanente.

Realiza un seguimiento tanto de las métricas operativas como de las de datos. Los fallos de conexión describen el comportamiento de la ruta. El rendimiento de registros aceptados describe si toda la ruta de recopilación produjo resultados útiles. La antigüedad de la cola y los incumplimientos de plazos describen si se hizo a tiempo. Ningún porcentaje de éxito por sí solo refleja estos tres aspectos.

Desglosa las métricas en segmentos significativos de la carga de trabajo. Una carga de trabajo de páginas estáticas en buen estado puede ocultar fallos en las páginas interactivas si todo se promedia conjuntamente. Por el contrario, una única fuente cambiante no debería hacer que toda la red parezca inutilizable. Mantén las definiciones de los segmentos lo suficientemente estables como para comparar ejecuciones.

Establece alertas en torno a decisiones que alguien pueda tomar. «Se han producido muchos errores» es menos útil que «la carga de trabajo regional aprobada no tiene rutas válidas antes de su plazo». Vincula la alerta a un manual de procedimientos con una condición de parada, un responsable y las pruebas que hay que recopilar.

Para obtener una visión de los costes, divide el gasto operativo comparable entre registros únicos, válidos y puntuales, en lugar de entre las solicitudes enviadas. Incluye el trabajo de mantenimiento que varíe de forma significativa entre configuraciones. No inventes un valor monetario para cada mensaje de registro, pero sí registra el tiempo recurrente dedicado por los operadores. Esto permite decidir si un límite de recopilación más controlado eliminaría realmente trabajo.

Proteja el plano de control y revise el abastecimiento de la red

Guarda las credenciales de proxy en un almacenamiento secreto autorizado o en la configuración del entorno, no en ejemplos de artículos, cargas útiles de tareas ni paneles públicos. Limita el acceso a los procesos que lo necesiten, renueva las credenciales cuando sea necesario y verifica que los trabajadores que hayan dejado la empresa ya no conserven el acceso. Protege los puntos finales de gestión con el mismo cuidado que el propio colector.

Revisa el límite de confianza para cada modo de conexión. ¿Qué puede observar el intermediario? ¿Envía el flujo de trabajo cookies de autenticación o cuerpos de solicitud privados? ¿Dispones de un acuerdo aprobado de retención y tratamiento para dichos contenidos? Estas cuestiones son importantes independientemente de si el servicio es gratuito o de pago.

En el caso de redes en las que intervengan dispositivos de los participantes, solicita pruebas del modelo de obtención de datos, el proceso de consentimiento, el mecanismo de retirada y la gestión de abusos. Una declaración del proveedor puede servir de guía para la diligencia debida, pero no equivale a una auditoría realizada por ti mismo. Registra qué producto y qué acuerdo abarca la revisión, en lugar de dar por sentado que una afirmación general de la empresa se aplica en todos los casos.

El acceso a las fuentes es una decisión independiente. Una red legítima no concede permiso para recopilar todos los recursos a los que se puede acceder. El Protocolo de Exclusión de Robots distingue las instrucciones para los rastreadores de la autorización de acceso. Sigue las instrucciones de las fuentes y el alcance de recopilación aprobado por la organización, y remite las disputas de acceso a un responsable humano.

Proporcione a los operadores un control de parada segura que pause las nuevas asignaciones sin destruir el trabajo en cola. Durante un incidente, la capacidad de detener el tráfico y preservar las pruebas es más importante que mantener ocupados a todos los trabajadores. Pruebe ese control antes de que el sistema lo necesite con urgencia.

Implemente los cambios en las políticas con una ruta de recuperación

Diseña la política de enrutamiento de forma independiente de la lógica de análisis. Un cambio en un requisito de ubicación o en la duración de un arrendamiento debe ser visible como una revisión de la configuración, no quedar oculto entre modificaciones de extracción no relacionadas. Mantén disponible la configuración anterior durante un plazo de reversión definido.

Empieza con una carga de trabajo de bajo riesgo e inspecciona tanto las observaciones aceptadas como las rechazadas. Conserva los identificadores de trabajo estables para que la reproducción no duplique los registros. Si comparas configuraciones en paralelo, mantén el tráfico combinado dentro del mismo presupuesto de origen aprobado, en lugar de duplicar la carga por comodidad.

Prueba deliberadamente los límites de fallo en entornos controlados. Deja que expire una concesión, interrumpe un trabajador, haz que una ruta no esté disponible y retrasa un acuse de recibo de almacenamiento. Comprueba que el trabajo se recupere o quede claramente marcado como incompleto. No des por sentado que el reinicio de un proceso demuestra que los datos son coherentes.

La guía de extracción web automatizada explica el estado duradero del trabajo y la recuperación a nivel de canalización. Un gestor de proxies debe cooperar con ese estado, no mantener una visión aislada del éxito que el programador no pueda conciliar.

Tras la implementación, evalúa si la nueva política ha mejorado el resultado previsto. ¿Han disminuido los fallos de sesión? ¿Se ha mantenido el ritmo de las fuentes dentro de los límites de la política? ¿Se ha reducido realmente la carga de trabajo del operador? Vincula la respuesta al trabajo observado, no al tamaño del grupo. Elimina las credenciales no utilizadas y la configuración obsoleta solo una vez que hayan finalizado el periodo de reversión y la revisión de la titularidad.

Puntos clave

  • Filtra las rutas según requisitos de trabajo explícitos antes de distribuir el tráfico.
  • Mantenga las concesiones de enrutamiento, las sesiones de aplicación y los presupuestos de solicitudes de origen como conceptos separados.
  • Atribuya los fallos al transporte, a los intermediarios, al origen o a la extracción antes de modificar el estado del grupo.
  • Contar los reintentos dentro de los límites de origen compartido y mantener un control de pausa seguro.
  • Mide los registros aceptados, el cumplimiento de los plazos y el esfuerzo del operador, no la frecuencia de rotación de direcciones.

Preguntas frecuentes

¿Necesita cada colector un servicio de gestión de proxies independiente?

No. Un colector pequeño con un único trabajador puede funcionar mejor con una configuración explícita y un módulo de políticas sencillo. Un servicio compartido resulta útil cuando varios trabajadores deben coordinar concesiones, credenciales o presupuestos de fuentes. Implántelo para resolver un problema de coordinación concreto, en lugar de dar por sentado que una arquitectura más grande hace automáticamente que una carga de trabajo modesta sea más fiable.

¿Deben incluirse los identificadores de ruta en los conjuntos de datos empresariales exportados?

Por lo general, manténlos en metadatos operativos restringidos, en lugar de en registros destinados a los usuarios finales. Estos suelen necesitar información de procedencia, como la URL de origen, la hora de observación y la versión del esquema. Las referencias operativas a las rutas pueden permanecer vinculadas a través de un identificador de trabajo para posibles investigaciones. Esta separación mantiene los diagnósticos disponibles sin exponer innecesariamente detalles de la infraestructura ni fomentar que la lógica posterior dependa de un proveedor concreto.

¿Puede una ruta ser válida para una carga de trabajo e inadecuada para otra?

Sí. El estado describe el comportamiento observado en condiciones concretas, mientras que la idoneidad depende del contrato de trabajo. Una ruta puede conectarse correctamente, pero carecer de una ubicación requerida o de un acuerdo de gestión aprobado. Mantén las decisiones de elegibilidad separadas de las puntuaciones de estado, de modo que no se seleccione una ruta que funcione para un trabajo que nunca se pretendió ni se autorizó que realizara.

Conclusión

Una buena gestión de proxies para el web scraping comienza por la responsabilidad, no por la rotación. Define el contrato de trabajo, asigna únicamente rutas elegibles y mantén la distinción entre una conexión de red, una sesión de aplicación y un registro de datos aceptado. Esa estructura evita que los fallos no relacionados se traten como prueba de que es necesario sustituir todo el grupo.

Mantén el ritmo de acceso a la fuente por encima del grupo de proxies y haz que los reintentos sean visibles dentro del mismo presupuesto. Crea suficiente observabilidad para justificar una asignación, un estado lo suficientemente duradero como para recuperar el trabajo inconcluso y un control de detención en el que los operadores puedan confiar. Revisa las credenciales y el abastecimiento de la red como responsabilidades operativas continuas, en lugar de tareas de configuración puntuales.

El sistema resultante debería reducir la magnitud de los fallos y facilitar la auditoría de las decisiones. Si lo que deseas eliminar es la carga que supone mantener la capa de obtención de datos, evalúa la API de scraper de WebScrapingAPI en relación con tu contrato de aceptación y acceso existente. Un límite gestionado resulta útil cuando elimina tareas específicas sin ocultar las responsabilidades que aún recaen sobre tu aplicación.

Acerca del autor

Raluca Penciuc, Desarrollador full-stack @ WebScrapingAPI

Raluca Penciuc

Desarrollador full-stack

Raluca Penciuc es desarrolladora full stack en WebScrapingAPI, donde se dedica a crear rastreadores, mejorar las técnicas de evasión y buscar formas fiables de reducir la detección en los sitios web de destino.

Tutorial de Python de Nodriver: Extracción de datos de navegadores de forma sigilosa, desde el primer script hasta la puesta en producción
La ciencia del web scraping

Tutorial de Python de Nodriver: Extracción de datos de navegadores de forma sigilosa, desde el primer script hasta la puesta en producción

TL;DR: En resumen: Nodriver es una biblioteca asíncrona de Python que controla Chromium mediante el Chrome DevTools Protocol, sin Selenium ni el binario chromedriver. Úsala cuando un navegador sigiloso autoalojado, más parecido a una sesión real de Chrome, sea mejor opción que una pila WebDriver, pero ten en cuenta que por sí sola no elimina los riesgos de IP, TLS o comportamiento. Este tutorial va desde un primer script hasta la producción en contenedores y una Browser API alojada.

Suciu Dan15 min read
Leer artículo
Cómo gestionar las URL de redireccionamiento de Google /goto y los tokens CAES en un rastreador de SERP
La ciencia del web scraping

Cómo gestionar las URL de redireccionamiento de Google /goto y los tokens CAES en un rastreador de SERP

TL;DR: En resumen: Las URL /goto de Google con un token CAES, y los envoltorios /url más antiguos, son capas de redirección, no destinos, así que un scraper de SERP que trata cada href como final rompe el seguimiento de posiciones y los almacenes de enlaces. Prefiere una API de SERP estructurada cuando devuelva los enlaces de destino. Si tienes que analizar HTML, clasifica cada href, elimina redirecciones duplicadas y resuélvelas con un GET simple. No descifres CAES.

Suciu Dan13 min read
Leer artículo
Cabeceras de Respuesta HTTP en cURL: Cada Bandera, Técnica y Receta de Scripting
La ciencia del web scraping

Cabeceras de Respuesta HTTP en cURL: Cada Bandera, Técnica y Receta de Scripting

TL;DR: cURL oculta las cabeceras de respuesta por defecto. Utilice -i para ver las cabeceras junto con el cuerpo, -I para una solicitud HEAD que sólo devuelva cabeceras, -v para una depuración completa de solicitud/respuesta y -D para guardar las cabeceras en un archivo. Para scripts modernos, cURL 7.83+ le permite extraer cabeceras individuales o volcarlas todas como JSON con la opción -w write-out.

Suciu Dan13 min read
Leer artículo

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.