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!
GO TO FULL VERSION