CodeGym /Corsi /Docker SELF /Utilizzo di `curl` e `wget` per scaricare file

Utilizzo di `curl` e `wget` per scaricare file

Docker SELF
Livello 8 , Lezione 4
Disponibile

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 Solo HTTP/HTTPS e FTP
Ripresa automatica del download No (ma si può scriptare)
Lavorare con le API No
Semplicità di gestione dei file Media Eccellente
Scaricare interi siti No

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!

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION