Las cadenas de redirección rompen los scrapers. Las respuestas binarias se corrompen cuando se decodifican como texto. Dos problemas que surgen constantemente una vez que pasas la etapa de "obtener una página, analizar el HTML".
Lanzamos dos nuevas opciones de request para manejar ambos: followRedirects y returnBuffer. Ya están activas en la API.
Cómo funciona
Control de redirecciones con followRedirects
La mayoría de las APIs de scraping manejan las redirecciones como un booleano: seguirlas o no. Eso funciona hasta que te topas con una cadena de redirección que entra en bucle, o necesitas la propia response 302 intermedia para extraer un parámetro de seguimiento.
El followRedirects de FourA toma un número entero entre 0 y 20. Si lo omites (o lo ajustas a 0), recuperas la response de redirección sin procesar, con headers y todo. Si lo ajustas a 5, la request sigue hasta cinco saltos antes de devolver donde sea que aterrice.
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 sea que devolvió el tercer salto.
La distinción importa más de lo que crees. Los sitios de comercio electrónico redirigen a través de URLs de seguimiento antes de aterrizar en la página del producto. Quieres seguir esas. Pero las redes de afiliados y los acortadores de URL a veces crean cadenas que llegan a seis, siete u ocho saltos de profundidad. Y algunos bucles de redirección nunca se resuelven en absoluto. Limitar a un número específico significa que recopilas datos sin quedarte atascado en un bucle infinito que agota el tiempo de espera de tu request.
Antes de esto, la solución alternativa era enviar una request con las redirecciones desactivadas, analizar manualmente el header Location y enviar otra request. Eso son dos llamadas a la API como mínimo, el doble de latencia y código que tienes que mantener. Ahora es una llamada con un número.
Respuestas binarias sin procesar con returnBuffer
Cuando recopilas imágenes, PDFs o cargas útiles de protobuf, la decodificación de texto destruye los datos. La biblioteca HTTP asume que la response es texto, aplica detección de juego de caracteres y mutila silenciosamente cada byte que no encaja. Protobuf se vuelve ilegible. Los headers de imagen se rompen. Terminas con archivos corruptos y sin un mensaje de error obvio que explique por qué.
returnBuffer le dice a la API que omita la decodificación de texto por completo.
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 response regresa como bytes sin procesar (codificados en base64 en las respuestas JSON). Decodifícalo de tu lado y tendrás exactamente lo que envió el servidor. Sin suposiciones de juego de caracteres, 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 indicador para ello en lugar de una solución alternativa.
Impacto
Ambas características reducen el número de llamadas a la API por trabajo. followRedirects elimina los bucles manuales de persecución 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 los recuentos de request caen entre un 40 y un 60% en las pruebas iniciales cuando los usuarios pasan del manejo manual de redirecciones a followRedirects. Y para las tareas de recopilación de binarios (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 am 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 response para un control preciso sobre las cadenas de redirección. Sigue las redirecciones, pero haz que la request falle si el destino final choca contra 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, luego verifica la response final. Si el sitio te redirigió a una página con CAPTCHA o a un muro de acceso denegado, la request falla limpiamente. Sin datos basura que filtrar más adelante.
Para la recopilación de binarios, empareja returnBuffer con requests HEAD cuando necesites verificar los tipos de contenido antes de descargar archivos grandes. FourA maneja HEAD correctamente, por lo que puedes inspeccionar los headers sin obtener el cuerpo. Verifica el Content-Type, decide si vale la pena descargarlo, luego haz la request completa con returnBuffer: true.
Y si estás utilizando tareas de navegador para objetivos con mucho JavaScript, ten en cuenta que estas opciones se aplican al motor HTTP directo. Las requests del navegador manejan las redirecciones a través de la navegación incorporada del navegador, 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 DNS personalizada, ajuste de tiempo de espera por fase y opciones de manejo de certificados. El objetivo es un poder completo de desbloqueador a través de una interfaz REST limpia, sin la sobrecarga de infraestructura.
Si hay una opción específica que necesitas, te escuchamos. El panel de control ya muestra cómo se desempeñan tus requests con estas nuevas opciones, para que puedas medir la diferencia tú mismo.