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
O bombeiro que vende o próprio incêndio
Saudações, pessoal! Kenneth Arrow, economista laureado com o Nobel, descreveu décadas atrás um dilema clássico dos mercados de informação. O comprador só descobre o valor real de uma informação depois
Por que você deve investir tempo estudando Python
Por que você deve investir tempo estudando Python No mundo cada vez maior das linguagens de programação, uma delas se destaca como uma ferramenta versátil e poderosa que conquistou os
Crie sua primeira aplicação em Python: Guia passo a passo
Neste post estaremos aprendendo a criar uma aplicação simples utiliando a linguagem de programação “Python”. Primeiramente, obviamente, será necessário ter o python instalado em nossas máquinas, podemos adquirí-lo de






