Se você está seguindo as instruções de instalação voltadas para o terminal para aplicativos Linux há algum tempo, provavelmente já se deparou com o curl
comando em algum ponto ou outro. cURL é uma ferramenta de linha de comando para transferir dados com URLs. Um dos usos mais simples é fazer o download de um arquivo por meio da linha de comando. No entanto, isso é enganoso, pois cURL é uma ferramenta incrivelmente poderosa que pode fazer muito mais.
O que é cURL?
Originalmente escrito por Daniel Sternberg em 1996 para obter dados financeiros de servidores da web e transmiti-los aos canais de IRC, o cURL evoluiu para se tornar uma ferramenta poderosa para obter dados sem ter que usar um navegador. Se você está sempre usando o terminal, esta será uma das ferramentas mais importantes do seu arsenal.
Na maioria das distribuições do Linux, cURL está pré-instalado no sistema e você pode usá-lo imediatamente. Mesmo que não esteja instalado, ele também é encontrado na maioria dos repositórios, portanto, você pode instalá-lo facilmente usando o Software Center.
Para Windows, ele não possui um comando “curl-like” e o macOS tem o cURL pré-instalado, mas não oferece tantas bandeiras como a versão Linux.
Instalação
Antes de prosseguirmos, temos que nos certificar de que cURL já está instalado em nosso sistema.
Linux
Em distros baseadas em Debian / Ubuntu, use o seguinte comando para instalar cURL:
sudo apt install curl
Em distros baseadas em Arch:
sudo pacman -S curl
No Fedora / CentOS / RHEL:
sudo dnf install curl
Mac OS
Para o macOS, ele já vem pré-instalado, portanto, você não precisa fazer nada.
janelas
- Para Windows 7/10/11, vá para o página de download cURL e escolha entre os pacotes de 64 ou 32 bits, de acordo com a arquitetura que você está executando. Se você não conhece sua arquitetura, 64 bits é uma aposta segura, já que a grande maioria do hardware feito depois de 2006 está nele.
- Crie uma pasta diretamente na unidade do sistema ou em “C: Arquivos de programas ” e chame-a de “cURL”.
- Volte para o arquivo zip que você baixou, abra-o e encontre “curl.exe” dentro da pasta “bin”. Copie-o para a pasta cURL que você criou. O EXE que você copiou é totalmente independente e capaz de executar todas as permutações que você pode executar no Linux.
- Para tornar este comando realmente útil, temos que adicioná-lo à variável PATH no Windows para que ele possa ser executado a partir do prompt de comando em qualquer lugar.
- Clique no menu Iniciar, digite
environment
e pressione Digitar. - Clique em “Variáveis de ambiente…” Agora você deve estar nas configurações de suas variáveis de ambiente.

- Selecione a variável de ambiente “Caminho” e clique em “Editar…“
- Uma vez na janela de diálogo de edição de caminho, clique em “Novo” e digite o diretório onde seu “curl.exe” está localizado – por exemplo, “C: Arquivos de Programas cURL”.

- Clique em “OK” nas janelas de diálogo que você abriu por meio deste processo e aproveite o cURL em seu terminal!
Cada sinalizador em cURL que pode ser usado no Linux deve funcionar na versão Windows.
Palavra para o sábio: lembre-se de que o prompt de comando nunca deve ser confundido com o Terminal do Windows. O Terminal do Windows vem com sua própria versão de cURL incluída no PowerShell que oferece funcionalidade semelhante, mas funciona de maneira totalmente diferente.
Usando cURL
Para começar, basta digitar curl maketecheasier.com
em seu terminal e pressione Digitar.
Se você não está obtendo nenhuma saída, é porque o servidor deste site não está configurado para responder a solicitações de conexão aleatórias para seu domínio não www. Se você pesquisar um servidor que não existe ou não está online, receberá uma mensagem de erro dizendo que o cURL não conseguiu resolver o host.

Para fazer com que cURL faça algo realmente útil, teremos que especificar um protocolo. Em nosso exemplo, estamos usando o protocolo HTTPS para consultar a página inicial deste site. Modelo curl https://www.maketecheasier.com
.

Se tudo correr bem, você deve estar olhando para uma gigantesca parede de dados. Para tornar esses dados um pouco mais utilizáveis, podemos dizer ao cURL para colocá-los em um arquivo HTML:
curl https://www.maketecheasier.com > ~/Downloads/mte.html

Este comando coloca o conteúdo da saída do nosso site em um arquivo HTML na pasta Downloads. Navegue até a pasta com seu gerenciador de arquivos favorito e clique duas vezes no arquivo que você acabou de criar. Deve abrir um instantâneo da saída HTML da página inicial deste site.

Da mesma forma, você pode usar o -o
sinalize para obter o mesmo resultado:
curl -o ~/Downloads/mte.html https://www.maketecheasier.com
Seguindo Redirecionamentos
A maioria dos sites redireciona automaticamente o tráfego do protocolo “http” para o “https”. No cURL, você pode conseguir a mesma coisa com o -L
bandeira. Isso seguirá automaticamente os redirecionamentos 301 até atingir uma página ou arquivo legível.
curl -L http://google.com.

Retomando um download
Ao baixar arquivos grandes, dependendo da velocidade da sua Internet, as interrupções podem ser extremamente irritantes. Felizmente, cURL tem uma função de currículo. Passando no -C
flag cuidará desse problema em um instante.
Para mostrar um exemplo do mundo real, interrompi o download do ISO de lançamento de teste do Debian propositalmente pressionando Ctrl e C no meio de agarrá-lo.

Para o nosso próximo comando, estamos anexando o -C
bandeira. Por exemplo,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso

O download começou com sucesso de onde parou.
Baixando mais de um arquivo
Como cURL não tem a maneira mais intuitiva de baixar vários arquivos, existem dois métodos, cada um com seu próprio compromisso.
Se os arquivos que você está baixando forem enumerados (por exemplo, arquivo1, arquivo2 e assim por diante), você pode usar colchetes para obter a gama completa de arquivos e “#” dentro da saída que você especificar com o -o
bandeira. Para tornar isso um pouco menos confuso, aqui está um exemplo:
curl "http://example.com/file[1-5].zip" -o "#1_#2"
Uma maneira mais simples de fazer isso é com -O
(--remote-name
) Este sinalizador faz com que o cURL baixe o arquivo remoto em um arquivo local com o mesmo nome. Já que você não tem que especificar uma saída, você deve usar este comando quando o terminal estiver aberto no diretório que você deseja baixar os arquivos.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"
Se você tiver uma grande quantidade de arquivos enumerados para baixar, --remote-name-all
é um sinalizador melhor para isso:
curl --remote-name-all "https://example.com/file[1-5].zip"
Você pode até especificar arquivos não enumerados vindos do mesmo site sem ter que digitar novamente o URL usando colchetes:
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"
Baixando com autenticação
Baixe arquivos que requerem autenticação (por exemplo, ao obter de um servidor FTP privado) com o -u
bandeira. Cada solicitação de autenticação deve ser feita com o nome de usuário primeiro e a senha depois, com dois pontos separando os dois. Aqui está um exemplo para tornar as coisas simples:
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip
Isso autenticará nosso amigo bonobo_bob no servidor FTP e fará o download do arquivo na pasta Downloads.
Dividindo e mesclando arquivos
Se por algum motivo você deseja baixar um arquivo grande e dividi-lo em partes, você pode fazer isso com cURL’s --range
bandeira. Com --range
, você deve especificar o byte no qual deseja iniciar até aquele em que deseja terminar. Se você não especificar um fim para o intervalo, ele apenas fará o download do restante do arquivo.
No comando abaixo, cURL fará o download dos primeiros 100 MB da imagem de instalação do Arch Linux:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
Para os próximos 100 MB, use --range 100000000-199999999
, etc. Você pode encadear esses comandos usando o &&
operando:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
Se você seguiu a estrutura de comando acima ao pé da letra, oito arquivos devem aparecer onde você pediu ao cURL para baixá-los.

Para reunir esses arquivos, você terá que usar o cat
comando se você estiver no Linux ou macOS assim:
cat arch.part? > arch.iso
Para Windows, você terá que usar o copy
comando como este:
copy /b arch.part* arch.iso
Outros recursos úteis
Existem muitos sinalizadores e usos para cURL:
-#
– Usa uma barra de progresso para indicar o quão longe você está no que você está agarrando. Exemplo:curl -# https://asite.com/somefile.zip > ~/somefile.zip
.-a
– Solicita a cURL para anexar a um arquivo em vez de sobrescrevê-lo. Exemplo:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x
.--head
– Captura apenas o cabeçalho de resposta do servidor sem os dados de saída. Isso é útil quando você está depurando um site da Web ou dando uma olhada nas respostas programadas do servidor aos clientes. Exemplo:curl --head https://example-url.com
.--limit-rate
– Solicita um download com largura de banda limitada. É útil em situações em que você não quer que o cURL monopolize toda a largura de banda disponível em seu sistema. Um número simples será interpretado como bytes por segundo. K representa kilobytes por segundo; M representa megabytes por segundo. Exemplo:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip
.-o
– Conforme mencionado anteriormente, determina um arquivo de saída para cURL usar. Exemplo:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip
.--proxy
– Se quiser trabalhar com proxy, esta é a forma de o fazer. Exemplo:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip
.
cURL vs. Wget
Ambos lançados no mesmo ano (1996), cURL e Wget são praticamente programas irmãos do observador casual. Mergulhe um pouco mais fundo, no entanto, e você verá que essas duas irmãs têm propósitos diferentes.
Wget
- É totalmente construído do zero para obter dados da Internet.
- Não precisa do
-L
ou-o
sinalizadores como cURL; apenas digitewget [url]
e ir! - Pode baixar recursivamente para pegar tudo em um diretório com o
-r
bandeira. - Tem todas as funções de que um usuário precisa para uso diário e atende às tarefas diárias de administrador de sistemas.
- (No Linux) Não precisa de muitas dependências; todos eles devem estar disponíveis fora da caixa.
ondulação
- Repertório extenso de sinalizadores e funções úteis para recuperação remota.
- Suporta rede local (LDAP) e impressoras de rede (Samba).
- Funciona bem com bibliotecas de compactação gzip.
- Depende do libcurl, que permite aos desenvolvedores escrever software ou scripts bash que incluem a funcionalidade do cURL.
Resumindo, o Wget é a “caixa de ferramentas de todo mundo” para obter coisas da Internet, enquanto o cURL expande isso com um controle mais granulado para usuários avançados e administradores de sistema.
perguntas frequentes
1. Recebi um erro de certificado no Linux. Como faço para corrigir isso?
Se você receber um erro que diz algo como “o emissor do certificado do par foi marcado como não confiável”, a maneira mais fácil de corrigir isso é reinstalar o pacote de certificados comuns em sua distro.
Para sistemas baseados em Debian / Ubuntu:
sudo apt reinstall ca-certificates
Para Fedora / CentOS / RHEL:
dnf reinstall ca-certificates
Para sistemas baseados em Arch:
pacman -S ca-certificates
Note que no Arch você pode querer limpar o cache do seu pacote usando pacman -Scc
antes de reinstalar o pacote de certificados.
Se você ainda receber esse erro, pode haver algo errado no servidor.
2. É seguro executar os comandos cURL e bash juntos?
Embora não seja a maneira mais comum de instalar aplicativos Linux, há uma série de desenvolvedores (como as pessoas por trás do NodeJS) que não oferecem escolha a não ser usar curl
ao lado de um comando de acesso root que é executado por meio do bash (por exemplo, curl [argument] | sudo -E bash -
) para instalar o software.
Pode parecer um pouco assustador, mas se as pessoas por trás do aplicativo forem confiáveis, é muito improvável que você quebre algo. Atores mal-intencionados estão em toda parte e podem se infiltrar em repositórios como o AUR do Arch, instalando usando curl
em combinação com comandos de acesso root geralmente não é mais inseguro do que fazê-lo por meio de seu gerenciador de pacotes.
3. Posso usar cURL com Tor?
Sim! Inicie o navegador Tor (ou um serviço independente) e use o --proxy
bandeira. O Tor fornece um proxy local que você pode usar para mascarar seu IP em outros aplicativos. Aqui está um exemplo de cURL usado com Tor:
curl --proxy localhost:9050 http://example.com
Os serviços independentes do Tor usarão 9050 como porta de escuta, enquanto o navegador Tor usa a porta 9150.
Empacotando
cURL provou ser resiliente em meio às mudanças na estrutura do mundo Linux, mantendo sua posição como uma ferramenta importante no arsenal do usuário de terminal.
Se você é novo na linha de comando, verifique alguns dos comandos Linux mais úteis. Se você simplesmente deseja pesquisar na Web em vez de baixar dados da Internet, também pode navegar no terminal.