🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Como Enviar Cabeçalhos HTTP Com cURL: Um Guia Abrangente

Michael Lee
Michael Lee

Expert Network Defense Engineer

22-Sep-2025

Principais Conclusões:

  • Os cabeçalhos HTTP são cruciais para a comunicação cliente-servidor, transmitindo metadados essenciais sobre requisições e respostas.
  • O cURL oferece a opção -H ou --header para enviar facilmente cabeçalhos HTTP personalizados com suas requisições.
  • Você pode enviar múltiplos cabeçalhos usando a opção -H várias vezes.
  • Compreender e manipular cabeçalhos é vital para scraping de web, testes de API e depuração de problemas de rede.
  • Visualizar cabeçalhos de resposta com cURL ajuda na depuração e na compreensão do comportamento do servidor.

Introdução

cURL (Cliente URL) é uma poderosa ferramenta de linha de comando para transferir dados com URLs, suportando protocolos como HTTP, HTTPS e FTP. Para desenvolvedores e administradores de sistema, o cURL é indispensável. Sua capacidade de enviar e receber cabeçalhos HTTP é fundamental para definir interações cliente-servidor. Este guia fornece uma visão abrangente de como enviar cabeçalhos HTTP com cURL, cobrindo vários cenários, exemplos práticos e melhores práticas.

O Que São Cabeçalhos HTTP?

Os cabeçalhos HTTP são uma parte fundamental das requisições e respostas HTTP, transportando metadados essenciais sobre a transação. Eles atuam como o envelope e as informações de postagem de uma carta, enquanto o corpo é a própria carta. Eles possibilitam recursos como caching, autenticação e negociação de conteúdo.

Tipos de Cabeçalhos HTTP:

  • Cabeçalhos de Requisição: Enviados pelo cliente (ex.: User-Agent, Authorization).
  • Cabeçalhos de Resposta: Enviados pelo servidor (ex.: Content-Type, Set-Cookie).
  • Cabeçalhos Gerais: Aplicam-se a ambos (ex.: Date, Connection).
  • Cabeçalhos de Entidade: Descrevem o corpo (ex.: Content-Length).

Manipular cabeçalhos de requisição é crucial para depuração, testes de API e simulação de comportamentos específicos do cliente.

Sintaxe Básica: Enviando um Único Cabeçalho

Para enviar um cabeçalho HTTP com cURL, use a opção -H ou --header seguida de "Nome-Cabeçalho: Valor-Cabeçalho".

Sintaxe:

bash Copy
curl -H "Nome-Cabeçalho: Valor-Cabeçalho" [URL]

Exemplo 1: Definindo um User-Agent Personalizado

Substitua o User-Agent padrão do cURL para simular um navegador web:

bash Copy
curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" https://www.example.com

Isso faz com que a requisição pareça originada de um navegador Chrome, útil para interagir com sites que bloqueiam agentes de usuário não navegadores.

Exemplo 2: Definindo o Cabeçalho Accept

Especifique tipos de conteúdo preferidos, como JSON:

bash Copy
curl -H "Accept: application/json" https://api.example.com/data

Isso solicita dados no formato JSON do endpoint da API.

Enviando Múltiplos Cabeçalhos HTTP

Envie múltiplos cabeçalhos usando a opção -H várias vezes em um único comando.

Sintaxe:

bash Copy
curl -H "Nome-Cabeçalho-1: Valor-Cabeçalho-1" \
     -H "Nome-Cabeçalho-2: Valor-Cabeçalho-2" \
     [URL]

Exemplo 3: Requisição POST com Autenticação e Content-Type

Para chamadas de API, inclua cabeçalhos Authorization e Content-Type:

bash Copy
curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer SEU_TOKEN_DE_ACESSO" \
     -d '{"name": "John Doe", "age": 30}' \
     https://api.example.com/users

Isso envia uma requisição POST com dados JSON, autenticados por um token bearer.

Sobrescrevendo Cabeçalhos Padrão

O cURL envia alguns cabeçalhos padrão. Sobrescreva-os especificando seu valor personalizado com -H. Seu cabeçalho personalizado tem precedência.

Exemplo 4: Sobrescrevendo o Cabeçalho User-Agent

bash Copy
curl -H "User-Agent: MyCustomApp/1.0" https://www.example.com

Isso identifica seu cliente como MyCustomApp/1.0 ao servidor.

Exemplo 5: Removendo um Cabeçalho Padrão

Para remover um cabeçalho que o cURL normalmente enviaria, use um ponto e vírgula sem um valor:

bash Copy
curl -H "Accept-Encoding;" https://www.example.com

Isso informa explicitamente ao cURL para não enviar o cabeçalho Accept-Encoding.

Enviando Cabeçalhos com Diferentes Métodos HTTP

O cURL suporta todos os métodos HTTP padrão usando a opção -X, com cabeçalhos adicionados via -H.

Exemplo 6: Requisição PUT com Cabeçalhos

bash Copy
curl -X PUT \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer SEU_TOKEN_DE_AUTENTICAÇÃO" \
     -d '{"status": "active"}' \
     https://api.example.com/items/123

Isso atualiza um recurso, garantindo a correta interpretação do conteúdo e autenticação.

Exemplo 7: Requisição DELETE com Cabeçalhos

bash Copy
curl -X DELETE \
     -H "Authorization: Bearer SEU_TOKEN_DE_AUTENTICAÇÃO" \
     https://api.example.com/items/456

Isso realiza uma requisição DELETE autenticada para um recurso.

Manipulação de Cookies com cURL

Os cookies são cabeçalhos HTTP especiais para gerenciamento de sessão. O cURL oferece opções específicas para enviá-los e recebê-los.

Exemplo 8: Enviando um Cookie

Use -H "Cookie: ..." ou a opção mais conveniente -b (ou --cookie):

bash Copy
curl -b "session_id=abc123xyz" https://www.example.com/dashboard

Exemplo 9: Armazenando e Enviando Cookies de um Arquivo
Primeiro, salve os cookies recebidos de um servidor em cookies.txt:

bash Copy
curl -c cookies.txt https://www.example.com/login

Em seguida, envie esses cookies em solicitações subsequentes:

bash Copy
curl -b cookies.txt https://www.example.com/profile

Isso é fundamental para simular sessões de usuário logado.

Visualizando Cabeçalhos de Resposta

Visualizar cabeçalhos de resposta é crucial para depuração e compreensão do comportamento do servidor. Use -i ou -I.

Exemplo 10: Visualizando Todos os Cabeçalhos de Resposta e o Corpo

Use -i (ou --include) para exibir tanto os cabeçalhos quanto o corpo da resposta:

bash Copy
curl -i https://www.example.com

Exemplo 11: Visualizando Apenas Cabeçalhos de Resposta (Requisição HEAD)

Use -I (ou --head) para enviar uma requisição HEAD e obter apenas cabeçalhos, sem o corpo:

bash Copy
curl -I https://www.example.com

Isso é eficiente para verificar o status de recurso ou cabeçalhos de cache.

Exemplo 12: Salvando Cabeçalhos em um Arquivo

Use -D ou --dump-header para salvar cabeçalhos de resposta em um arquivo:

bash Copy
curl -D headers.txt https://www.example.com

Isso salva os cabeçalhos em headers.txt enquanto imprime o corpo na saída padrão.

Casos de Uso Práticos para Envio de Cabeçalhos HTTP com cURL

Cabeçalhos personalizados são indispensáveis para várias aplicações:

1. Testes e Depuração de API

Envie cabeçalhos específicos para autenticação ou parâmetros personalizados para testar pontos finais de API.

Exemplo: Testando uma API com uma X-API-Key.

bash Copy
curl -H "X-API-Key: sua_chave_api_secreta" https://api.example.com/v1/data

2. Web Scraping e Extração de Dados

Imite um navegador real para evitar detecção configurando cabeçalhos User-Agent, Referer e Cookie.

Exemplo: Scraping com um User-Agent de navegador e cookie de sessão.

bash Copy
curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" \
     -b "session_id=sua_session_id" \
     https://www.example.com/protected_data

Simule interações como envios de formulários, onde os cabeçalhos desempenham um papel crítico.

Exemplo: Simulando um envio de formulário com application/x-www-form-urlencoded.

bash Copy
curl -X POST \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "username=testuser&password=testpass" \
     https://www.example.com/login

4. Testando Configurações de Servidor Web

Teste configurações de servidor, políticas de cache e definições de segurança.

Exemplo: Verificando o comportamento de cache com If-Modified-Since.

bash Copy
curl -I -H "If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT" https://www.example.com/static/image.jpg

Melhores Práticas e Resolução de Problemas

Para garantir o uso eficaz e responsável do cURL com cabeçalhos HTTP, considere estas melhores práticas e dicas de solução de problemas:

Melhores Práticas:

  • Seja Específico: Envie apenas os cabeçalhos necessários. Cabeçalhos excessivos podem acionar mecanismos anti-bot.
  • Use User-Agent com Sabedoria: Imitar um navegador popular para web scraping para evitar bloqueios, mas esteja ciente da detecção de bots direcionada.
  • Lide com Cookies Corretamente: Use opções -c (cookie-jar) e -b (cookie) para gerenciar sessões, em vez de cabeçalhos Cookie manuais.
  • Inspecione Respostas: Sempre use -i ou -I para visualizar cabeçalhos de resposta para depuração e compreensão do comportamento do servidor.
  • Codifique URLs: Codifique corretamente parâmetros em strings de consulta ou dados de formulários para evitar problemas com caracteres especiais.
  • Respeite robots.txt: Eticamente, verifique e atenda às diretrizes robots.txt de um site para tarefas automatizadas.

Resolução de Problemas de Problemas Comuns:

  • Erros "403 Forbidden" ou "401 Unauthorized":
    • Verifique o cabeçalho Authorization (validade do token).
    • Confira os cabeçalhos User-Agent e Referer.
    • Considere o bloqueio de IP; use proxies ou aguarde.
  • Conteúdo Incorreto ou Respostas Vazias:
    • Confirme se os cabeçalhos Content-Type e Accept correspondem às expectativas do servidor.
    • Renderização de JavaScript: o cURL busca HTML bruto. Se o conteúdo for renderizado em JS, considere navegadores sem cabeça ou APIs de scraping especializadas.
    • Siga Redirecionamentos: Use -L ou --location para fazer o cURL seguir redirecionamentos HTTP 3xx.
  • Timeouts de Conexão ou Conexões Recusadas:
    • Certifique-se de que a URL está correta e o servidor está acessível.
    • Verifique o firewall local ou proxy de rede.
    • O servidor pode estar temporariamente fora do ar ou sobrecarregado.

Usar a opção de saída detalhada (-v) no cURL pode fornecer informações valiosas para a depuração.

Conclusão e Chamada à Ação

Enviar cabeçalhos HTTP com cURL é uma habilidade fundamental para qualquer pessoa que trabalhe com tecnologias web. Desde a manipulação básica do User-Agent até esquemas de autenticação complexos e gerenciamento de cookies, o cURL oferece a flexibilidade e o poder para criar solicitações HTTP precisas. Dominar essas técnicas é essencial para testes eficazes de API, scraping web robusto e depuração de rede completa.
Ao entender o papel de cada cabeçalho e utilizar as opções versáteis do cURL, você pode obter um maior controle sobre suas interações cliente-servidor. Lembre-se de sempre seguir as melhores práticas, respeitar as políticas dos sites e aproveitar os recursos de depuração do cURL para garantir que suas solicitações sejam eficazes e responsáveis.

Pronto para elevar suas habilidades com cURL?

Experimente os exemplos fornecidos neste guia, explore a extensa documentação do cURL e integre essas técnicas em seu fluxo de trabalho diário. A capacidade de controlar precisamente os cabeçalhos HTTP sem dúvida fará de você um profissional da web mais eficiente e capaz.

Perguntas Frequentes (FAQ)

P1: Qual é a diferença entre -H e -b para enviar cabeçalhos?

-H (ou --header) é uma opção de uso geral para enviar qualquer cabeçalho HTTP personalizado no formato "Nome-Do-Cabeçalho: Valor-Do-Cabeçalho". -b (ou --cookie) é especificamente para o envio de cookies, muitas vezes mais conveniente quando lidando exclusivamente com eles, especialmente a partir de um arquivo.

P2: Como posso ver todos os cabeçalhos que cURL envia por padrão?

Use a opção -v (ou --verbose) com seu comando cURL. Isso fornece uma saída detalhada, incluindo a solicitação completa que o cURL envia (com todos os cabeçalhos padrão), o processo de conexão e a resposta completa do servidor.

P3: O cURL pode lidar com cabeçalhos HTTP/2 ou HTTP/3?

Sim, o cURL suporta HTTP/2 e HTTP/3 (QUIC). Ele geralmente negocia automaticamente o uso desses protocolos. A opção -H para especificar cabeçalhos permanece a mesma, pois o cURL lida com a estruturação específica do protocolo internamente.

P4: Como eu envio um cabeçalho com um valor vazio?

Para enviar um cabeçalho com um valor vazio, especifique-o como "Nome-Do-Cabeçalho:" (com dois pontos, mas sem valor). Para remover um cabeçalho que o cURL normalmente enviaria, use "Nome-Do-Cabeçalho;" (com ponto e vírgula), o que indica ao cURL que deve suprimir completamente esse cabeçalho.

P5: É possível enviar caracteres não ASCII em cabeçalhos?

Os cabeçalhos HTTP são tradicionalmente apenas ASCII. Caracteres não ASCII devem ser codificados em URL ou codificados em Base64, dependendo do cabeçalho e seu uso. Para a maioria dos casos comuns, é recomendável usar apenas ASCII nos valores dos cabeçalhos para compatibilidade.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo