Wget è un'utilità gratuita per scaricare file dal web. Ottiene i dati da Internet e li salva in un file o li visualizza nel tuo terminale. Questo è letteralmente anche ciò che fanno i browser Web, come Firefox o Chromium, eccetto per impostazione predefinita, essi rendering le informazioni in una finestra grafica e di solito richiedono che un utente le controlli attivamente. Il wget
l'utilità è progettata per essere non interattiva, il che significa che puoi scrivere o pianificare wget
per scaricare file indipendentemente dal fatto che tu sia al computer o meno.
Scarica un file con wget
Puoi scaricare un file con wget
fornendo un collegamento a un URL specifico. Se fornisci un URL che per impostazione predefinita è index.html
, quindi la pagina dell'indice viene scaricata. Per impostazione predefinita, il file viene scaricato in un file con lo stesso nome nella directory di lavoro corrente.
$ wget http://example.com
--2021-09-20 17:23:47-- http://example.com/
Resolving example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to 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'
Puoi creare wget
invia i dati allo standard out (stdout
) utilizzando invece il --output-document
con un trattino -
carattere:
$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
<title>Example Domain</title>
Puoi usare il --output-document
opzione (-O
in breve) per nominare il tuo download come vuoi:
$ wget http://example.com --output-document foo.html
Continua un download parziale
Se stai scaricando un file molto grande, potresti dover interrompere il download. Con il --continue
(-c
in breve), wget
può determinare dove si è interrotto il download e continuare il trasferimento del file. Ciò significa che la prossima volta che scarichi una ISO di distribuzione Linux da 4 GB non dovrai mai tornare all'inizio quando qualcosa va storto.
$ wget --continue https://example.com/linux-distro.iso
Scarica una sequenza di file
Se non è un file grande ma diversi file che devi scaricare, wget
può aiutarti in questo. Supponendo che tu conosca la posizione e il modello di nome file dei file che desideri scaricare, puoi utilizzare la sintassi Bash per specificare i punti di inizio e fine tra un intervallo di numeri interi per rappresentare una sequenza di nomi di file:
$ wget http://example.com/file_{1..4}.webp
Rispecchia un intero sito
Puoi scaricare un intero sito, inclusa la sua struttura di directory, usando il --mirror
opzione. Questa opzione è la stessa dell'esecuzione di --recursive --level inf --timestamping --no-remove-listing
, il che significa che è infinitamente ricorsivo, quindi ottieni tutto sul dominio specificato. A seconda dell'età del sito web, ciò potrebbe significare che stai ricevendo molti più contenuti di quanto pensi.
Se stai usando wget
per archiviare un sito, quindi le opzioni --no-cookies --page-requisites --convert-links
sono utili anche per garantire che ogni pagina sia fresca, completa e che la copia del sito sia più o meno autonoma.
Modifica le intestazioni HTML
I protocolli utilizzati per lo scambio di dati hanno molti metadati incorporati nei pacchetti che i computer inviano per comunicare. Le intestazioni HTTP sono componenti della parte iniziale dei dati. Quando navighi in un sito Web, il tuo browser invia le intestazioni delle richieste HTTP. Usa il --debug
opzione per vedere quali informazioni sull'intestazione wget
invia ad ogni richiesta:
$ wget --debug example.com
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: example.com
Connection: Keep-Alive
---request end---
Puoi modificare l'intestazione della tua richiesta con --header
opzione. Ad esempio, a volte è utile imitare un browser specifico, sia per testare che per tenere conto di siti codificati male che funzionano correttamente solo per programmi utente specifici.
Per identificare come Microsoft Edge in esecuzione su Windows:
$ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://example.com
Puoi anche mascherarti come un dispositivo mobile specifico:
$ wget --debug \
--header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" \
http://example.com
Visualizzazione delle intestazioni delle risposte
Allo stesso modo in cui le informazioni sull'intestazione vengono inviate con le richieste del browser, anche le informazioni sull'intestazione vengono incluse nelle risposte. Puoi vedere le intestazioni delle risposte con --debug
opzione:
$ wget --debug example.com
[...]
---response begin---
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 188102
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Etag: "3147526947"
Server: ECS (sab/574F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
---response end---
200 OK
Registered socket 3 for persistent reuse.
URI content encoding = 'UTF-8'
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'
Rispondere a una risposta 301
Un codice di risposta 200 significa che tutto ha funzionato come previsto. Una risposta 301, d'altra parte, significa che un URL è stato spostato in modo permanente in una posizione diversa. È un modo comune per l'amministratore di un sito Web di trasferire il contenuto lasciando una "traccia" in modo che le persone che visitano la vecchia posizione possano ancora trovarlo. Per impostazione predefinita, wget
segue i reindirizzamenti, ed è probabilmente ciò che normalmente vuoi che faccia.
Tuttavia, puoi controllare cosa wget
fa quando incontra una risposta 301 con il --max-redirect
opzione. Puoi impostarlo su 0
da seguire nessun reindirizzamento:
$ wget --max-redirect 0 http://iana.org
--2021-09-21 11:01:35-- http://iana.org/
Resolving iana.org... 192.0.43.8, 2001:500:88:200::8
Connecting to iana.org|192.0.43.8|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.iana.org/ [following]
0 redirections exceeded.
In alternativa, puoi impostarlo su un altro numero per controllare quanti reindirizzamenti wget
segue.
Espandi un URL abbreviato
Il --max-redirect
l'opzione è utile per guardare gli URL abbreviati prima di visitarli effettivamente. Gli URL abbreviati possono essere utili per la carta stampata, in cui gli utenti non possono semplicemente copiare e incollare un URL lungo, o sui social network con limiti di caratteri (questo non è un grosso problema su un social network moderno e open source come Mastodon ). Tuttavia, possono anche essere un po' pericolosi perché la loro destinazione è, per natura, nascosta. Combinando il --head
opzione per visualizzare solo le intestazioni HTTP e il --location
opzione per svelare la destinazione finale di un URL, puoi sbirciare in un URL abbreviato senza caricare l'intera risorsa:
$ wget --max-redirect 0 "https://bit.ly/2yDyS4T"
--2021-09-21 11:32:04-- https://bit.ly/2yDyS4T
Resolving bit.ly... 67.199.248.10, 67.199.248.11
Connecting to bit.ly|67.199.248.10|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://example.com/ [following]
0 redirections exceeded.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
La penultima riga di output, che inizia con Posizione , rivela la destinazione prevista.
Usa wget
Una volta che ti eserciti a pensare al processo di esplorazione del Web come un unico comando, wget
diventa un modo rapido ed efficiente per estrarre le informazioni di cui hai bisogno da Internet senza preoccuparti di un'interfaccia grafica. Per aiutarti a integrarlo nel tuo solito flusso di lavoro, abbiamo creato un cheat sheet con il comune wget
usi e sintassi, inclusa una panoramica del suo utilizzo per interrogare un'API. Scarica il wget
di Linux cheat sheet qui.