Como usar cURL para transferência de dados de linha de comando e muito mais

Cum să utilizați cURL pentru transferul de date pe linia de comandă și altele
⏱️ 15 min read

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:

Em distros baseadas em Arch:

No Fedora / CentOS / RHEL:

Mac OS

Para o macOS, ele já vem pré-instalado, portanto, você não precisa fazer nada.

janelas

  1. 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.
  2. Crie uma pasta diretamente na unidade do sistema ou em “C: Arquivos de programas ” e chame-a de “cURL”.
  1. 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.
  2. 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 environmente pressione Digitar.
  • Clique em “Variáveis ​​de ambiente…” Agora você deve estar nas configurações de suas variáveis ​​de ambiente.
Variáveis ​​de ambiente Linuxcurl
  • 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”.
Linuxcurl Editvariable
  • 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.

Erro Linuxcurl

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.

Arquivos Linuxcurl

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:

Download Linuxcurl

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.

Teste Linuxcurl

Da mesma forma, você pode usar o -o sinalize para obter o mesmo resultado:

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.

Redirecionamento Linuxcurl

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.

Linuxcurl interrompido

Para o nosso próximo comando, estamos anexando o -C bandeira. Por exemplo,

Currículo Linuxcurl

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:

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.

Se você tiver uma grande quantidade de arquivos enumerados para baixar, --remote-name-all é um sinalizador melhor para isso:

Você pode até especificar arquivos não enumerados vindos do mesmo site sem ter que digitar novamente o URL usando colchetes:

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:

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:

Para os próximos 100 MB, use --range 100000000-199999999, etc. Você pode encadear esses comandos usando o && operando:

Se você seguiu a estrutura de comando acima ao pé da letra, oito arquivos devem aparecer onde você pediu ao cURL para baixá-los.

Peças Linuxcurl

Para reunir esses arquivos, você terá que usar o cat comando se você estiver no Linux ou macOS assim:

Para Windows, você terá que usar o copy comando como este:

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 digite wget [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:

Para Fedora / CentOS / RHEL:

Para sistemas baseados em Arch:

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:

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.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Você pode gostar...

Font Resize
Contrast