Todos los artículos

Control de redirecciones y modo de buffer raw

La API de FourA ahora admite límites de redirección configurables y respuestas binarias raw. Dos opciones que cambian la forma de manejar casos extremos de scraping en el mundo real.

Las cadenas de redirecciones rompen los scrapers. Las respuestas binarias se corrompen al decodificarse como texto. Dos problemas que surgen constantemente una vez que se supera la fase de "obtener una página y analizar el HTML".

Lanzamos dos nuevas opciones de request para manejar ambos casos: followRedirects y returnBuffer. Ya están disponibles en la API.

Cómo funciona

Control de redirecciones con followRedirects

La mayoría de las API de scraping manejan las redirecciones como un booleano: seguirlas o no. Eso funciona hasta que te encuentras con una cadena de redirecciones en bucle, o cuando necesitas la propia respuesta 302 intermedia para extraer un parámetro de seguimiento.

La opción followRedirects de FourA acepta un número entero entre 0 y 20. Si lo omites (o lo estableces en 0), obtienes la respuesta de redirección directa, con headers y todo. Si lo estableces en 5, el request sigue hasta cinco saltos antes de devolver la página de destino final.

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/short-link",
    "followRedirects": 3,
    "unblocker": true
  }'

Esto sigue hasta tres redirecciones. Si la cadena se resuelve en dos, obtienes la página final. Si es más larga de tres, obtienes lo que haya devuelto el tercer salto.

La distinción importa más de lo que parece. Los sitios de comercio electrónico redirigen a través de URL de seguimiento antes de llegar a la página del producto. Querrás seguir esas redirecciones. Sin embargo, las redes de afiliados y los acortadores de URL a veces crean cadenas de seis, siete u ocho saltos de profundidad. Y algunos bucles de redirección nunca se resuelven. Limitar el número a un valor específico significa que recopilas datos sin quedarte atascado en un bucle infinito que consuma el timeout de tu request.

Antes de esto, la solución alternativa consistía en enviar un request con las redirecciones desactivadas, analizar manualmente el header Location y enviar otro request. Eso implicaba un mínimo de dos llamadas a la API, el doble de latencia y código que debías mantener. Ahora es una sola llamada con un número.

Respuestas binarias raw con returnBuffer

Cuando recopilas imágenes, archivos PDF o payloads de protobuf, la decodificación de texto destruye los datos. La biblioteca HTTP asume que la respuesta es texto, aplica la detección de charset y altera silenciosamente cada byte que no encaja. Protobuf se vuelve ilegible. Los headers de las imágenes se rompen. Terminas con archivos corruptos y sin ningún mensaje de error claro que explique el motivo.

returnBuffer le indica a la API que omita por completo la decodificación de texto.

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product-image.jpg",
    "returnBuffer": true
  }'

El cuerpo de la respuesta se devuelve como bytes raw (codificados en base64 en las respuestas JSON). Decodifícalo en tu extremo y tendrás exactamente lo que envió el servidor. Sin suposiciones de charset, sin conversión de codificación y sin corrupción silenciosa.

Este era uno de los tickets de soporte más comunes que veíamos: usuarios que recopilaban imágenes de productos o catálogos en PDF y obtenían archivos que no se abrían. La solución siempre era la misma, pero ahora hay un flag para ello en lugar de una solución alternativa.

Impacto

Ambas funciones reducen el número de llamadas a la API por tarea. followRedirects elimina los bucles manuales de seguimiento de redirecciones. returnBuffer elimina el ciclo de "obtener, darse cuenta de que está corrupto, volver a obtener con configuraciones diferentes".

Para objetivos con muchas redirecciones (enlaces de afiliados, acortadores de URL, cadenas de seguimiento de comercio electrónico), hemos visto que el recuento de requests disminuye entre un 40% y un 60% en las pruebas iniciales cuando los usuarios cambian el manejo manual de redirecciones por followRedirects. And para tareas de recopilación binaria (imágenes de productos, descargas de documentos), returnBuffer convierte una solución alternativa de varios pasos en una sola opción (resultados iniciales).

Estas no son características llamativas. Son el tipo de cosas en las que no piensas hasta que tu scraper se rompe a las 3 a. m. porque un sitio agregó un salto de redirección adicional a su flujo de pago.

Para Usuarios Avanzados

Combina followRedirects con la validación de respuestas para obtener un control preciso sobre las cadenas de redirecciones. Sigue las redirecciones, pero marca el request como fallido si el destino final se topa con un muro:

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/12345",
    "followRedirects": 5,
    "unblocker": true,
    "validate": {
      "status": { "fail": [403, 503] },
      "data": { "fail": ["Access Denied", "captcha"] }
    }
  }'

Esto sigue hasta cinco redirecciones y luego verifica la respuesta final. Si el sitio te redirigió a una página de CAPTCHA o a un muro de acceso denegado, el request falla limpiamente. Sin datos basura que filtrar más adelante.

Para la recopilación binaria, combina returnBuffer con requests HEAD cuando necesites verificar los tipos de contenido antes de descargar archivos grandes. FourA maneja HEAD correctamente (evitando internamente errores comunes de libcurl), por lo que puedes inspeccionar los headers sin obtener el cuerpo. Verifica el Content-Type, decide si vale la pena descargarlo y luego realiza el request completo con returnBuffer: true.

And si estás utilizando tareas de navegador para objetivos con mucho JavaScript, ten en cuenta que estas opciones se aplican al motor HTTP directo. Los requests de navegador manejan las redirecciones a través de la navegación integrada de Chrome, que las sigue de forma predeterminada sin límite.

Próximos pasos

Estamos trabajando para exponer más controles a nivel de request a través de la API: resolución de DNS personalizada, ajuste de timeout por fase y opciones de manejo de certificados. El objetivo es ofrecer toda la potencia de curl-impersonate a través de una interfaz REST limpia, sin la sobrecarga de infraestructura.

Si hay alguna opción específica que necesites, te escuchamos. El dashboard ya muestra cómo rinden tus requests con estas nuevas opciones, para que puedas medir la diferencia por ti mismo.