GNU/Linux >> Znalost Linux >  >> Linux

7 praktických triků pro použití příkazu wget pro Linux

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.


Linux
  1. Průvodce linuxovým terminálem pro začátečníky

  2. Použití síly na příkazovém řádku Linuxu

  3. 4 nástroje ke stažení libovolného souboru pomocí příkazového řádku v Linuxu

  1. 8 tipů pro příkazový řádek Linuxu

  2. Tipy pro použití příkazu top v Linuxu

  3. 3 správci hesel pro příkazový řádek Linuxu

  1. Pomocí příkazu Linux zdarma

  2. Příkaz Wget v Linuxu s příklady

  3. Příkaz wget pro Linux s příklady