cURL – Guia completo pra iniciantes

cURL – Guia completo pra iniciantes

O cURL (Client for URLs) foi desenvolvido em 1997 pelo desenvolvedor Daniel Stenberg e foi inicialmente lançado sob o nome httpget, uma ferramenta simples para baixar dados de URLs pela linha de comando. O projeto caiu no gosto da comunidade e evoluiu rapidamente para suportar várias outros protocolos além do HTTP e foi posteriormente renomeado para urlget e, logo depois, para seu nome definitivo: cURL, refletindo sua função de manipular transferências de dados através de URLs.

O cURL se consolidou como uma biblioteca (libcURL) e uma ferramenta robusta, passando a suportar dezenas de protocolos como FTP, SMTP, LDAP e até serviços mais modernos como SFTP e HTTPS com autenticação. Hoje, ele é amplamente utilizado em sistemas operacionais, dispositivos embarcados e aplicações críticas, tornando-se referência em portabilidade, confiabilidade e suporte a padrões da web.

O cURL é uma das ferramentas mais poderosas e versáteis da linha de comando para transferência de dados entre um cliente e um servidor. Para iniciantes no mundo da tecnologia, dominar o cURL é essencial.

Sintaxe Básica

A sintaxe fundamental do cURL é simples e intuitiva:

curl [opções] [URL]

O exemplo mais básico é fazer uma requisição GET para obter o conteúdo de uma página web:

curl https://www.example.com

Este comando retornará o código HTML da página diretamente no terminal.

Casos de Uso Mais Comuns

1. Download de Arquivos

Download básico mantendo o nome original:

curl -O https://example.com/arquivo.txt

Download com nome personalizado:

curl -o meuarquivo.txt https://example.com/arquivo.txt

Download múltiplo:

curl -O https://example.com/arquivo1.txt -O https://example.com/arquivo2.txt

Download com resumo (caso seja interrompido):

curl -C - -O https://example.com/arquivo-grande.zip

2. Teste de APIs e Requisições HTTP

Requisição GET (padrão):

curl https://api.example.com/users

Requisição POST com dados:

curl -X POST -d "nome=valor&campo=dados" https://api.example.com/users

Requisição POST com JSON:

curl -X POST -H "Content-Type: application/json" -d '{"nome":"João","email":"joao@email.com"}' https://api.example.com/users

Requisição PUT:

curl -X PUT -d '{"id":1,"nome":"João Silva"}' -H "Content-Type: application/json" https://api.example.com/users/1

Requisição DELETE:

curl -X DELETE https://api.example.com/users/1

3. Trabalhar com Headers e Cookies

Visualizar headers da resposta:

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

Adicionar headers personalizados:

curl -H "User-Agent: MeuApp/1.0" -H "Authorization: Bearer token123" https://api.example.com/data

Enviar cookies:

curl -b "sessionid=abc123;token=xyz789" https://www.example.com

Salvar cookies em arquivo:

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

Usar cookies de arquivo:

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

4. Autenticação

Autenticação básica HTTP:

curl -u usuario:senha https://site-protegido.com

Autenticação com token Bearer:

curl -H "Authorization: Bearer seu-token-aqui" https://api.example.com/dados

5. Debug e Troubleshooting

Modo verbose (essencial para debug):

curl -v https://www.example.com

O modo verbose mostra informações detalhadas sobre a conexão, headers enviados e recebidos, tempo de resposta e possíveis erros.

Seguir redirecionamentos:

curl -L https://www.example.com

Salvar saída em arquivo:

curl -o resposta.html https://www.example.com

6. Trabalhar com Formulários Web

Enviar dados de formulário:

curl -d "usuario=joao&senha=123456" -X POST https://www.example.com/login

Upload de arquivos:

curl -F "arquivo=@/caminho/para/arquivo.jpg" https://www.example.com/upload

7. Uso com Proxy

Requisição através de proxy:

curl -x http://proxy.example.com:8080 https://www.example.com

Opções Mais Importantes

| Opção | Descrição | Exemplo |

| :– | :– | :– |

| `-o` | Salva output em arquivo específico | `curl -o arquivo.html https://example.com` |

| `-O` | Salva com o nome original do arquivo | `curl -O https://example.com/arquivo.pdf` |

| `-X` | Define o método HTTP | `curl -X POST https://api.example.com` |

| `-H` | Adiciona header personalizado | `curl -H “Content-Type: application/json”` |

| `-d` | Envia dados no corpo da requisição | `curl -d “nome=valor” https://example.com` |

| `-u` | Autenticação básica | `curl -u usuario:senha https://example.com` |

| `-v` | Modo verbose para debug | `curl -v https://example.com` |

| `-L` | Segue redirecionamentos | `curl -L https://example.com` |

| `-b` | Envia cookies | `curl -b “cookie=valor” https://example.com` |

| `-c` | Salva cookies em arquivo | `curl -c cookies.txt https://example.com` |

Exemplos Práticos para Iniciantes

Verificar se um site está online:

curl -I -s -o /dev/null -w "%{http_code}" https://www.google.com

Fazer backup de uma página web:

curl -o backup-site.html https://meusite.com

Testar a API Via CEP:

curl https://viacep.com.br/ws/01310-100/json/

Enviar uma notificação para um servidor do Slack:

curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Olá do cURL!"}' \
https://hooks.slack.com/${seu-webhook-url}

Verificar tempo de resposta:

curl -w "@-" -o /dev/null -s https://www.example.com <<< "
     time_namelookup:  %{time_namelookup}s
        time_connect:  %{time_connect}s
     time_appconnect:  %{time_appconnect}s
    time_pretransfer:  %{time_pretransfer}s
       time_redirect:  %{time_redirect}s
  time_starttransfer:  %{time_starttransfer}s
                     ----------
          time_total:  %{time_total}s
"

Dicas Importantes para Iniciantes

1. Sempre use modo verbose (`-v`) quando algo não funcionar – isso mostra exatamente o que está acontecendo na comunicação

2. O cURL é case-sensitive – certifique-se de usar as opções com a capitalização correta

3. Para senhas com caracteres especiais, use aspas simples: `curl -u ‘usuario:senha@especial’`

4. Use arquivos de configuração – crie um arquivo `.cURLrc` no seu diretório home para opções padrão

5. Combine com outras ferramentas Linux – o cURL funciona perfeitamente com pipes e redirecionamentos:

curl -s https://api.github.com/users/torvalds | jq '.name'

O **cURL** é uma ferramenta fundamental que todo profissional de tecnologia deve conhecer. A sua versatilidade permite desde tarefas simples de download até automação complexa de testes de API, tornando-o indispensável para desenvolvedores, administradores de sistema, engenheiros SRE e DevOps, e até mesmo entusiastas de Linux.

Anterior OpenClaw, Hermes e a nova fase dos agentes de IA

About author

Você pode gostar também