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
Guia definitivo: Como gerenciar sua infraestrutura com Terraform
Em meio ao caos que o Corona Vírus tem causado em todo o globo, chegamos ao último post da nossa série de postagens sobre Terraform. Caso tenha perdido os 5
AWK: A Ferramenta Definitiva para Manipulação de Dados no Linux
No ecossistema de TI, a eficiência operacional depende da nossa capacidade de processar e analisar dados rapidamente. Seja na administração de sistemas, análise de logs ou automação de tarefas, a
A lenda do arquivo perdido. Domine a busca de arquivos no Linux com o comando find!
Você já se perguntou como os especialistas em Linux conseguem encontrar arquivos em um emaranhado de diretórios? Saiba que há um comando mágico chamado find que lhes concede esse poder.






