Wget je nástroj s otevřeným zdrojovým kódem příkazového řádku pro stahování souborů a webových stránek z internetu. Získává data z internetu a zobrazuje je ve vašem terminálu nebo je ukládá do souboru. Nástroj wget je neinteraktivní. Můžete z toho vytěžit maximum prostřednictvím skriptů nebo dokonce naplánovat stahování souborů.
Webové prohlížeče, jako je Firefox nebo Chromium, obvykle také stahují soubory, ale ve výchozím nastavení vykreslují informace v grafickém okně a vyžadují, aby s nimi uživatel interagoval. Případně jiní uživatelé systému Linux používají k přenosu dat ze síťového serveru příkaz curl.
Tento článek ukazuje, jak používat příkaz wget ke stažení webových stránek a souborů z internetu.
Instalace wget na Linuxu
Chcete-li nainstalovat wget na systémy Linux založené na Ubuntu/Debianu:
$ apt-get install wget
Chcete-li nainstalovat Wget na Red Hat/CentOS:
$ yum install wget
Chcete-li nainstalovat wget na Fedoru:
$ dnf install wget
Stažení souboru pomocí příkazu wget
Soubor s wget si můžete stáhnout zadáním konkrétního odkazu na URL. Pokud je výchozí adresa URL index.html, stáhne se stránka indexu. Ve výchozím nastavení se obsah stáhne do souboru se stejným názvem souboru ve vašem aktuálním pracovním adresáři. Příkaz wget také poskytuje několik možností, jak výstup nasměrovat na méně nebo ocas.
[#####@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]
Odesílání stažených dat na standardní výstup
K odeslání stažených dat na standardní výstup můžete použít -output-document s pomlčkou –.
[#######@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]
Ukládání stažených souborů s jiným názvem souboru
Můžete použít volbu –output-document nebo -O k zadání jiného názvu výstupního souboru pro vaše stahování.
$ wget http://fosslinux.com --output-document foo.html $ wget http://fosslinux.com -O foofoofoo.html
Stahování sekvence souborů
Wget může stáhnout několik souborů, pokud znáte umístění a vzor názvu souborů. Syntaxi Bash můžete použít k určení rozsahu celých čísel, která reprezentují sekvenci názvů souborů od začátku do konce.
$ wget http://fosslinux.com/filename_{1..7}.webp
Stahování více stránek a souborů
Pomocí příkazu wget můžete stáhnout více souborů zadáním všech adres URL obsahujících soubory ke stažení.
$ wget URL1 URL2 URL3
Obnovení částečného stahování
Pokud stahujete velké soubory, může dojít k přerušení stahování. Wget dokáže určit, kde se stahování zastavilo, než bude pokračovat v částečném stahování. Je to užitečné, pokud stahujete velké soubory, jako je distro Fedora 35 Linux ISO. Chcete-li pokračovat ve stahování, použijte volbu –continue nebo -c.
$ wget --continue https://fosslinux.com/foss-linux-distro.iso
Správa rekurzivního stahování pomocí příkazu wget
Použijte volbu –recursive nebo -r k zapnutí rekurzivního stahování pomocí příkazu wget. Rekurzivní režim wget prochází zadanou URL webu a sleduje všechny odkazy až do výchozí nebo zadané maximální úrovně hloubky.
$ wget -r fosslinux.com
Ve výchozím nastavení je maximální hloubka rekurzivního stahování 5. Nicméně wget poskytuje volbu -l pro zadání maximální hloubky rekurze.
$ wget -r -l 11 fosslinux.com
Nekonečnou rekurzi můžete zadat pomocí volby ‚-l 0‘. Například wget stáhne všechny soubory na webu, pokud nastavíte maximální hloubku na nulu (-l 0).
Převod odkazů pro místní prohlížení
–convert-links je další základní možností wget, která převádí odkazy tak, aby byly vhodné pro místní prohlížení.
$ wget -r l 3 --convert-links fosslinux.com
Stahování konkrétních typů souborů
Můžete použít volbu -A s příkazem wget ke stažení určitých typů souborů během rekurzivního stahování. Například použijte následující příkaz wget ke stažení souborů PDF z webové stránky.
$ wget -A '*.pdf -r fosslinux.com
Všimněte si, že rekurzivní maximální úroveň hloubky vyhledávání je ve výchozím nastavení omezena na 5.
Stahování souborů z FTP serveru
Příkaz wget se může hodit, když potřebujete stáhnout soubory z FTP serveru.
$ wget --ftp-user=username --ftp-password=password ftp://192.168.1.13/foofoo.pdf
Ve výše uvedeném příkladu si wget stáhne „foofoo.pdf“ z FTP serveru na adrese 192.168.1.10.
Můžete také použít volbu -r rekurzivní s protokolem FTP ke stahování souborů FTP rekurzivně.
$ wget -r --ftp-user=username --ftp-password=pass ftp://192.168.1.13/
Nastavení maximální velikosti stahování pomocí příkazu wget
Můžete nastavit maximální velikost stahování během rekurzivního načítání souborů pomocí možnosti příznaku –quota. Velikost stahování můžete zadat v bajtech (výchozí), kilobajtech (přípona k) nebo megabajtech (přípona m). Po překročení limitu bude stahování přerušeno.
$ wget -r --quota=1024m fosslinux.com
Upozorňujeme, že kvóty stahování nemají vliv na stahování jednoho souboru.
Nastavení limitu rychlosti stahování pomocí příkazu wget
Pro omezení rychlosti stahování při stahování souborů můžete také použít volbu wget –limit-rate flag. Například následující příkaz stáhne soubor „foofoo.tar.gz“ a omezí rychlost stahování na 256 KB/s.
$ wget --limit-rate=256k URL/ foofoo.tar.gz
Všimněte si, že požadovanou rychlost stahování můžete vyjádřit v bajtech (bez přípony), kilobajtech (pomocí přípony k) nebo megabajtech (pomocí přípony m).
Zrcadlení webu pomocí příkazu wget
Pomocí volby –mirror si můžete stáhnout nebo zrcadlit celý web, včetně jeho adresářové struktury. Zrcadlení webu je podobné rekurzivnímu stahování bez maximální úrovně hloubky. Můžete také použít možnost –rekurzivní –level inf –timestamping –no-remove-listing, což znamená, že je nekonečně rekurzivní.
Můžete také použít wget k archivaci webu s možnostmi –no-cookies –požadavky na stránku –převést-odkazy. Stáhne kompletní stránky a zajistí, že kopie webu bude samostatná a podobná původnímu webu.
$ wget --mirror --convert-links fosslinux.com $ wget -recursive --level inf --timestamping –no-remove-listing
Pamatujte, že archivace webu stáhne velké množství dat, zejména pokud je web starý.
Čtení adres URL z textového souboru
Příkaz wget může číst více adres URL z textového souboru pomocí volby -i. Vstupní textový soubor může obsahovat více adres URL, ale každá adresa URL musí začínat na novém řádku.
$ wget -i URLS.txt
Rozbalení zkrácené adresy URL
Před návštěvou můžete použít možnost wget –max-redirect, abyste se podívali na zkrácené adresy URL. Zkrácené adresy URL jsou nezbytné pro tištěná média nebo na sociálních sítích s omezeným počtem znaků. Zkrácené adresy URL mohou být navíc podezřelé, protože jejich cíl je ve výchozím nastavení skrytý.
Poznámka:Lepší postup zahrnuje zkombinování možnosti –head a –location pro zobrazení záhlaví HTTP a rozluštění cílové adresy URL. Umožňuje vám nahlédnout do zkrácené adresy URL bez načtení celého zdroje.
[######@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.
Poznámka:Zamýšlený cíl je uveden na výstupním řádku, který začíná umístěním.
Úprava záhlaví HTML
Informace hlavičky HTTP je jednou z informací metadat vložených do paketů, které počítače odesílají ke komunikaci během výměny dat. Například pokaždé, když navštívíte web, váš prohlížeč odešle záhlaví požadavku HTTP. Můžete použít volbu –debug k odhalení informací v záhlaví, které wget odesílá do vašeho prohlížeče pro každý požadavek.
[#####@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---
Zobrazení hlaviček odpovědí pomocí příkazu wget
Můžete použít volbu –debug k zobrazení informací v hlavičce odpovědi v odpovědích.
[#####@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
Odpověď na kód odpovědi 301
Stavové kódy odezvy HTTP jsou pro správce webu nezbytné. Stavový kód odpovědi HTTP 301 obvykle znamená, že adresa URL byla trvale přesunuta na jiné místo. Ve výchozím nastavení wget následuje přesměrování. Můžete však použít volbu –max-redirect k určení, co wget udělá, když narazí na odpověď 301. Můžete jej například nastavit na 0, abyste dali wget pokyn, aby nesledoval žádná přesměrování.
[######@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.
Uložení podrobného výstupu wget do souboru protokolu
Ve výchozím nastavení wget zobrazuje podrobný výstup do terminálu Linux. Můžete však použít volbu -o k protokolování všech výstupních zpráv do určeného souboru protokolu.
$ wget -o foofoo_log.txt fosslinux.com
Výše uvedený příkaz wget uloží podrobný výstup do souboru „foofoo_log.txt“.
Spuštění příkazu wget jako webový pavouk
Příkaz wget můžete nastavit tak, aby fungoval jako webový pavouk pomocí volby –spider. V podstatě nebude stahovat žádné webové stránky, ale pouze zkontroluje, zda tam jsou. Kromě toho budou hlášeny všechny nefunkční adresy URL.
$ wget -r --spider fosslinux.com
Spuštění příkazu wget na pozadí
Pro spuštění procesu wget na pozadí můžete použít volbu -b / –background. Je to nezbytné, pokud stahujete velké soubory, jejichž dokončení bude trvat déle.
$ wget -b fosslinux.com/latest.tar.gz
Ve výchozím nastavení je výstup procesu wget přesměrován na ‚wget-log‘. Můžete však zadat jiný soubor protokolu pomocí volby -o.
Chcete-li sledovat proces wget, použijte příkaz tail.
$ tail -f wget-log
Spuštění wget v režimu ladění
Když spustíte wget v režimu ladění, výstup obsahuje informace o vzdáleném serveru, jako jsou hlavičky požadavků wget a hlavičky odpovědí. Záhlaví požadavků a odpovědí jsou zásadní pro systémové administrátory a webové vývojáře.
$ wget --debug fosslinux.com
Změna uživatelského agenta na příkaz wget
Výchozího uživatelského agenta můžete změnit pomocí volby –user-agent. Například můžete použít ‚Mozilla/4.0‘ jako wget User-Agent k načtení fosslinux.com pomocí následujícího příkazu.
$ wget --user-agent='Mozilla/4.0' fosslinux.com
Další tipy a triky wget najdete na oficiálních stránkách s manuálem wget.
Koneckonců
Příkaz wget pro Linux poskytuje efektivní způsob stahování a stahování dat z internetu bez použití prohlížeče. Stejně jako všestranný příkaz curl dokáže wget zpracovat jakýkoli složitý scénář stahování, jako je stahování velkých souborů, neinteraktivní stahování a stahování více souborů.