2022-10-05 21:43 Doba čtení: 13 min

10 příkladů příkazů wget, které vám pomohou při odstraňování problémů – wget Test

Mezi nástroje, které administrátoři systému často využívají, patří i wget. Může se stát velmi cenným pomocníkem při řešení problémů souvisejících s webem.

Co je to příkaz wget?

Příkaz wget je oblíbený nástroj pro příkazový řádek v systémech Unix/Linux, který slouží k načítání obsahu z webových stránek. Je k dispozici zdarma a nabízí neinteraktivní způsob stahování souborů z webu. Přímo po instalaci podporuje protokoly HTTPS, HTTP a FTP. Umožňuje také používání HTTP proxy serverů.

Jak může wget pomoci při řešení problémů?

Existuje mnoho situací, kdy je wget užitečný.

Jako správce systému budete často pracovat v terminálu. Při řešení problémů s webovými aplikacemi možná nebudete chtít kontrolovat celou stránku, ale pouze ověřit konektivitu. Nebo budete potřebovat zkontrolovat intranetové webové stránky. Nebo si budete chtít stáhnout určitou stránku a ověřit její obsah.

Wget je neinteraktivní, což znamená, že jej můžete spustit na pozadí, i když jste odhlášeni. Mnoho situací vyžaduje, abyste se od systému odpojili, i když právě probíhá stahování souborů z webu. Wget v takovém případě poběží na pozadí a dokončí zadanou úlohu.

Wget lze také použít ke stažení celých webových stránek na váš lokální počítač. Umí sledovat odkazy na stránkách XHTML a HTML a vytvářet lokální kopie webu. K tomu stahuje stránky rekurzivně. To se hodí zejména v případech, kdy chcete stáhnout důležité stránky nebo celé weby pro offline prohlížení.

Pojďme si ukázat několik praktických příkladů. Níže je uvedena základní syntaxe příkazu wget.

wget [volby] [URL]

Stahování webové stránky

Zkusme si stáhnout nějakou stránku. Například github.com

wget github.com

Pokud je připojení v pořádku, stáhne se domovská stránka a zobrazí se výstup podobný následujícímu:

[email protected]:~# wget github.com
URL transformed to HTTPS due to an HSTS policy
--2020-02-23 10:45:52--  https://github.com/
Resolving github.com (github.com)... 140.82.118.3
Connecting to github.com (github.com)|140.82.118.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

index.html                                       [ <=>                                                                                        ] 131.96K  --.-KB/s    in 0.04s   

2020-02-23 10:45:52 (2.89 MB/s) - ‘index.html’ saved [135126]

[email protected]:~#

Stahování více souborů

Tato funkce je užitečná, když potřebujete stáhnout více souborů najednou. Může vám také ukázat, jak automatizovat stahování souborů pomocí skriptů.

Zkusme stáhnout soubory Python 3.8.1 a 3.5.1.

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz

Jak už asi tušíte, syntaxe je následující:

wget URL1 URL2 URL3

Stačí, aby byly adresy URL odděleny mezerou.

Omezení rychlosti stahování

Tato funkce se hodí, když chcete otestovat, jak dlouho trvá stahování vašeho souboru při různých rychlostech připojení.

Rychlost stahování můžete omezit pomocí volby --limit-rate.

Níže je uveden výstup stahování souboru Nodejs:

[email protected]:~# wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 10:59:58--  https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz’

node-v12.16.1-linux-x64.tar.xz               100%[===========================================================================================>]  13.92M  --.-KB/s    in 0.05s   

2020-02-23 10:59:58 (272 MB/s) - ‘node-v12.16.1-linux-x64.tar.xz’ saved [14591852/14591852]

Stažení souboru o velikosti 13,92 MB trvalo 0,05 sekundy. Nyní zkusíme omezit rychlost na 500K.

[email protected]:~# wget --limit-rate=500k https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 11:00:18--  https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz.1’

node-v12.16.1-linux-x64.tar.xz.1             100%[===========================================================================================>]  13.92M   501KB/s    in 28s     

2020-02-23 11:00:46 (500 KB/s) - ‘node-v12.16.1-linux-x64.tar.xz.1’ saved [14591852/14591852]

Omezení rychlosti stahování způsobilo, že stahování trvalo déle – 28 sekund. Představte si, že si vaši uživatelé stěžují na pomalé stahování a vy víte, že jejich síť má nízkou šířku pásma. Problém můžete rychle otestovat pomocí volby --limit-rate.

Stahování na pozadí

Stahování velkých souborů může trvat delší dobu, nebo můžete chtít nastavit omezení rychlosti. To se dá očekávat, ale co když nechcete sledovat terminál?

Pro spuštění wget na pozadí můžete použít argument -b.

[email protected]:~# wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
[email protected]:~#

Ignorování chyb certifikátu

Tato funkce je užitečná, když potřebujete zkontrolovat intranetové webové aplikace, které nemají správný certifikát. Ve výchozím nastavení wget vyvolá chybu, pokud certifikát není platný.

[email protected]:~# wget https://expired.badssl.com/
--2020-02-23 11:24:59--  https://expired.badssl.com/
Resolving expired.badssl.com (expired.badssl.com)... 104.154.89.105
Connecting to expired.badssl.com (expired.badssl.com)|104.154.89.105|:443... connected.
ERROR: cannot verify expired.badssl.com's certificate, issued by ‘CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB’:
  Issued certificate has expired.
To connect to expired.badssl.com insecurely, use `--no-check-certificate'.

Výše uvedený příklad se týká adresy URL, u které vypršela platnost certifikátu. Jak můžete vidět, je zde navrženo použití --no-check-certificate, které ignoruje jakékoli ověření certifikátu.

[email protected]:~# wget https://untrusted-root.badssl.com/ --no-check-certificate
--2020-02-23 11:33:45--  https://untrusted-root.badssl.com/
Resolving untrusted-root.badssl.com (untrusted-root.badssl.com)... 104.154.89.105
Connecting to untrusted-root.badssl.com (untrusted-root.badssl.com)|104.154.89.105|:443... connected.
WARNING: cannot verify untrusted-root.badssl.com's certificate, issued by ‘CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US’:
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 600 [text/html]
Saving to: ‘index.html.6’

index.html.6                                 100%[===========================================================================================>]     600  --.-KB/s    in 0s      

2020-02-23 11:33:45 (122 MB/s) - ‘index.html.6’ saved [600/600]

[email protected]:~#

Skvělé, že?

Podívejte se na HTTP hlavičku odpovědi daného webu v terminálu.

Použití -S zobrazí hlavičky, jak můžete vidět níže pro Coursera.

[email protected]:~# wget https://www.coursera.org -S
--2020-02-23 11:47:01--  https://www.coursera.org/
Resolving www.coursera.org (www.coursera.org)... 13.224.241.48, 13.224.241.124, 13.224.241.82, ...
Connecting to www.coursera.org (www.coursera.org)|13.224.241.48|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Content-Type: text/html
  Content-Length: 511551
  Connection: keep-alive
  Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0
  Date: Sun, 23 Feb 2020 11:47:01 GMT
  etag: W/"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
  Server: envoy
  Set-Cookie: CSRF3-Token=1583322421.s1b4QL6OXSUGHnRI; Max-Age=864000; Expires=Wed, 04 Mar 2020 11:47:02 GMT; Path=/; Domain=.coursera.org
  Set-Cookie: __204u=9205355775-1582458421174; Max-Age=31536000; Expires=Mon, 22 Feb 2021 11:47:02 GMT; Path=/; Domain=.coursera.org
  Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  X-Content-Type-Options: nosniff
  x-coursera-render-mode: html
  x-coursera-render-version: v2
  X-Coursera-Request-Id: NCnPPlYyEeqfcxIHPk5Gqw
  X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8
  x-envoy-upstream-service-time: 1090
  X-Frame-Options: SAMEORIGIN
  x-powered-by: Express
  X-XSS-Protection: 1; mode=block
  X-Cache: Miss from cloudfront
  Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront)
  X-Amz-Cf-Pop: LHR62-C3
  X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ==
Length: 511551 (500K) [text/html]

Manipulace s User-Agentem

Někdy budete potřebovat připojit se k webu pomocí vlastního User-Agenta nebo konkrétního User-Agenta prohlížeče. Toho lze dosáhnout zadáním --user-agent. Níže uvedený příklad používá User-Agenta "MyCustomUserAgent".

[email protected]:~# wget https://gf.dev --user-agent="MyCustomUserAgent"

Pokud je vaše aplikace stále ve vývoji, možná nemáte správnou adresu URL pro testování. Nebo budete chtít otestovat jednotlivou instanci HTTP pomocí IP adresy, ale budete muset zadat hlavičku Host, aby aplikace fungovala správně. V této situaci se hodí parametr --header.

Uveďme příklad testování http://10.10.10.1 s hlavičkou Host nastavenou na application.com.

wget --header="Host: application.com" http://10.10.10.1

Můžete vkládat nejen hlavičku Host, ale libovolnou hlavičku, kterou si přejete.

Připojení pomocí proxy serveru

Pokud pracujete v prostředí DMZ, možná nebudete mít přímý přístup k internetovým stránkám. Pro připojení ale můžete použít proxy server.

wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT http://externalsite.com

Nezapomeňte nahradit proměnnou $PROXYHOST:PORT vašimi aktuálními údaji.

Připojení pomocí specifického protokolu TLS

Obvykle bych pro testování protokolu TLS doporučil použít OpenSSL. Nicméně můžete použít i wget.

wget --secure-protocol=TLSv1_2 https://example.com

Výše uvedený příkaz vynutí připojení wgetu přes TLS 1.2.

Závěr

Znalost užitečných příkazů vám může usnadnit práci. Doufám, že vám výše uvedené informace pomohou pochopit, co všechno se dá s příkazem wget dělat.

Tomáš Dvořák
Autor
Czechia

Píše o bezpečnosti, webu a chytrých službách s důrazem na srozumitelnost.

Předchozí článek
18 základního softwaru, o kterém by měl vědět každý datový vědec
Další článek
Jak získat online magisterský a bakalářský titul v oboru technologie?