Wget je bezplatný nástroj pro stahování souborů z webu. Získává data z internetu a ukládá je do souboru nebo je zobrazuje ve vašem terminálu. To je doslova to, co dělají webové prohlížeče, jako je Firefox nebo Chromium, kromě toho, že ve výchozím nastavení vykreslují informace v grafickém okně a obvykle vyžadují, aby je uživatel aktivně ovládal. wget
nástroj je navržen jako neinteraktivní, což znamená, že můžete skriptovat nebo plánovat wget
ke stažení souborů, ať jste u počítače nebo ne.
Stáhněte si soubor pomocí wget
Soubor si můžete stáhnout pomocí wget
poskytnutím odkazu na konkrétní URL. Pokud zadáte adresu URL, která má výchozí hodnotu index.html
, pak se stáhne stránka indexu. Ve výchozím nastavení je soubor stažen do souboru se stejným názvem ve vašem aktuálním pracovním adresáři.
$ 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'
Můžete vytvořit wget
odešlete data na standardní výstup (stdout
) místo toho pomocí --output-document
s pomlčkou -
postava:
$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
<title>Example Domain</title>
Můžete použít --output-document
možnost (-O
zkráceně) pojmenujte svůj stažený soubor jak chcete:
$ wget http://example.com --output-document foo.html
Pokračovat v částečném stahování
Pokud stahujete velmi velký soubor, možná zjistíte, že budete muset stahování přerušit. Pomocí --continue
(-c
zkráceně), wget
může určit, kde stahování skončilo, a pokračovat v přenosu souboru. To znamená, že až si příště stáhnete ISO distribuce Linuxu o velikosti 4 GB, nebudete se muset nikdy vracet na začátek, když se něco pokazí.
$ wget --continue https://example.com/linux-distro.iso
Stáhněte si sekvenci souborů
Pokud to není jeden velký soubor, ale několik souborů, které potřebujete stáhnout, wget
vám s tím může pomoci. Za předpokladu, že znáte umístění a vzor názvu souborů, které chcete stáhnout, můžete použít syntaxi Bash k určení počátečního a koncového bodu mezi rozsahem celých čísel, která reprezentují sekvenci názvů souborů:
$ wget http://example.com/file_{1..4}.webp
Zrcadlení celého webu
Můžete si stáhnout celý web, včetně jeho adresářové struktury, pomocí --mirror
volba. Tato možnost je stejná jako spuštění --recursive --level inf --timestamping --no-remove-listing
, což znamená, že je nekonečně rekurzivní, takže vše získáváte na doméně, kterou určíte. V závislosti na tom, jak je web starý, to může znamenat, že získáváte mnohem více obsahu, než si uvědomujete.
Pokud používáte wget
pro archivaci webu, pak možnosti --no-cookies --page-requisites --convert-links
jsou také užitečné k zajištění toho, aby byla každá stránka aktuální, úplná a aby kopie webu byla víceméně samostatná.
Upravit záhlaví HTML
Protokoly používané pro výměnu dat mají mnoho metadat vložených do paketů, které počítače odesílají ke komunikaci. HTTP hlavičky jsou součástí počáteční části dat. Když procházíte web, váš prohlížeč odesílá záhlaví požadavku HTTP. Použijte --debug
možnost vidět, jaké informace záhlaví wget
odešle s každým požadavkem:
$ 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---
Záhlaví požadavku můžete upravit pomocí --header
volba. Někdy je například užitečné napodobit konkrétní prohlížeč, ať už pro testování, nebo pro zohlednění špatně kódovaných stránek, které správně fungují pouze pro konkrétní uživatelské agenty.
Pro identifikaci jako Microsoft Edge běžící na 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
Můžete se také maskovat jako konkrétní mobilní zařízení:
$ 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
Zobrazení záhlaví odpovědí
Stejným způsobem, jakým jsou informace v záhlaví odesílány s požadavky prohlížeče, jsou informace v záhlaví také zahrnuty do odpovědí. Záhlaví odpovědí můžete vidět pomocí --debug
možnost:
$ 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'
Odpověď na odpověď 301
Kód odezvy 200 znamená, že vše fungovalo podle očekávání. Odpověď 301 na druhé straně znamená, že adresa URL byla trvale přesunuta na jiné místo. Je to běžný způsob, jak správce webových stránek přemístit obsah a přitom zanechat „stopu“, aby jej lidé, kteří navštíví staré místo, mohli stále najít. Ve výchozím nastavení wget
následuje přesměrování a to je pravděpodobně to, co normálně chcete, aby to dělalo.
Můžete však ovládat, co wget
dělá, když narazí na odpověď 301 s --max-redirect
volba. Můžete jej nastavit na 0
nesledovat žádná přesměrování:
$ 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.
Případně jej můžete nastavit na nějaké jiné číslo a řídit tak počet přesměrování wget
následuje.
Rozbalte zkrácenou adresu URL
--max-redirect
Tato možnost je užitečná pro prohlížení zkrácených adres URL předtím, než je skutečně navštívíte. Zkrácené adresy URL mohou být užitečné pro tištěná média, ve kterých uživatelé nemohou pouze zkopírovat a vložit dlouhou adresu URL, nebo na sociálních sítích s omezeným počtem znaků (toto není tak velký problém na moderní a open source sociální síti, jako je Mastodon ). Mohou však být také trochu nebezpeční, protože jejich cíl je od přírody skrytý. Kombinací --head
možnost zobrazit pouze záhlaví HTTP a --location
možnost rozluštit konečný cíl adresy URL, můžete nahlédnout do zkrácené adresy URL bez načtení celého zdroje:
$ 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.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Předposlední řádek výstupu začínající Umístění , odhaluje zamýšlený cíl.
Použít wget
Jakmile si procvičíte uvažování o procesu prozkoumávání webu jako jediného příkazu, wget
se stává rychlým a efektivním způsobem, jak získat potřebné informace z internetu, aniž byste se museli obtěžovat grafickým rozhraním. Abychom vám pomohli začlenit jej do vašeho obvyklého pracovního postupu, vytvořili jsme cheat s běžným wget
použití a syntaxe, včetně přehledu jeho použití k dotazování API. Stáhněte si Linux wget
cheat sheet zde.