Como seguir redirecionamentos HTTP com cURL

Quando você precisa obter o conteúdo real da página, o método cURL follow redirect torna-se muito útil. Ao usar o comando curl -L <URL>, em vez do simples curl <URL>, você garante que visitará a página final e extrairá os dados de lá. Em outros casos, o site pode redirecioná-lo para uma página específica de localização ou qualquer outra página que ele decidir. Aqui, você verá como usá-lo e como depurar possíveis problemas.

Combinado com os CyberYozh proxies, você obtém o conjunto de ferramentas para obter o conteúdo de qualquer página sem restrições ou redirecionamentos indesejados. 

ℹ️

cURL é extremamente útil quando você precisa executar requisições HTTP de forma rápida e automática. Leia como autenticar sites usando cURL para mais informações.

As ferramentas: Qual proxy selecionar

Cadeias de redirecionamento frequentemente passam por endpoints geo-específicos ou de CDN, então o proxy por trás da sua requisição cURL determina se você chegará à página final correta ou será bloqueado no meio da cadeia. 

Proxies residenciais rotativos devem ser sua escolha padrão: sua rotação de IP é fácil de controlar por requisição ou por sessão, o que é crítico para fluxos de trabalho de web scraping e coleta de dados, onde cada salto de redirecionamento precisa de um IP limpo e confiável.

Tipo de proxy

Uso para tarefas com muitos redirecionamentos

Proxies residenciais rotativos

Padrão preferido: rotação controlável, baixa taxa de bloqueio em cadeias de múltiplos saltos

Proxies móveis LTE/5G

Melhor para redirecionamentos de login/geo-restritos que exigem confiança em nível de operadora

Proxies residenciais ISP

IP estático estável para cadeias de redirecionamento que precisam de persistência de sessão

Proxies de datacenter

Mais rápidos, mas mais fracos contra verificações de bot baseadas em redirecionamento

O processo: Use comandos cURL follow redirect

Seu comando básico é:

bash
curl -L <URL>

Ele define a URL de destino como o destino final, que deve ser alcançado mesmo que o site redirecione você para outra URL, como uma página específica de localização. Para usar com um proxy, você precisa modificá-lo um pouco, adicionando -x (ou --proxy) com o protocolo (HTTP ou SOCKS5; leia mais sobre a seleção de protocolo de proxy) e credenciais do proxy.

bash
curl -L -x <protocol://user:password@IP:port> <URL>
⚙️

Com proxies rotativos, você obtém um gateway com credenciais, acessível no seu painel: basta colocá-lo no seu comando e configurar a rotação lá.

Use redirecionamentos básicos com curl -L

Adicione -L a qualquer requisição cURL para permitir que ela siga automaticamente cada cabeçalho 3xx Location até atingir a resposta final.

bash
curl -L <URL>

Sem -L, o cURL para no primeiro redirecionamento e retorna apenas a resposta intermediária.

Use --max-redirs para definir limites

Limite o número de saltos que o cURL seguirá para evitar que ele trave em loops ou cadeias excessivas.

bash
curl -L --max-redirs 5 <URL>

Defina um valor baixo (2–5) para cadeias que você espera que sejam curtas e mais alto apenas para fluxos conhecidos de múltiplas etapas, como login ou roteamento CDN.

⚙️

Respeitar os limites de taxa e o robots.txt do site é extremamente importante. Leia sobre web scraping ético para saber mais.

Use curl -L -v para ver a sequência de redirecionamento

Adicione -v (verbose) para imprimir cada cabeçalho de requisição e resposta, incluindo cada salto de Location na cadeia.

bash
curl -L -v <URL>

Use isso quando uma cadeia de redirecionamento se comportar inesperadamente e você precisar identificar exatamente onde ela diverge.

Use curl -L -I para inspecionar páginas de redirecionamento

Combine -I (somente cabeçalhos) com -L para rastrear a cadeia completa de redirecionamento sem baixar os corpos das páginas.

bash
curl -L -I <URL>

Esta é a maneira mais rápida de confirmar a URL de destino final e os códigos de status antes de executar uma raspagem completa.

Use curl -A para enviar um user-agent personalizado

Defina uma string de user-agent realista para que a lógica de redirecionamento vinculada à detecção de dispositivo ou navegador funcione corretamente.

bash
curl -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" <URL>
📡

Leia como implantar user-agents aleatórios ajuda a proteger seus pipelines de scraping e evitar restrições.

Debug: Solução de problemas comuns

Se você enfrentar algum problema, não se preocupe. A maioria deles é facilmente corrigível. Aqui, exploraremos os mais comuns e como resolvê-los.

HTTP 302 e outros códigos de resposta

Com redirecionamentos cURL, você frequentemente enfrenta códigos HTTP 3xx, cada um com regras diferentes sobre se o método e o corpo são preservados. É quando você precisa alternar entre usar os métodos GET e POST

ℹ️

Ambos podem ser facilmente usados com a função curl especificando-os antes da URL. GET é usado por padrão com a maioria das opções, para usar POST, você precisa escrever explicitamente POST antes da URL.

301 Moved Permanently

O recurso tem uma nova URL permanente; alguns clientes convertem um POST para GET ao seguir. Use -L normalmente; trate a nova URL como canônica para requisições futuras.

302 Found

Um redirecionamento temporário legado; o comportamento na preservação do método é inconsistente entre clientes, então o cURL pode converter POST para GET. Este é o problema mais frequente. Se você precisar que o método original seja preservado, teste com --post302 explicitamente.

303 See Other

Sempre redireciona para uma requisição GET, tipicamente após o envio de um formulário ou conclusão de uma ação de API. Espere que os dados do corpo sejam descartados; não confie apenas em -L se você precisar que o payload original seja reenviado.

307 Temporary Redirect

Preserva o método e o corpo originais, então um POST permanece POST. Seguro seguir com -L ao fazer scraping de endpoints de API que redirecionam após o envio.

308 Permanent Redirect

Igual ao 301, mas garante que o método não seja alterado. Trate como o equivalente moderno e seguro em termos de método de uma movimentação permanente.

cURL não segue redirecionamentos

Se curl -L parece não ter efeito, o site provavelmente está usando um redirecionamento JavaScript ou meta-refresh, que o cURL não consegue ver, pois só lê cabeçalhos HTTP. 

Confirme com curl -L -I primeiro. Se o status permanecer 200, a lógica de redirecionamento é do lado do cliente e requer um navegador headless em vez disso.

⚙️

Explore os guias de Playwright e Puppeteer para mais informações sobre automação web avançada e scraping.

Erro cURL 47 maximum redirects followed

Este erro significa que o cURL atingiu seu limite de --max-redirs (o padrão é alto, mas loops o acionam rapidamente). Soluções:

  1. Execute curl -L -v para inspecionar a cadeia e detectar um loop.

  2. Reduza --max-redirs durante a depuração.

  3. Mude para um IP de proxy residencial rotativo limpo. Muitos loops de redirecionamento são acionados por IPs de datacenter na lista negra ou reutilizados sendo rejeitados por sistemas anti-bot.

Conclusão: Use cURL follow redirect​s

Os comandos de redirecionamento do cURL permitem que você alcance a página final real em vez de travar em um salto intermediário, usando -L para seguir e --max-redirs para se manter seguro contra loops. Combinado com proxies residenciais ou móveis da CyberYozh App, você obtém acesso consistente e desbloqueado a sites com muitos redirecionamentos em escala.

Confira o catálogo de proxies agora para começar.

FAQ sobre cURL follow redirect​s

Como faço para o cURL seguir redirecionamentos?

Adicione a flag -L (ou --location) ao seu comando. O cURL então lerá cada cabeçalho Location e solicitará a próxima URL automaticamente até alcançar a página final.

Por que curl -L não funciona em alguns sites?

O redirecionamento pode ser baseado em JavaScript ou meta-refresh em vez de uma resposta HTTP 3xx, que o cURL não consegue detectar, pois processa apenas cabeçalhos.

Quantos redirecionamentos o cURL segue por padrão?

O cURL segue um número alto de saltos por padrão, mas isso pode ser alterado com --max-redirs, que também protege contra loops infinitos.

O que significa "curl: (47) maximum redirects followed"?

Significa que o cURL atingiu seu limite de redirecionamento, geralmente devido a um loop ou a um site que rejeita repetidamente a solicitação, frequentemente causado por um IP sinalizado.

Como uso o cURL com um proxy e sigo redirecionamentos ao mesmo tempo?

Combine -L com -x protocol://user:password@IP:port; o cURL roteará cada salto da cadeia de redirecionamento através desse proxy.

O cURL segue redirecionamentos 302 automaticamente?

Apenas com -L ativado; sem ele, o cURL para na primeira resposta 302 e não solicita a nova URL.

Como faço para impedir o cURL de seguir redirecionamentos?

Simplesmente omita -L, ou defina --max-redirs 0 se quiser confirmar que a flag não está definida acidentalmente em outro lugar.

Um redirecionamento altera minha solicitação de POST para GET?

Depende do código de status: 301/302 podem mudar para GET em alguns clientes, enquanto 307/308 sempre preservam o método e o corpo originais.

Como vejo a cadeia completa de redirecionamento sem buscar o corpo da página?

Use curl -L -I para imprimir apenas cabeçalhos e códigos de status para cada salto, revelando rapidamente o destino final.

Qual tipo de proxy funciona melhor para scraping com muitos redirecionamentos?

Proxies residenciais rotativos são recomendados por padrão porque combinam rotação de IP controlável com alta aceitação em verificações de redirecionamento e anti-bot.