Cadeias de redirecionamento quebram scrapers. Responses binárias são corrompidas quando decodificadas como texto. Dois problemas que surgem constantemente assim que você passa da fase de "buscar uma página, analisar o HTML".
Lançamos duas novas opções de request para lidar com ambos: followRedirects e returnBuffer. Elas já estão ativas na API.
Como Funciona
Controle de Redirecionamento com followRedirects
A maioria das APIs de scraping trata redirecionamentos como um booleano: siga-os ou não. Isso funciona até você encontrar uma cadeia de redirecionamento em loop, ou precisar da própria response 302 intermediária para extrair um parâmetro de rastreamento.
O followRedirects da FourA aceita um número inteiro entre 0 e 20. Omitindo-o (ou definindo como 0), você recebe de volta a response de redirecionamento bruta, com headers e tudo. Defina como 5, e o request seguirá até cinco saltos antes de retornar o que quer que ele alcance.
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
}'
Isso segue até três redirecionamentos. Se a cadeia for resolvida em dois, você obtém a página final. Se for maior que três, você obtém o retorno do terceiro salto.
A diferença importa mais do que parece. Sites de e-commerce redirecionam por meio de URLs de rastreamento antes de chegar à página do produto. Você quer seguir esses redirecionamentos. Mas redes de afiliados e encurtadores de URL às vezes criam cadeias com seis, sete ou oito saltos de profundidade. E alguns loops de redirecionamento nunca são resolvidos. Limitar a um número específico significa que você coleta dados sem ficar preso em um loop infinito que esgota o timeout do seu request.
Antes disso, a solução alternativa era enviar um request com redirecionamentos desativados, analisar manualmente o header Location e enviar outro request. Isso representava no mínimo duas chamadas de API, o dobro da latência e código que você precisava manter. Agora é apenas uma chamada com um número.
Respostas Binárias Brutas com returnBuffer
Ao coletar imagens, PDFs ou payloads protobuf, a decodificação de texto destrói os dados. A biblioteca HTTP assume que a response é texto, aplica detecção de charset e corrompe silenciosamente cada byte que não se ajusta. O Protobuf torna-se ilegível. Headers de imagem quebram. Você acaba com arquivos corrompidos e nenhuma mensagem de erro óbvia para explicar o motivo.
returnBuffer instrui a API a ignorar completamente a decodificação 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
}'
O corpo da response retorna como bytes brutos (codificados em base64 em responses JSON). Decodifique-o do seu lado e você terá exatamente o que o servidor enviou. Sem suposições de charset, sem conversão de codificação, sem corrupção silenciosa.
Este era um dos chamados de suporte mais comuns que recebíamos: usuários coletando imagens de produtos ou catálogos em PDF e obtendo arquivos que não abriam. A correção era sempre a mesma, mas agora existe uma flag para isso em vez de uma solução alternativa.
Impacto
Ambos os recursos reduzem o número de chamadas de API por tarefa. O followRedirects elimina loops manuais de busca de redirecionamento. O returnBuffer elimina o ciclo de "buscar, perceber que está corrompido, buscar novamente com configurações diferentes".
Para alvos com muitos redirecionamentos (links de afiliados, encurtadores de URL, cadeias de rastreamento de e-commerce), vimos o número de requests cair de 40% a 60% em testes iniciais quando os usuários mudaram do tratamento manual de redirecionamento para o followRedirects. E para tarefas de coleta binária (imagens de produtos, downloads de documentos), o returnBuffer transforma uma solução alternativa de várias etapas em uma única opção (resultados iniciais).
Esses não são recursos chamativos. São o tipo de coisa em que você não pensa até que seu scraper quebre às 3 da manhã porque um site adicionou um salto de redirecionamento extra ao fluxo de checkout.
Para Usuários Avançados
Combine followRedirects com validação de response para um controle preciso sobre as cadeias de redirecionamento. Siga os redirecionamentos, mas falhe o request se o destino final encontrar uma barreira:
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"] }
}
}'
Isso segue até cinco redirecionamentos e depois verifica a response final. Se o site redirecionou você para uma página de CAPTCHA ou uma barreira de acesso negado, o request falha de forma limpa. Sem dados inúteis para filtrar no downstream.
Para coleta binária, combine returnBuffer com requests HEAD quando precisar verificar os tipos de conteúdo antes de baixar arquivos grandes. A FourA trata HEAD corretamente (evitando erros comuns de libcurl internamente), permitindo que você inspecione headers sem buscar o corpo. Verifique o Content-Type, decida se vale a pena fazer o download e, em seguida, faça o request completo com returnBuffer: true.
E se você estiver usando browser tasks para alvos pesados em JavaScript, observe que essas opções se aplicam ao mecanismo HTTP direto. Requests de navegador lidam com redirecionamentos por meio da navegação integrada do Chrome, que os segue por padrão sem limite.
Próximos Passos
Estamos trabalhando para expor mais controles em nível de request por meio da API: resolução de DNS personalizada, ajuste de timeout por fase e opções de manipulação de certificados. O objetivo é oferecer todo o poder do curl-impersonate por meio de uma interface REST limpa, sem a sobrecarga de infraestrutura.
Se houver uma opção específica que você precisa, estamos ouvindo. O dashboard já mostra o desempenho dos seus requests com essas novas opções, para que você possa medir a diferença por conta própria.