Las cadenas de redirecciones rompen los scrapers. Las respuestas binarias se corrompen cuando se decodifican como texto. Son dos problemas que aparecen constantemente en cuanto superas la fase de "obtener una página y parsear el HTML".
Hemos lanzado dos nuevas opciones de request para gestionar 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 gestionan las redirecciones como un booleano: seguirlas o no. Eso funciona hasta que te encuentras con un bucle de redirecciones o necesitas la respuesta 302 intermedia para extraer un parámetro de seguimiento.
followRedirects de FourA acepta un entero entre 0 y 20. Si lo omites (o indicas 0), recibes la respuesta de redirección sin procesar, con sus headers incluidos. Si indicas 5, la request sigue hasta cinco saltos antes de devolver el resultado final donde se detenga.
curl -X POST "https://eu.api.foura.ai/v1/request" \
-H "X-API-Key: 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 tiene más de tres, obtienes lo que haya devuelto el tercer salto.
La distinción importa más de lo que crees. Los sitios de comercio electrónico redirigen a través de URL de seguimiento antes de llegar a la página del producto. Quieres seguir esas redirecciones. Pero 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 a un número específico significa que recopilas datos sin quedarte atrapado en un bucle infinito que agote el timeout 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 debes mantener. Ahora es una sola llamada con un número.
Raw Binary Responses with returnBuffer
Cuando recopilas imágenes, PDF o payloads protobuf, la decodificación de texto destruye los datos. La librería HTTP asume que la response es texto, aplica detección de juego de caracteres y altera silenciosamente cada byte que no encaja. Protobuf se vuelve ilegible. Los headers de imagen se rompen. Terminas con archivos corruptos y ningún mensaje de error evidente que explique el motivo.
returnBuffer le indica a la API que omita la decodificación de texto por completo.
curl -X POST "https://eu.api.foura.ai/v1/request" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/product-image.jpg",
"returnBuffer": true
}'
El response body se devuelve como bytes sin procesar (con codificación base64 en las respuestas JSON). Decodifícalo en tu extremo y obtendrás exactamente lo que envió el servidor. Sin suposiciones de charset, sin conversiones de codificación y sin corrupción silenciosa.
Este era uno de los tickets de soporte más comunes que veíamos: usuarios recolectando imágenes de productos o catálogos en PDF y recibiendo archivos que no se podían abrir. La solución era siempre la misma, pero ahora hay un flag para esto en lugar de un workaround.
Impacto
Ambas funciones reducen el número de llamadas a la API por tarea. followRedirects elimina los bucles manuales para seguir redirecciones. returnBuffer elimina el ciclo de "obtener, notar que está dañado, volver a obtener con otra configuración".
Para destinos con muchas redirecciones (enlaces de afiliados, acortadores de URL, cadenas de seguimiento de e-commerce), hemos visto caer el número de requests entre un 40% y un 60% en pruebas iniciales cuando los usuarios pasan del manejo manual de redirecciones a followRedirects. Y para tareas de recolección de binarios (imágenes de productos, descargas de documentos), returnBuffer convierte un workaround de varios pasos en una sola opción (resultados preliminares).
No son funciones llamativas. Son el tipo de cosas en las que no piensas hasta que tu scraper falla a las 3 a. m. porque un sitio añadió un salto de redirección adicional a su flujo de checkout.
Para usuarios avanzados
Combina followRedirects con validación de respuestas para tener un control preciso sobre las cadenas de redirección. Sigue las redirecciones, pero haz fallar el request si el destino final se bloquea:
curl -X POST "https://eu.api.foura.ai/v1/request" \
-H "X-API-Key: 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 comprueba la respuesta final. Si el sitio te redirigió a una página de verificación o a un muro de acceso denegado, la request falla limpiamente. Sin datos basura que filtrar más adelante.
Para la recolección de binarios, combina 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 descargar el body. Comprueba el Content-Type, decide si vale la pena descargarlo y luego realiza 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 de navegador gestionan las redirecciones mediante la navegación integrada del navegador, que las sigue por defecto 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 timeouts por fase y opciones de gestión de certificados. El objetivo es el control total del perfil del navegador mediante una interfaz REST limpia, sin la sobrecarga de infraestructura.
Si necesitas una opción específica, te escuchamos. El dashboard ya muestra el rendimiento de tus requests con estas nuevas opciones, para que puedas medir la diferencia tú mismo.