O cURL é uma ferramenta muito utilizada por desenvolvedores para testar uma API rapidamente, verificar se um servidor está respondendo corretamente ou automatizar requisições sem depender de interface gráfica, executando tudo diretamente pelo terminal.
Presente na maioria dos sistemas operacionais, esse comando permite enviar e receber dados por meio de URLs utilizando protocolos como HTTP, HTTPS e FTP. Apesar de possuir uma estrutura simples, é de grande utilidade para testar serviços web, validar integrações e automatizar processos.
Neste artigo, você vai entender o que é o cURL, qual sua função e como executar os primeiros comandos.
O que significa cURL?
cURL significa “Client for URLs” (Cliente para URLs). O nome faz referência à sua função principal: atuar como um cliente capaz de acessar, enviar e receber dados utilizando a estrutura de URLs para realizar requisições diretamente pelo terminal.
O projeto surgiu em 1996, criado por Daniel Stenberg para alimentar um bot de IRC que buscava taxas de câmbio. Inicialmente teve outros nomes, como cULR httpget e cURL urlget mas, em 1998, passou a ter o nome oficial de cURL e permanece assim até hoje.
Desde então, a ferramenta passou de um projeto pessoal para uma das soluções de código aberto mais utilizadas do mundo presente em inúmeros dispositivos. Com um ciclo de desenvolvimento constante, a cada oito semanas uma nova versão é lançada mantendo sua evolução contínua.
Qual a função principal do cURL?
Funciona como um tipo de interface para a biblioteca libcurl (biblioteca de transferência de URLs do lado do cliente) que é responsável por executar a comunicação. Em geral, pode ser usado para testar APIs, enviar e baixar arquivos, preencher formulários, realizar autenticação e verificar a conectividade de servidores.
Por suportar diversos protocolos como HTTP, HTTPS, FTP, entre outros diretamente pela linha de comando, possibilita o teste de serviços web e a automação de requisições. Além disso, permite conexões seguras por meio de certificados SSL/TLS, garantindo proteção em transmissões criptografadas.
Está disponível na maioria dos sistemas baseados em Unix e também em outros ambientes, sendo amplamente usado por profissionais de tecnologia.
Como usar o comando cURL?
Para entender como usar o comando cURL, lembre-se que ele é uma ferramenta de linha de comando utilizada para transferir dados entre cliente e servidor por meio de URLs específicas e diferentes protocolos de rede. A partir disso, existem formas diferentes de acioná-lo de acordo com a versão que se tem acesso, sistema operacional do seu computador e o objetivo.
Confira a seguir como ter acesso ao cURL.
Primeiros passos
Primeiro, é preciso verificar se o cURL está instalado na sua máquina. Por padrão, tanto no Windows quanto no MacOS e Linux, ele já está. Mas, para ter certeza, abra o prompt de comando e execute o seguinte:
$ curl –help
Caso o comando não seja reconhecido, significa que você ainda não tem o cURL instalado e será preciso fazer o download seguindo as dinâmicas exigidas pelo sistema operacional que utiliza.
Verificar Versão Curl
Se você tem o cURL instalado, verifique a versão que tem acesso para poder iniciar o uso. Para isso, faça o login no seu servidor dedicado Linux (VPS) e use o seguinte comando:
curl –version
Dessa forma você saberá qual a versão disponível e quais são os protocolos suportados.
Comando cURL – Sintaxe Básica
Antes de usar o comando cURL, é preciso entender a sintaxe básica de seu funcionamento. Primeiro situa-se o comando (curl), depois o que se deseja fazer (opções) e ao fim o caminho (URL).
curl [opções] [URL]
Um exemplo simples para visualizar o conteúdo de uma página seria:
curl http://meusite.com
Dessa forma, o código-fonte completo da página inicial do domínio será renderizado. Se nenhum protocolo for previamente estipulado, o cURL assume HTTP por padrão.
Opções de Comandos cURL de Arquivos
Para acionar o cURL de Arquivos, ou seja, o download de arquivos em locais remotos existem duas maneiras:
- -O: essa opção salva o arquivo no diretório atual com o mesmo nome original;
- -o: essa opção permite a definição de um novo nome diferente do arquivo local.
Como exemplo da opção 1 temos:
curl -O http://meusite.com/arquivo.zip
Onde o comando vai salvar o arquivo como arquivo.zip. Já para opção 2, onde o arquivo terá outro nome temos:
curl -o backup.zip https://meusite.com/arquivo.zip
Em que o arquivo será salvo como backup.zip.
Download interrompido
Para os casos onde o download é interrompido por algum motivo, pode-se reiniciar o processo usando o cURL com o comando:
curl -C - -O http://meusite.com/arquivo.zip
Download de múltiplos arquivos
Também é possível realizar o download de arquivos simultâneos executando:
curl -O http://meusite.com/arquivo.zip -O https://meusite.com/relatorio.pdf -O https://meusite.com/planilha.xlsx
Download de múltiplos arquivos de diferentes endereços
Quando você quer baixar vários arquivos de diferentes endereços, basta reunir todas as URLs em um único arquivo de texto. Dessa forma, o cURL pode ser combinado com o comando xargs para processar cada link automaticamente.
Por exemplo, suponha que você tenha um arquivo chamado listaUrls.txt contendo as URLs dos arquivos:
https://meusite.com/manual.pdf
https://meusite.com/catalogo.zip
https://meusite.com/tabela.csv
Para baixar todos de uma vez, use:
xargs -n 1 curl -O < listaUrls.txt
Comandos cURL para HTTP
Os comandos cURL para HTTP permitem enviar requisições a servidores web e APIs diretamente pelo terminal. Você pode fazer requisições GET, POST, PUT, DELETE, consultar cabeçalhos, enviar dados e incluir autenticação.
Vejamos alguns exemplos a seguir.
Requisição GET
A requisição GET é utilizada para consultar ou recuperar informações de um servidor, sem alterar dados. É o tipo de requisição mais comum em APIs e navegação web e com ela você pode fazer uma busca de dados.
Por exemplo, a forma mais simples de acessar um endpoint é:
curl http://meusite.com/api/produtos
Isso retorna o conteúdo da resposta no terminal (geralmente JSON ou HTML). Caso ocorra algum problema, o cURL pode exibir mensagens como:
- Could not resolve host: erro de DNS (domínio incorreto ou inexistente)
- Connection refused: o servidor não está aceitando conexões
- Operation timed out: tempo limite de resposta excedido
Essas mensagens indicam falhas de rede ou infraestrutura, e não necessariamente erros na aplicação.
Ver apenas os cabeçalhos HTTP
Esse comando permite visualizar apenas os headers (cabeçalhos) da resposta, como código de status, tipo de conteúdo e servidor, sem exibir o corpo da página. Para consultar status da requisição (verificar a disponibilidade de um site), como por exemplo 200 ou 404, insira o comando:
curl -I https://meusite.com
Enviar dados com POST
A requisição POST é usada para enviar dados ao servidor, como em formulários de cadastro ou login. Os dados são enviados no corpo da requisição, então, para simular o envio faça o seguinte:
curl -X POST -d “nome=Maria&email=maria@email.com” https://meusite.com/api/cadastro
Lembrando que o parâmetro -d envia os dados no corpo da requisição.
Enviar JSON para APIs
Em integrações modernas, é comum enviar dados no formato JSON. Para isso, é necessário indicar o tipo de conteúdo no cabeçalho da requisição, por exemplo:
curl -X POST https://meusite.com/api/usuarios
-H “Content-Type: application/json”
-d ‘{“nome”:”Carlos”,”cargo”:”Analista”}’
Esse é um comando muito utilizado em integrações, como no caso da API da Focus NFe.
Incluir cabeçalhos personalizados
Cabeçalhos personalizados são usados para enviar informações adicionais, como tokens de autenticação ou identificadores de aplicação. Um exemplo é:
curl -H “Authorization: Bearer TOKEN123” https://meusite.com/api/dados
Incluir usuário e senha (Basic Auth)
Este é um atalho para informar um cabeçalho compatível com a autenticação Basic Auth.
curl -u usuario:senha https://meusite.com/api/dados
Por baixo dos panos, isso irá adicionar o cabeçalho:
Authorization: Basic base64(usuario:senha)
Esta é a forma como você informa seu token de acesso (no campo usuário) na API da Focus NFe. A senha é informada vazia, assim:
curl -u seu_token_de_acesso: https://api.focunsfe.com.br/v2/nfe/REF
Usar proxy HTTP
O proxy é utilizado quando o acesso à internet precisa passar por um servidor intermediário, comum em redes corporativas. O comando fica assim:
curl -x proxy.meusite.com:8080 https://meusite.com
cURL para Cookies
Neste caso, o uso do cURL permite visualizar, salvar e reutilizar cookies enviados por um servidor. Isso é útil para simular sessões autenticadas, testar áreas logadas ou validar comportamentos dependentes de sessão.
Para salvar os cookies recebidos ao acessar uma página basta realizar o comando:
curl –cookie-jar cookies.txt http://meusite.com/login
O arquivo cookies.txt armazenará os cookies retornados pelo servidor. Mas, se você já tiver um arquivo de cookies e quiser reutilizá-lo em outra requisição faça o seguinte:
curl –cookie cookies.txt http://meusite.com/area-restrita
Assim, o cURL enviará os cookies salvos, simulando uma navegação contínua.
cURL para FTP
Além de HTTP e HTTPS, o cURL também suporta o protocolo FTP, permitindo enviar e baixar arquivos de servidores remotos, como quando é preciso trocar de hospedagem de um site sem perder ou alterar o conteúdo, por exemplo. Para baixar um arquivo via FTP insira:
curl -u usuario:senha -O ftp://ftp.meusite.com/backup.zip
O parâmetro “-u” define usuário e senha. No caso de conexões anônimas, essa autenticação pode não ser necessária. Então para enviar um arquivo ao servidor use:
curl -u usuario:senha -T relatorio.csv ftp://ftp.meusite.com/
Aqui, o parâmetro “-T” indica o upload do arquivo especificado.
Limitando Saídas cURL
Quando você desejar controlar o consumo de banda para evitar sobrecarga na rede, como no caso de downloads de grandes arquivos, dê o seguinte comando para limitar a taxa de transferência:
curl –limit-rate 150K -O http://meusite.com/arquivo-grande.zip
Nesse exemplo, a velocidade de download é limitada a 150 KB por segundo. Esse recurso é útil em ambientes de produção ou redes compartilhadas.
Debugando a conexão com o cURL
O cURL permite usar a opção “-v” para mostrar a saída de forma mais “verbosa”, isto é, mostrando mais informações sobre a conexão, como resolução de DNS, informações da conexão TCP, certificado do servidor, handshake TLS e os cabeçalhos enviados e recebidos.
curl -v https://meusite.com
Esta opção é muito usada quando estamos explorando um novo serviço HTTP, como no caso da API da Focus NFe.
Qual a diferença entre cURL e Postman?
A diferença é que o cURL é uma ferramenta de linha de comando utilizada para fazer requisições diretamente pelo terminal, exigindo o uso de comandos específicos. Já o Postman é uma aplicação com interface gráfica mais amigável que permite testar, organizar e salvar requisições de maneira visual e mais intuitiva.
O cURL é uma ferramenta de linha de comando voltada para quem precisa fazer requisições de forma rápida, leve e automatizável. Sua principal vantagem está na eficiência e no controle técnico: ele consome poucos recursos. Além disso, já vem instalado na maioria dos sistemas Linux, macOS e nas versões mais recentes do Windows.
Por outro lado, sua desvantagem está na curva de aprendizado. Como depende de sintaxe e parâmetros específicos, pode ser menos intuitivo para iniciantes e exige familiaridade com terminal e conceitos de HTTP.
O Postman, por sua vez, é uma ferramenta com interface gráfica voltada para testes e organização de APIs. Sua vantagem é a facilidade de uso, pois permite configurar requisições de forma visual, salvar coleções, organizar ambientes e compartilhar configurações com equipes. Também facilita a visualização de respostas em JSON formatado, execução de testes automatizados e geração de documentação.
Em contrapartida, é uma aplicação mais pesada, depende de uma boa interface gráfica e não é tão direta para uso em automações simples ou ambientes de servidor quanto o cURL.
Dessa forma, a conclusão a que se chega é: ambos cumprem a mesma função, mas oferecem experiências de uso diferentes.
Simplifique sua gestão de documentos fiscais com a Focus NFe
Somos um ecossistema de soluções para a emissão e gestão de documentos fiscais. Nossos recursos permitem que empresas dos mais diversos portes e segmentos ganhem mais tempo para focar no que importa.
Sua empresa possui desenvolvedores, sistema interno e quer otimizar a emissão de notas? Conheça nosso conjunto de APIs para emissão de documentos fiscais!
Converse já com a nossa equipe.
Perguntas frequentes sobre o comando cURL
O que é cURL em TI?
O cURL é uma ferramenta de linha de comando de código aberto usada para transferir dados via URLs, tornando possível o envio de requisições e transferência de dados diretamente pelo terminal, sem usar um navegador.
Qual sistema operacional usa cURL?
O cURL é multiplataforma, funcionando de forma virtual em todos os sistemas operacionais, incluindo Linux, macOS, Windows e outros sistemas Unix.
Como usar o cURL no Windows?
No Windows, você pode usar cURL diretamente no Prompt de Comando (cmd.exe). Ao abrir o prompt, digite e execute curl –version para verificar se está instalado. Em versões mais recentes do Windows vem como recurso nativo.
Quais protocolos o cURL suporta?
O cURL suporta uma ampla gama de protocolos de transferência de dados, incluindo :
- HTTP / HTTPS
- FTP / FTPS
- SCP / SFTP
- LDAP / LDAPS
- SMTP / SMTPS
- IMAP / IMAPS
- POP3 / POP3S
- TELNET
- DICT
- FILE
- RTMP, RTSP
- WS, WSS e outros mais.