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.comEste 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.txtDownload com nome personalizado:
curl -o meuarquivo.txt https://example.com/arquivo.txtDownload múltiplo:
curl -O https://example.com/arquivo1.txt -O https://example.com/arquivo2.txtDownload com resumo (caso seja interrompido):
curl -C - -O https://example.com/arquivo-grande.zip2. Teste de APIs e Requisições HTTP
Requisição GET (padrão):
curl https://api.example.com/usersRequisição POST com dados:
curl -X POST -d "nome=valor&campo=dados" https://api.example.com/usersRequisição POST com JSON:
curl -X POST -H "Content-Type: application/json" -d '{"nome":"João","email":"joao@email.com"}' https://api.example.com/usersRequisição PUT:
curl -X PUT -d '{"id":1,"nome":"João Silva"}' -H "Content-Type: application/json" https://api.example.com/users/1Requisição DELETE:
curl -X DELETE https://api.example.com/users/13. Trabalhar com Headers e Cookies
Visualizar headers da resposta:
curl -I https://www.example.comAdicionar headers personalizados:
curl -H "User-Agent: MeuApp/1.0" -H "Authorization: Bearer token123" https://api.example.com/dataEnviar cookies:
curl -b "sessionid=abc123;token=xyz789" https://www.example.comSalvar cookies em arquivo:
curl -c cookies.txt https://www.example.com/loginUsar cookies de arquivo:
curl -b cookies.txt https://www.example.com/profile4. Autenticação
Autenticação básica HTTP:
curl -u usuario:senha https://site-protegido.comAutenticação com token Bearer:
curl -H "Authorization: Bearer seu-token-aqui" https://api.example.com/dados5. Debug e Troubleshooting
Modo verbose (essencial para debug):
curl -v https://www.example.comO 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.comSalvar saída em arquivo:
curl -o resposta.html https://www.example.com6. Trabalhar com Formulários Web
Enviar dados de formulário:
curl -d "usuario=joao&senha=123456" -X POST https://www.example.com/loginUpload de arquivos:
curl -F "arquivo=@/caminho/para/arquivo.jpg" https://www.example.com/upload7. Uso com Proxy
Requisição através de proxy:
curl -x http://proxy.example.com:8080 https://www.example.comOpçõ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.comFazer backup de uma página web:
curl -o backup-site.html https://meusite.comTestar 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.
About author
Você pode gostar também
Proteja seu site: aprenda a identificar vulnerabilidades com WhatWeb
Todos nós temos contato direto ou indireto a sites e aplicações web. E, como bem sabemos, essas aplicações são alvos de ataques massivos de hackers e pessoas mau intencionadas. Por
Introdução ao MongoDB: aprenda sobre JSON, BSON e primeiros passos
Dando continuidade na série de MongoDB, nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB.
Descubra como o Ansible e o IaC podem revolucionar sua infraestrutura de TI
O termo IaC – Infrastructure as Code – dá nome aos processos de provisionamento de infraestrutura tecnológica (principalmente em Cloud Computing) através de códigos, viabilizando o versionamento e a colaboração







