Wget è un'utilità open source da riga di comando per scaricare file e pagine Web da Internet. Ottiene i dati da Internet e li visualizza nel tuo terminale o li salva in un file. L'utilità wget non è interattiva. Puoi ottenere il massimo da esso tramite script o persino programmare download di file.
In genere, anche i browser Web come Firefox o Chromium scaricano file tranne che, per impostazione predefinita, rendono le informazioni in una finestra grafica e richiedono che un utente interagisca con essi. In alternativa, altri utenti del sistema Linux utilizzano il comando curl per trasferire i dati da un server di rete.
L'articolo illustra come utilizzare il comando wget per scaricare pagine Web e file da Internet.
Installazione di wget su Linux
Per installare wget su sistemi Linux basati su Ubuntu/Debian:
$ apt-get install wget
Per installare Wget su Red Hat/CentOS:
$ yum install wget
Per installare wget su Fedora:
$ dnf install wget
Download di un file con il comando wget
Puoi scaricare un file con wget fornendo un collegamento specifico a un URL. Se l'URL predefinito è index.html, la pagina dell'indice viene scaricata. Per impostazione predefinita, il contenuto viene scaricato in un file con lo stesso nome file nella directory di lavoro corrente. Il comando wget fornisce anche diverse opzioni per reindirizzare l'output a less o tail.
[#####@fedora ~]$ wget http://example.com | tail -n 6 --2021-11-09 12:06:02-- http://example.com/ Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 Connecting to example.com (example.com)|93.184.216.34|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1256 (1.2K) [text/html] Saving to: ‘index.html.1’ index.html.1 100%[======================>] 1.23K --.-KB/s in 0s 2021-11-09 12:06:03 (49.7 MB/s) - ‘index.html.1’ saved [1256/1256]
Invio dei dati scaricati allo standard output
Puoi usare il -output-document con un trattino – carattere per inviare i dati scaricati allo standard output.
[#######@fedora ~]$ wget http://example.com --output-document - | head -n8 --2021-11-09 12:17:11-- http://example.com/ Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 Connecting to example.com (example.com)|93.184.216.34|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1256 (1.2K) [text/html] Saving to: ‘STDOUT’ <!doctype html> 0%[ ] 0 --.-KB/s <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - 100%[======================>] 1.23K --.-KB/s in 0s 2021-11-09 12:17:12 (63.5 MB/s) - written to stdout [1256/1256]
Salvataggio dei download con un nome file diverso
È possibile utilizzare l'opzione –output-document o -O per specificare un nome di file di output diverso per il download.
$ wget http://fosslinux.com --output-document foo.html $ wget http://fosslinux.com -O foofoofoo.html
Download di una sequenza di file
Wget può scaricare diversi file se si conosce la posizione e il modello del nome file dei file. Puoi utilizzare la sintassi Bash per specificare un intervallo di numeri interi per rappresentare una sequenza di nomi di file dall'inizio alla fine.
$ wget http://fosslinux.com/filename_{1..7}.webp
Download di più pagine e file
Puoi scaricare più file con il comando wget specificando tutti gli URL contenenti i file da scaricare.
$ wget URL1 URL2 URL3
Ripresa di un download parziale
Se stai scaricando file di grandi dimensioni, potrebbero esserci delle interruzioni nel download. Wget può determinare dove si è interrotto il download prima che continui con il download parziale. È utile se stai scaricando file di grandi dimensioni come un ISO distro Fedora 35 Linux. Per continuare un download, usa l'opzione –continue o -c.
$ wget --continue https://fosslinux.com/foss-linux-distro.iso
Gestione dei download ricorsivi con il comando wget
Utilizzare l'opzione –recursive o -r per attivare i download ricorsivi con il comando wget. La modalità ricorsiva di wget esegue la scansione dell'URL di un sito fornito e segue tutti i collegamenti fino al livello di profondità massimo predefinito o specificato.
$ wget -r fosslinux.com
Per impostazione predefinita, la profondità di download ricorsiva massima è 5. Tuttavia, wget fornisce l'opzione -l per specificare la profondità di ricorsione massima.
$ wget -r -l 11 fosslinux.com
È possibile specificare la ricorsione infinita con l'opzione '-l 0'. Ad esempio, wget scaricherà tutti i file su un sito Web se imposti la profondità massima su zero (-l 0).
Conversione dei link per la visualizzazione locale
Il –convert-links è un'altra opzione essenziale di wget che converte i collegamenti per renderli adatti alla visualizzazione locale.
$ wget -r l 3 --convert-links fosslinux.com
Download di tipi di file specifici
È possibile utilizzare l'opzione -A con il comando wget per scaricare tipi di file specifici durante i download ricorsivi. Ad esempio, utilizza il seguente comando wget per scaricare file pdf da un sito Web.
$ wget -A '*.pdf -r fosslinux.com
Nota che il livello di profondità di recupero massimo ricorsivo è limitato a 5 per impostazione predefinita.
Download di file dal server FTP
Il comando wget può tornare utile quando devi scaricare file da un server FTP.
$ wget --ftp-user=username --ftp-password=password ftp://192.168.1.13/foofoo.pdf
Nell'esempio sopra, wget scaricherà "foofoo.pdf" dal server FTP situato in 192.168.1.10.
Puoi anche usare l'opzione -r ricorsiva con il protocollo FTP per scaricare file FTP in modo ricorsivo.
$ wget -r --ftp-user=username --ftp-password=pass ftp://192.168.1.13/
Impostazione della dimensione massima del download con il comando wget
È possibile impostare la dimensione massima del download durante i recuperi di file ricorsivi utilizzando l'opzione flag –quota. È possibile specificare la dimensione del download in byte (predefinito), kilobyte (suffisso k) o megabyte (suffisso m). Il processo di download verrà interrotto al superamento del limite.
$ wget -r --quota=1024m fosslinux.com
Tieni presente che le quote di download non influiscono sul download di un singolo file.
Impostazione del limite di velocità di download con il comando wget
Puoi anche utilizzare l'opzione flag wget –limit-rate per limitare la velocità di download durante il download di file. Ad esempio, il comando seguente scaricherà il file "foofoo.tar.gz" e limiterà la velocità di download a 256 KB/s.
$ wget --limit-rate=256k URL/ foofoo.tar.gz
Tieni presente che puoi esprimere la velocità di download desiderata in byte (nessun suffisso), kilobyte (usando il suffisso k) o megabyte (usando il suffisso m).
Mirroring di un sito Web con il comando wget
Puoi scaricare o eseguire il mirroring di un intero sito, inclusa la sua struttura di directory con l'opzione –mirror. Il mirroring di un sito è simile al download ricorsivo senza un livello di profondità massimo. Puoi anche utilizzare l'opzione –recursive –level inf –timestamping –no-remove-listing, il che significa che è infinitamente ricorsivo.
Puoi anche usare wget per archiviare un sito con le opzioni –no-cookies –page-requisiti –convert-links. Scaricherà pagine complete e assicurerà che la copia del sito sia autonoma e simile al sito originale.
$ wget --mirror --convert-links fosslinux.com $ wget -recursive --level inf --timestamping –no-remove-listing
Tieni presente che l'archiviazione di un sito scaricherà molti dati soprattutto se il sito Web è vecchio.
Lettura di URL da un file di testo
Il comando wget può leggere più URL da un file di testo usando l'opzione -i. Il file di testo di input può contenere più URL, ma ogni URL deve iniziare in una nuova riga.
$ wget -i URLS.txt
Espansione di un URL abbreviato
Puoi utilizzare l'opzione wget –max-redirect per guardare gli URL abbreviati prima di visitare. Gli URL abbreviati sono essenziali per la stampa o sui social network con limiti di caratteri. Inoltre, gli URL abbreviati possono anche essere sospetti perché la loro destinazione è nascosta per impostazione predefinita.
Nota:una pratica migliore consiste nel combinare l'opzione –head e –location per visualizzare le intestazioni HTTP e svelare la destinazione finale dell'URL. Ti consente di sbirciare in un URL abbreviato senza caricare l'intera risorsa.
[######@fedora ~]$ wget --max-redirect 0 https://t.co/GVr5v9554B?amp=1 --2021-11-10 16:22:08-- https://t.co/GVr5v9554B?amp=1 Resolving t.co (t.co)... 104.244.42.133, 104.244.42.69, 104.244.42.5, ... Connecting to t.co (t.co)|104.244.42.133|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://bit.ly/ [following] 0 redirections exceeded.
Nota:la destinazione prevista viene mostrata sulla riga di output che inizia con posizione.
Modifica delle intestazioni HTML
Le informazioni sull'intestazione HTTP sono una delle informazioni sui metadati incorporati nei pacchetti che i computer inviano per comunicare durante lo scambio di dati. Ad esempio, ogni volta che visiti un sito Web, il tuo browser invia le intestazioni delle richieste HTTP. Puoi usare l'opzione –debug per rivelare le informazioni di intestazione che wget invia al tuo browser per ogni richiesta.
[#####@fedora ~]$ wget --debug fosslinux.com DEBUG output created by Wget 1.21.1 on linux-gnu. ---request begin--- GET / HTTP/1.1 User-Agent: Wget/1.21.1 Accept: */* Accept-Encoding: identity Host: fosslinux.com Connection: Keep-Alive ---request end--- HTTP request sent, awaiting response... ---response begin---
Visualizzazione delle intestazioni delle risposte con il comando wget
Puoi utilizzare l'opzione –debug per visualizzare le informazioni sull'intestazione della risposta nelle risposte di ritorno.
[#####@fedora ~]$ wget --debug fosslinux.com ….. ---request end--- HTTP request sent, awaiting response... ---response begin--- HTTP/1.1 200 OK Server: nginx Date: Wed, 10 Nov 2021 13:36:29 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding X-Cache: HIT ---response end--- 200 OK
Rispondere a un codice di risposta 301
I codici di stato della risposta HTTP sono essenziali per gli amministratori web. In genere, un codice di stato della risposta HTTP 301 significa che un URL è stato spostato in modo permanente in una posizione diversa. Per impostazione predefinita, wget segue i reindirizzamenti. Tuttavia, puoi usare l'opzione –max-redirect per determinare cosa fa wget quando incontra una risposta 301. Ad esempio, puoi impostarlo su 0 per indicare a wget di non seguire reindirizzamenti.
[######@fedora ~]$ wget --max-redirect 0 https://fosslinux.com --2021-11-10 16:55:54-- https://fosslinux.com/ Resolving fosslinux.com (fosslinux.com)... 67.205.134.74, 2604:a880:400:d0::4bfe:a001 Connecting to fosslinux.com (fosslinux.com)|67.205.134.74|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://www.fosslinux.com/ [following] 0 redirections exceeded.
Salvataggio dell'output dettagliato di wget in un file di registro
Per impostazione predefinita, wget mostra un output dettagliato sul terminale Linux. Tuttavia, puoi utilizzare l'opzione -o per registrare tutti i messaggi di output in un file di registro specificato.
$ wget -o foofoo_log.txt fosslinux.com
Il comando wget sopra salverà l'output dettagliato nel file "foofoo_log.txt".
Esecuzione del comando wget come ragnatela
Puoi fare in modo che il comando wget funzioni come un ragno web usando l'opzione –spider. In sostanza, non scaricherà nessuna pagina web ma controllerà solo che ci siano. Inoltre, verranno segnalati eventuali URL non funzionanti.
$ wget -r --spider fosslinux.com
Esecuzione del comando wget in background
È possibile utilizzare l'opzione -b / –background per eseguire il processo wget in background. È essenziale se stai scaricando file di grandi dimensioni il cui completamento richiederà più tempo.
$ wget -b fosslinux.com/latest.tar.gz
Per impostazione predefinita, l'output del processo wget viene reindirizzato a "wget-log". Tuttavia, puoi specificare un file di registro diverso con l'opzione -o.
Per monitorare il processo wget, usa il comando tail.
$ tail -f wget-log
Eseguire wget in modalità debug
Quando esegui wget in modalità di debug, l'output include informazioni sul server remoto come le intestazioni delle richieste wget e le intestazioni delle risposte. Le intestazioni di richiesta e risposta sono essenziali per gli amministratori di sistema e gli sviluppatori web.
$ wget --debug fosslinux.com
Cambiare User-Agent il comando wget
È possibile modificare l'agente utente predefinito con l'opzione –user-agent. Ad esempio, puoi usare 'Mozilla/4.0' come wget User-Agent per recuperare fosslinux.com con il seguente comando.
$ wget --user-agent='Mozilla/4.0' fosslinux.com
Ulteriori informazioni su suggerimenti e trucchi di wget dalle pagine di manuale ufficiali di wget.
Conclusione
Il comando wget di Linux fornisce un modo efficiente per estrarre e scaricare dati da Internet senza utilizzare un browser. Proprio come il versatile comando curl, wget può gestire qualsiasi scenario di download complesso come download di file di grandi dimensioni, download non interattivi e download di file multipli.