Utilizzo di curl
e wget
per scaricare file
1. Introduzione a curl
Ti è mai capitato durante un colloquio di lavoro che ti chiedano di scaricare un file da Internet tramite il terminale, e tu fissavi lo schermo, rendendoti conto che hai dimenticato come farlo? Oggi impareremo a usare curl
e wget
, che diventeranno i tuoi fedeli compagni per lavorare con i dati di rete.
Questi strumenti ti permettono di scaricare pagine web, file, inviare richieste HTTP, lavorare con le API e persino automatizzare script. Vedremo la loro funzionalità, i vantaggi e gli scenari di utilizzo tipici.
curl
è uno strumento da riga di comando per il trasferimento di dati attraverso protocolli di rete. La sua potenza principale risiede nella sua flessibilità: supporta più di 20 protocolli (HTTP, HTTPS, FTP, SCP e persino SMTP). Secondo gli sviluppatori, è un eccellente "coltellino svizzero" per lavorare con Internet.
Sintassi di base di curl
curl [opzioni] URL
Semplicemente, inserisci il comando curl
, indica l'indirizzo desiderato — e goditi il risultato. Diamo un'occhiata a come funziona.
Scaricare una pagina web
Facciamo finta che tu voglia scaricare la homepage di Google. Ecco come fare:
curl http://www.google.com
Nello schermo vedrai il codice HTML della pagina. È abbastanza utile se vuoi analizzare la struttura di un sito o automatizzare qualcosa relativo ad esso.
Salvataggio del contenuto in un file
Se tutto questo testo in console ti disturba, puoi salvare il risultato in un file:
curl -o google.html http://www.google.com
Il flag -o
(output) dice a curl
che vogliamo reindirizzare l'output in un file. Ora il codice HTML della pagina è salvato in google.html
. Vuoi fare una risata? Dai il file a un amico e digli che hai scaricato "l'intero Internet".
Scaricare un file
Immagina di dover scaricare un file da Internet (ad esempio, un .zip
). Ecco dove curl
è fantastico:
curl -O http://example.com/file.zip
A differenza di -o
, il flag -O
salva il file con il nome originale indicato nell'URL. Questo è utile se stai scaricando molti file da una singola fonte.
Autenticazione HTTP
A volte l'accesso a un file o a una risorsa API è protetto da un login e una password. In questo caso, usa curl
con il flag -u
:
curl -u username:password http://example.com/private-data
Questo è particolarmente utile per lavorare con API private, come GitHub o Docker Registry.
Scaricare tramite API
Una delle funzionalità più cool di curl
è lavorare con le API. Supponiamo che tu debba inviare una richiesta a un server che restituisce dati in formato JSON:
curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"
Qui il flag -X
specifica il metodo della richiesta HTTP (GET, POST, DELETE, ecc.). Per l'automazione dell'integrazione con servizi esterni è davvero una trovata.
2. Cos'è wget
?
Se curl
è un coltellino svizzero, allora wget
è un bulldozer. Il suo compito principale è scaricare file. La principale differenza rispetto a curl
è che wget
è specificamente progettato per il download affidabile di file di grandi dimensioni, e supporta anche la ripresa del download, il che è super comodo in caso di connessione instabile.
La sintassi principale di wget
wget [opzioni] URL
Download semplice di un file
wget http://example.com/file.zip
Questo comando scaricherà il file e lo salverà con il nome originale nella directory corrente. Facile ed efficace.
Salvataggio con un altro nome
Se non ti piace il nome originale del file, puoi sceglierne uno tuo:
wget -O newfile.zip http://example.com/file.zip
Ripresa del download
Supponiamo che stai scaricando un file enorme, ma la connessione si interrompe. Nessun problema: usa semplicemente il flag -c
(continue):
wget -c http://example.com/largefile.iso
wget
riprenderà il download da dove si era interrotto. E questo funziona anche dopo diversi giorni, se il server supporta questa modalità.
Download di un intero sito
Sì, con wget
puoi scaricare un intero sito (o una sua copia). Usa semplicemente l'opzione --mirror
:
wget --mirror http://example.com
Questo comando scaricherà il sito preservandone la struttura delle directory. Ora hai una "copia speculare" del sito per l'uso offline.
3. Confronto tra curl
e wget
Funzione | curl | wget |
---|---|---|
Supporto di un gran numero di protocolli | Sì | Solo HTTP/HTTPS e FTP |
Ripresa automatica del download | No (ma si può scriptare) | Sì |
Lavorare con le API | Sì | No |
Semplicità di gestione dei file | Media | Eccellente |
Scaricare interi siti | No | Sì |
In generale, se ti serve lavorare con API o qualcosa di specifico, usa curl
. Se invece ti serve scaricare file, wget
sarà la scelta migliore.
4. Uso pratico
Scaricare e processare un file
Combiniamo wget
con le nostre abilità di lavoro con i testi:
wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'
Qui abbiamo scaricato un file, filtrato le righe con una parola chiave e estratto le colonne necessarie.
Lavorare con le API
Scarichiamo i tassi di cambio utilizzando curl
e troviamo la valuta desiderata:
curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"
Questo è utile se vuoi costruire un sistema automatizzato per il cambio valuta.
Automatizzare gli aggiornamenti
Immagina di dover scaricare un file aggiornato ogni giorno. Ecco un esempio di script semplice:
#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates
Salviamo lo script e lo aggiungiamo a cron
. Ora verrà eseguito automaticamente — bello, vero?
5. Errori comuni e caratteristiche particolari
Errore 403 (Forbidden):
Succede se il server richiede intestazioni aggiuntive (ad esempio, User-Agent). Si risolve così:
curl -A "Mozilla/5.0" http://example.com
Reindirizzamenti:
Se il server ti reindirizza a un altro URL, aggiungi il flag -L
in curl
:
curl -L http://example.com
Errori SSL:
A volte wget
o curl
possono lamentarsi del certificato SSL. Puoi disabilitare il controllo del certificato (ma non è sicuro!):
wget --no-check-certificate https://example.com
curl -k https://example.com
Con questo arsenale potente sei pronto a conquistare internet dal terminale. Ora nessun file o API potrà sfuggirti: è il momento di scaricare, elaborare e automatizzare!
GO TO FULL VERSION