CodeGym /Cursos /Docker SELF /Usando `curl` e `wget` pra baixar arquivos

Usando `curl` e `wget` pra baixar arquivos

Docker SELF
Nível 8 , Lição 4
Disponível

Usando curl e wget pra baixar arquivos

1. Conhecendo o curl

Já passou por aquela situação numa entrevista onde te pedem pra baixar um arquivo da internet pelo terminal, e você fica parado olhando pra tela porque esqueceu como fazer isso? Hoje vamos aprender a usar curl e wget, que vão ser seus companheiros fiéis pra lidar com dados na rede.

Essas ferramentas permitem baixar páginas da web, fazer download de arquivos, enviar requisições HTTP, trabalhar com APIs e até rodar scripts de automação. Vamos entender como elas funcionam, seus benefícios e exemplos de uso.

curl é uma ferramenta de linha de comando pra transferir dados usando protocolos de rede. A maior força do curl está na sua flexibilidade: suporta mais de 20 protocolos (HTTP, HTTPS, FTP, SCP e até SMTP). Segundo os desenvolvedores, ele é como um "canivete suíço" pra trabalhar com a internet.

Sintaxe básica do curl

curl [opções] URL

Basicamente, você digita o comando curl, especifica o endereço — e pronto, curte o resultado. Bora ver como isso funciona na prática.

Baixando uma página web

Por exemplo, se você quiser baixar a página inicial do Google, é só fazer assim:

curl http://www.google.com

Na tela vai aparecer o código HTML da página. Isso é bem útil se você quiser analisar a estrutura de um site ou automatizar alguma tarefa relacionada a ele.

Salvando conteúdo em um arquivo

Se esse monte de texto na tela te atrapalha, dá pra salvar o resultado em um arquivo:

curl -o google.html http://www.google.com

A flag -o (output) diz pro curl que você quer redirecionar a saída pra um arquivo. Agora, o código HTML da página está salvo no arquivo google.html. Quer se divertir? Mostra o arquivo pra um amigo e diz que você baixou "a internet inteira".

Baixando um arquivo

Imagina que você precisa baixar um arquivo da internet (tipo um .zip). O curl faz isso de boa:

curl -O http://example.com/file.zip

Diferente da flag -o, a flag -O salva o arquivo com o nome original que está no URL. Isso é útil se você estiver baixando vários arquivos de uma mesma fonte.

Autenticação HTTP

De vez em quando, o acesso a um arquivo ou recurso de API é protegido por login e senha. Nesse caso, usa o curl com a flag -u:

curl -u username:password http://example.com/private-data

Isso é especialmente útil pra trabalhar com APIs protegidas, como a do GitHub ou do Docker Registry.

Baixando via API

Uma das funções mais legais do curl é trabalhar com APIs. Por exemplo, se você precisa enviar uma requisição pra um servidor que retorna dados em formato JSON:

curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"

A flag -X especifica o método da requisição HTTP (GET, POST, DELETE, etc.). Pra automatizar integrações com serviços externos, isso é uma mão na roda.


2. O que é wget?

Se curl é como um canivete suíço, então wget é um trator. A principal função dele é baixar arquivos. A maior diferença entre o curl e o wget é que o wget foi projetado especificamente para downloads confiáveis de arquivos grandes e suporta retomada de download, o que é muito útil em conexões ruins.

Sintaxe básica do wget

wget [opções] URL

Baixando um arquivo simples

wget http://example.com/file.zip

Este comando vai baixar o arquivo e salvá-lo com o nome original no diretório atual. Simples e eficiente.

Salvando com outro nome

Se você não gosta do nome original do arquivo, pode definir o seu próprio:

wget -O novarquivo.zip http://example.com/file.zip

Retomando downloads

Imaginem que você está baixando um arquivo enorme, mas a conexão cai. Não se preocupe, é só usar a flag -c (continue):

wget -c http://example.com/largefile.iso

O wget vai continuar o download de onde parou. E isso funciona até mesmo depois de alguns dias, se o servidor suportar este modo.

Baixando um site inteiro

Sim, com wget você pode baixar um site inteiro (ou uma cópia dele). Basta usar a opção --mirror:

wget --mirror http://example.com

Este comando vai baixar o site mantendo a estrutura de diretórios. Agora você tem um "espelho" do site para usar no modo offline.


3. Comparação entre curl e wget

Função curl wget
Suporte para vários protocolos Sim Somente HTTP/HTTPS e FTP
Reinício automático de downloads Não (pode ser scriptado) Sim
Trabalho com API Sim Não
Facilidade pra gerenciar arquivos Médio Ótima
Baixar sites inteiros Não Sim

Resumindo, se você precisar trabalhar com APIs ou algo mais específico, use o curl. Mas se o objetivo é baixar arquivos, o wget vai ser a melhor escolha.


4. Aplicação Prática

Baixar e processar um arquivo

Vamos combinar o wget com nossas habilidades de manipulação de texto:

wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'

Aqui baixamos um arquivo, filtramos linhas pelo termo-chave e extraímos as colunas necessárias.

Trabalhando com APIs

Baixamos taxas de câmbio usando curl e encontramos a moeda que precisamos:

curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"

Isso é útil se você quiser criar um sistema automatizado de troca de moedas.

Automatizando atualizações

Imagina que você precisa baixar atualizações de um arquivo todos os dias. Aqui está um exemplo de script simples:

#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates

Salvamos o script e o adicionamos ao cron. Agora ele será executado automaticamente — legal, né?


5. Erros típicos e particularidades

Erro 403 (Forbidden):

Acontece se o servidor exigir cabeçalhos adicionais (por exemplo, User-Agent). Resolva assim:

curl -A "Mozilla/5.0" http://example.com

Redirecionamentos:

Se o servidor redirecionar você para outro URL, adicione a flag -L no curl:

curl -L http://example.com

Erros de SSL:

Às vezes o wget ou o curl podem reclamar sobre SSL. Você pode desativar a verificação do certificado (mas isso não é seguro!):

wget --no-check-certificate https://example.com
curl -k https://example.com

Com esse arsenal poderoso, você está pronto pra dominar a internet direto do terminal. Agora nenhum arquivo ou API vai te escapar — bora baixar, processar e automatizar!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION