GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come caricare file e pagine web con Wget . fuori uso

È possibile utilizzare il comando wget per scaricare file utilizzando i protocolli HTTP, HTTPS e FTP. È un potente strumento che ti consente di scaricare file in background, navigare in siti Web e riprendere i download interrotti. Wget offre anche una serie di opzioni che ti consentono di scaricare file in condizioni di rete estremamente scarse.

Questo articolo mostra come utilizzare wget per eseguire attività di download comuni dalla riga di comando.

Installa wget

Linux

La maggior parte delle distribuzioni Linux ha wget installato per impostazione predefinita. Per verificare se è installato o meno sul tuo sistema, digita wget sul tuo terminale e premi Invio. Se non è installato, riceverai un errore "comando non trovato". Utilizza i comandi appropriati di seguito per installarlo sul tuo sistema.

Per i sistemi basati su Ubuntu/Debian utilizzare:

sudo apt update
sudo apt install wget

Per i sistemi CentOS/RHEL utilizzare:

sudo yum install wget

MacOS

wget è disponibile come pacchetto homebrew, quindi vai alla pagina homebrew e segui le istruzioni per installarlo. Dopodiché puoi installare wget con:

brew install wget

finestra

wget fa parte di msys2, un progetto che mira a fornire una serie di strumenti da riga di comando simili a Unix. Vai alla home page di msys2 e segui le istruzioni nella pagina per installarlo. Quindi apri una finestra msys2 e digita:

pacman -S wget

Ora puoi accedere al comando wget dalla shell MSYS2.

Scarica un file con il suo URL

Se hai il link per un file specifico, puoi usare wget per scaricarlo semplicemente fornendo l'URL come parametro:

wget https://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso

L'esecuzione del comando precedente mostrerà informazioni sullo stato di avanzamento come:B. la velocità di download attuale e la quantità di file scaricata:

wget ricava un nome file dall'ultima parte dell'URL e lo scarica nella directory corrente. Nel nostro esempio, il file viene salvato in ubuntu-18.04-desktop-amd64.iso .

Se sono presenti più file, puoi specificarli uno per uno:

wget <url_1> <url_2>

Nota che wget funziona solo se il file è direttamente accessibile dall'URL. Occasionalmente ti imbatterai in file che non puoi scaricare direttamente con un link, ad es. B. un file a cui è possibile accedere dopo aver effettuato l'accesso all'articolo.



Scarica file tramite FTP

Wget funziona allo stesso modo per FTP:fornisci l'URL FTP come argomento, in questo modo:

wget ftp://ftp.example.com/ubuntu/ubuntu-18.04-desktop-amd64.iso

A volte un file FTP può essere protetto con un nome utente e una password. Puoi passarli a wget in questo modo:

wget --ftp-user=booleanworld --ftp-password=passw0rd <ftp_url>

Personalizza il nome del file di output e la directory

Come abbiamo già visto, wget ricava i nomi dei file e li scarica nella directory corrente. Se vuoi salvare il file in una directory diversa o con un nome diverso, puoi utilizzare il -O Interruttore. Ad esempio, se vuoi salvare il download in un file Ubuntu.iso , Esegui:

wget <url> -O Ubuntu.iso

Puoi anche cambiare la directory in questo modo. Ad esempio, per salvare il download come file Ubuntu.iso sotto /media/sdb1/Software , Esegui:

wget <url> -O /media/sdb1/Software/Ubuntu.iso

A volte potresti voler specificare una directory ma lasciare che wget determini il nome del file. Puoi farlo usando il -P Interruttore. Se hai un file con /media/sdb1/Software directory, utilizzare:

wget <url> -P /media/sdb1/Software

Riprendi i download interrotti

Un download può essere interrotto a causa di cattive condizioni di rete o perché l'hai interrotto manualmente premendo Ctrl+C mentre wget stava ancora scaricando un file. Puoi riprendere un download interrotto con -c di wget Cambia:

wget -c <url>

Se hai scaricato in una directory o un file personalizzato, dovresti usare il -c e il -P /-O interruttore, in questo modo:

wget -c <url> -O <path_to_downloaded_file>

Se usi -O e -c , assicurati di fornire l'URL corretto. Altrimenti otterrai una combinazione parziale di due file diversi che li rende inutilizzabili. Inoltre, alcuni server non consentono la ripresa dei download di file. (Puoi sapere se un server supporta la ripresa guardando la barra di avanzamento. Se la barra di avanzamento si sposta avanti e indietro anziché da sinistra a destra durante il download iniziale, il server non consente la ripresa.) Il file verrà scaricato nuovamente da l'inizio.

Limitazione della velocità di download

Se stai scaricando un file di grandi dimensioni, potresti voler controllare la velocità di download in modo da avere una larghezza di banda aggiuntiva per navigare sul Web. Puoi farlo con il --limit-rate Interruttore. Ad esempio, per limitare la velocità di download a 512 KB/s, utilizzare:

wget <url> --limit-rate=512k

Puoi anche usare il m Suffisso per un limite in MB/s.

Scarica file in background

Per impostazione predefinita, wget scarica i file in primo piano, il che potrebbe non essere appropriato in ogni situazione. Ad esempio, potresti voler scaricare un file sul tuo server tramite SSH. Tuttavia, non si desidera mantenere aperta una connessione SSH e attendere il download del file. Per scaricare i file in background, puoi utilizzare il -b Opzioni come questa:

wget -b <url>

Quando esegui questo comando, wget ti dirà dove salvare un registro di download. Questo file è solitamente chiamato wget-log , wget-log.1 o simili:

Se in seguito desideri monitorare lo stato del download, puoi farlo con:

tail -f wget-log

Questo ti mostrerà le ultime righe di Download Status:



Puoi premere Ctrl+C in qualsiasi momento per interrompere la visualizzazione dell'avanzamento. Tuttavia, l'avanzamento del download continuerà come al solito in background.

Download di file su cattive connessioni di rete

Se disponi di una connessione Internet irregolare, i download possono spesso non riuscire o essere molto lenti. Per impostazione predefinita, wget tenterà un download fino a 20 volte in caso di problemi. Tuttavia, in caso di connessioni Internet particolarmente scarse, ciò potrebbe non essere sufficiente. Se riscontri velocità di download lente con errori frequenti, puoi eseguire:

wget -t inf --waitretry=3 --timeout=10 --retry-connrefused <url>

Per prima cosa abbiamo il numero di tentativi (il -t passa a inf . Se wget ha problemi a scaricare il file, proverà un numero qualsiasi di volte a completare il download. Quindi abbiamo usato --waitretry per impostare il ritardo tra ogni tentativo di nuovo su 3 secondi.

Quindi impostiamo il timeout di rete su 10 secondi con il --timeout Interruttore. Se wget non riceve alcuna risposta dal server per più di 10 secondi, presume che la connessione sia inattiva. Questo aiuta a riemettere le richieste di rete per ottenere il file.

Infine abbiamo il --retry-connrefused Interruttore. Di solito l'errore di connessione rifiutata si verifica quando il server non è in esecuzione. Tuttavia, può verificarsi anche con connessioni di rete inaffidabili e questa opzione indica a wget di riprovare il download se riscontra un errore di rifiuto della connessione.

Scarica i file in modo ricorsivo

Finora abbiamo visto come scaricare file specifici usando wget. A volte ha più senso scaricare parti correlate di un sito web. Wget ha una funzione di "download ricorsivo" per questo scopo. In questa modalità, wget scarica il file sorgente, lo salva e cerca i collegamenti. Quindi scarica ciascuno di quei collegamenti, salva quei file ed estrae i collegamenti da essi. Per impostazione predefinita, questo processo continua fino a cinque volte. Tuttavia, puoi aumentare o diminuire questo limite (denominato "profondità di ricorsione") secondo necessità.

Ad esempio, per scaricare ricorsivamente le pagine di Wikipedia in inglese, utilizzare:

wget -r https://en.wikipedia.org/

Questi file sono archiviati in una directory denominata per il sito. Nel nostro caso, il contenuto sarebbe in una directory chiamata . en.wikipedia.org salvato .

Per controllare la "profondità di ricorsione" usa il -l Bandiera. Se vuoi impostare un valore personalizzato come 7, usa:

wget -r -l 7 https://en.wikipedia.org/

Puoi anche usare inf invece di un numero. Ciò consente a wget di recuperare tutto il contenuto di un sito Web con una profondità di ricorsione infinita.

Per impostazione predefinita, wget scarica tutti i file trovati in modalità ricorsiva. Se sei interessato solo a determinati tipi di file, puoi farlo con il -A (accettare) opzioni. Ad esempio, se desideri scaricare immagini PNG e JPEG da Wikipedia, utilizza:

wget -r https://en.wikipedia.org/ -A png,jpg,jpeg

Questo scaricherà tutti i file da Wikipedia (fino a 5 livelli) ma rimuoverà tutti i file che non terminano con le estensioni png , jpg o jpeg . Puoi anche usare il -R Interruttore. Ad esempio, per salvare tutti i file di Wikipedia eccetto i documenti PDF, utilizzare:

wget -r https://en.wikipedia.org/ -R pdf

Convertire i collegamenti nei file scaricati

Quando si scaricano file in modo ricorsivo, wget scarica i file e li salva invariati. Le pagine Web scaricate conterranno ancora collegamenti che puntano al sito Web, il che significa che non è possibile utilizzare questa copia per l'utilizzo offline. Fortunatamente, wget ha una funzione di conversione dei link:converte i link su una pagina web in link locali. Per utilizzare questa funzione, usa il -k cambia in questo modo:

wget -k -r https://en.wikipedia.org/

Imposta intestazioni e stringhe user agent

I client HTTP (come browser e strumenti come wget) inviano una "stringa user-agent" come parte delle intestazioni HTTP che identificano il client. Molti webmaster bloccano wget configurando il loro server per bloccare le richieste contenenti "wget" in questa stringa. Per ovviare a questo problema, puoi sovrascrivere la stringa dell'agente utente di wget con una personalizzata; come quello utilizzato dal tuo browser. Per scoprire lo user agent del tuo browser, visita un sito come echo.opera.com. Copia lo user agent dalla pagina ed esegui wget con il -U Cambia:

wget <url> -U "<user-agent-string>"

Ad esempio, se stai utilizzando un Mac, il comando è simile al seguente:

wget <url> -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"

Se sei uno sviluppatore che sta testando la funzionalità del tuo sito web, potresti dover dire a wget di passare diverse intestazioni HTTP. Puoi farlo con il --header Interruttore. Ad esempio, per inviare il X-Foo Intestazione con valore 123, esegui il seguente comando:

wget <url> --header "X-Foo: 123"

Se desideri impostare più intestazioni personalizzate, puoi utilizzare il --header cambia ogni volta che è necessario.

Scarica file protetti

Finora negli esempi abbiamo esaminato il download di file disponibili pubblicamente. Tuttavia, a volte è necessario scaricare file da un sito protetto dall'accesso. In queste situazioni, puoi utilizzare un'estensione del browser come CurlWget (Chrome) o collect (Firefox). Quando si tenta di scaricare un file, queste estensioni generano un comando wget completo che è possibile utilizzare per scaricare il file. In questo articolo parleremo solo di CurlWget, sebbene cliget funzioni in modo simile.

Dopo aver installato CurlWget in Chrome, vai alle impostazioni dell'estensione e cambia l'opzione dello strumento da "curl" a "wget". Quindi vai alle impostazioni di download (menu a tre punti> Impostazioni> Avanzate) e seleziona l'opzione "Chiedi dove salvare ogni file prima del download".

Quindi, prova a scaricare un file da Chrome. Chiudi la finestra di dialogo che richiede il percorso di download e fai clic sull'icona CurlWget nella barra degli strumenti. Questo ti darà un comando wget con user-agent, cookie e altre intestazioni impostate come mostrato di seguito:

Ora puoi copiare e incollare questo comando in una finestra di terminale per scaricare il file. Ciò è estremamente utile in situazioni in cui è necessario scaricare un file protetto dall'accesso su un server headless.

Ottieni la modalità "Ragno"

Wget ha una funzione "web spider" che recupera le pagine ma non le salva. Questo è utile quando è necessario verificare la presenza di collegamenti interrotti su un sito Web. Per utilizzare correttamente questa opzione, devi anche abilitare il "download ricorsivo", che consente a wget di scansionare il documento e cercare i link di navigazione.

Se vuoi scansionare https://example.com/ , Esegui:

wget --spider -r https://example.com/

Dopo che wget ha recuperato tutti i collegamenti, visualizzerà tutti i collegamenti interrotti come mostrato:

Puoi anche salvare questo log in un file con -o Possibilità:

wget --spider -r https://example.com -o wget.log

Successivamente, puoi utilizzare grep per cercare nel registro codici o file di stato specifici. Ad esempio, per trovare reindirizzamenti 301 sul tuo sito web, puoi utilizzare:

grep -B 301 wget.log


Cent OS
  1. CentOS / RHEL 6,7 :Come recuperare un'installazione del pacchetto yum interrotta

  2. CLIENT OPENVPN Per Windows e Linux

  3. Centos:utilizzare Awesome Window Manager su Centos 7?

  4. Utilizzo di Ansible per installare e inizializzare Mysql 8 su Rocky Linux/Centos 8

  5. Come installare e utilizzare il comando Curl su CentOS 8

Funzioni Bash

Come scoprire se un pacchetto è installato o meno in Linux e Unix

Come installare Subsonic Media Server su Ubuntu 16.04

Come installare MariaDB su Debian 11

Come aggiungere agenti burattini a Foreman

Come installare Skype su Ubuntu 18.04 / Ubuntu 17.10 / Ubuntu 16.04