Rozsáhlý průvodce vysvětlující použití příkazu curl k načítání webových stránek a stahování souborů přímo z vašeho terminálu
The kučera
command je další zajímavý nástroj příkazového řádku, který vám Linux může nabídnout. kučera
umožňuje uživateli načítat soubory ze serveru.
kučera
je oblíbenou volbou vývojářů aplikací a častých uživatelů Linuxu, protože podporuje řadu protokolů jako RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S atd.
kučera
příkaz dělá mnohem víc než jen načítání webových stránek za vás. Díky znalosti možností, které jsou s tímto příkazem k dispozici, je pro vaše použití univerzálnější. Pojďme se ponořit do tutoriálu, abychom získali dobrou představu o používání kučera
pomocí několika krátkých příkladů.
Instalace
Před použitím kučera
zkontrolujte, zda je již ve vašem systému nainstalován. Použijte příkaz curl --verze
zkontrolovat jestli kučera
je nainstalován.
V případě, že kučera
není nainstalován, použijte následující kroky.
Na systémech založených na Ubuntu a Debianu použití:
aktualizace sudo apt-get
sudo apt-get install curl
Na distrech RHEL, CentOs a Fedora, použití:
sudo yum install curl
Nyní použijte curl --verze
příkaz, abyste se ujistili, že je správně nainstalován.
curl --verze
Výstup:
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.3 0 librtmp/2.3 Release-Date: 2018-01-24 Protokoly: dict soubor ftp ftps gopher http https imaps imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Funkce: AsynchDNS IDN GNT Keross IPv6 Large libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$
Nyní jsme připraveni použít kučera
příkaz.
Možnosti dostupné pomocí příkazu CURL
Pojďme se nejprve podívat na některé z prominentních možností, které jsou k dispozici s kučera
příkaz.
Volba | Popis |
-u | stahování souborů z FTP serveru |
-C | pro obnovení přerušeného stahování |
-Ó | uložit výsledek kučera příkaz s předdefinovaným názvem souboru |
-Já | získat hlavičky HTTP definované adresy URL |
-Ó | uložit výsledek kučera příkaz s původním názvem souboru |
--libcurl | pro výstup zdrojového kódu C, který používá libcurl pro zadanou možnost |
-X | k použití proxy pro přístup k URL |
-# | pro zobrazení indikátoru průběhu pro zobrazení stavu stahování |
Načtení webové stránky pomocí CURL
The kučera
Pokud je příkaz použit bez jakékoli možnosti, načte obsah adresy URL zadané v příkazu.
Syntax:
curl [URL]
Příklad:
curl //allthings.how
Výstup:
gaurav@ubuntu:~$ curl //allthings.how html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads ]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;- moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch -action:pan-y;touch-action:pan-y}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not (.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-webview>body{overflow-x :hidden!důležité;přetečení-y:viditelné!důležité;min-výška:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!důležité ;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;over flow-y:auto!důležité;pozice:absolutní!důležité;nahoře:0!důležité;vlevo:0!důležité;vpravo:0!důležité;dole:0!důležité;okraj:0!důležité;zobrazit:blok!důležité} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling: touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px solid transparent!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox -element{visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram {padding:54px 0px 0px!important;background-color:#fff}prvek iframe amp-iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[předplatné -dialog],body:not(.i-amphtml-s ubs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[update]{display :none}.i-amphtml-jank-meter{position:fixed;background-color:rgba(232,72,95,0.5);bottom:0;right:0;color:#fff;font-size:16px; z-index:1000;padding:5px}amp-list[změnitelné-děti]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load -more] [načíst-více-načítání]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px !důležité;displej:blok!důležité;výška:100%!důležité;okraj:0!důležité;výplň:0!důležité;přetečení:skryté!důležité;šířka:100%!důležité}amp-příběh[samostatný] color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtm l-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([vzdálenost]):not([aktivní]){transform:translateY(1000vh)!důležité }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0,33) }.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden} amp-script[nodom]{position:fixed!důležité;horní:0!důležité;šířka:1px!důležité;výška:1px!důležité;přetečení:skryto!důležité;viditelnost:skryto}
Zde je obsah webové stránky načten přímo do vašeho terminálu jako zdrojový kód.
Můžete použít možnosti -Ó
a -Ó
s kučera
příkaz k uložení tohoto obsahu do souboru.
Když -Ó
Pokud použijete volbu, obsah URL se uloží do vašeho aktuálního adresáře s uživatelem definovaným názvem souboru.
Syntax:
curl -o [název_uživatelského_souboru] [URL]
Příklad:
gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Celkem % přijatých % Xferd Průměrná rychlost Čas Čas Čas Aktuální Dload Nahrání Celkem Utraceno Levá rychlost 100 199 k 100 199 k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$
V tomto příkladu je obsah z adresy URL „allthings.how“ uložen jako soubor HTML s názvem ath.html v mém aktuálním pracovním adresáři. Po otevření tohoto HTML souboru budu přesměrován na webovou stránku, která je uložena.
Stahování souborů pomocí příkazu CURL
Za použití -Ó
volba s příkazem curl také uloží obsah nebo webovou stránku nebo balíček ke stažení jako soubor, ale uloží tento soubor s původním názvem.
Podívejme se na to na příkladu:
Příklad:
Zde jsem použil kučera
příkaz s -Ó
možnost stáhnout balíček Ubuntu s názvem „cherrytree_0.37.6-1.1_all.deb“ z úložiště balíčků Ubuntu.
gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Celkem % přijatých % Xferd Průměrná rychlost Čas Čas Čas Aktuální stahování Celková útrata Levá rychlost 100 613 k 100 613 k 0 0 220 k 0 0:00:02 0:00:02 --:--:-- 220 k gaurav@ubuntu:~/workspace$
Výstup:
trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$
Balíček je tedy nyní stažen a uložen do aktuálního pracovního adresáře (CWD) s původním názvem.
Zobrazení ukazatele průběhu při stahování souboru
Při používání je k dispozici ještě jedna estetická úprava kučera
příkaz ke stažení souboru. Průběh stahování souboru můžete sledovat ve formě ukazatele průběhu na vašem terminálu. Stačí připojit -#
možnost s vaším příkazem stáhnout soubor.
Podívejme se na příklad tohoto vylepšení.
Syntax:
curl -# -O [URL]
Příklad:
gaurav@ubuntu:~/workspace$ curl -# -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######## ################################################## ################################################## ################################### 100,0 % gaurav@ubuntu:~/workspace$
Výstup:
gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$
V tomto výstupu můžete pozorovat, že jsem si stáhl balíček s názvem „emacs-defaults_47.0.tar.xz‘ v mém CWD a během stahování se v terminálu zobrazí indikátor průběhu.
Obnovení přerušeného stahování v CURL
Mnohokrát může nastat situace, kdy budete muset stahovat soubory větší velikosti. Někdy z nějakých důvodů, jako je výpadek napájení nebo selhání sítě, se stahování může přerušit uprostřed procesu, aniž by se stáhl celý soubor. I když stisknete Ctrl+C
v terminálu se proces přeruší.
The kučera
příkaz při použití s -C
obnoví přerušené stahování.
Syntax:
curl -C - -O [URL]
Příklad:
Na tomto obrázku jsem se pokusil stáhnout Ubuntu 20.04 ISO obraz z webu Ubuntu.
gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1604751509 Celková rychlost %206290451501 %209 %20490451501 %209 %209 %4017 % celkem %206 % Čas Čas Čas Aktuální Dload Nahrání Celková útrata Levá rychlost 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C
Zde jsem záměrně přerušil proces stahování Ctrl+C
.
Nyní použiji -C
možnost s kučera
příkaz k obnovení přerušeného stahování ze stejného zdrojového webu.
Výstup:
gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1672025901 01.04.04 1414 145 0414929102590159 pozice bajtu 1851392 % Celkem % Přijato % Xferd Průměrná rychlost Čas Čas Čas Aktuální Dload Nahrání Celkem Utraceno Levá rychlost 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 9827
Stahování bylo obnoveno z místa, kde bylo přerušeno.
Stahování souborů z FTP serveru pomocí CURL
Je to docela snadné s kučera
příkaz ke stažení souboru z FTP serveru pomocí -u
volba. Před zadáním URL musíte do příkazu zadat uživatelské jméno a heslo.
Syntax:
curl -u [uživatelské jméno]:[heslo] [URL]
Pro ilustraci budu používat online veřejné FTP.
Příklad:
gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Celkem % přijatých % Xferd Průměr Rychlost Čas Čas Čas Aktuální stahování Nahrání Celková útrata zbývá Rychlost 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$
Zde jsem stáhl soubor s názvem „16-Sep-20-16-0-0.csv’ z tohoto ftp serveru a uložil jej s původním názvem do mého CWD. Zkontroluji stažený soubor pomocí ls
příkaz.
gaurav@ubuntu:~/workspace$ ls -al celkem 1092 drwxrwxr-x 3 gaurav gaurav 4096 16. září 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 16. září 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16. září 16:15 16. září-20-16-0-0.csv -r r--r-- 1 gaurav gaurav 204429 16. září 11:45 ath.html gaurav@ubuntu:~/workspace$
Stahování více souborů dohromady pomocí CURL
Stahování více souborů najednou pomocí kučera
příkaz je velmi jednoduchý úkol. Stačí použít -Ó
možnost s kučera
příkaz podobný způsobem, který jsme provedli ve výše uvedených blocích.
Syntax:
curl -O [URL-1] -O [URL-2] -O[URL-n]
Příklad:
gaurav@ubuntu:~/workspace$ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com/ubuntu/pool/main/a/apache2/apache2_2.4.29.orig.tar.gz % Celkem % přijatých % Xferd Průměrná rychlost Čas Čas Čas Aktuální Dload Nahrání Celkem Utraceno Levá rychlost 100 63500 100 63500 0 0 554008 0 0: :01 0:00:01 --:--:-- 55458 100 8436 k 100 8436 k 0 0 123 k 0 0:01:08 0:01:08 --:--:-- 127 k gaurav@ubuntu:~/workspace $
V tomto příkladu jsem si stáhl dva různé balíčky z úložiště Ubuntu.
Výstup:
gaurav@ubuntu:~/workspace$ ls -al celkem 9596 drwxrwxr-x 3 gaurav gaurav 4096 16. září 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 16. září 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16. září 16:15 16. září-20-16-0-0.csv -r r--r-- 1 gaurav gaurav 63500 16. září 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 16. září 29. 2. 16.:29 orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16. září 11:45 ath.html gaurav@ubuntu:~/workspace$
Oba balíčky se stahují současně pomocí příkazu curl.
Načítání HTTP hlaviček URL s CURL
Pole záhlaví HTTP libovolné adresy URL obsahuje užitečné informace, jako je uživatelský agent, typ obsahu, kódování atd. Tyto soubory záhlaví také poskytují informace o objektu odeslaném v těle zprávy. Podrobnosti o požadavku a odpovědi jsou také získány z těchto HTTP hlaviček.
Můžeš použít kučera
příkaz s -Já
možnost získat tato záhlaví HTTP adresy URL.
Syntax:
curl -I [URL]
Příklad:
gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Toto není zásada P3P! Další informace najdete na g.co/p3phelp." Datum: středa, 16. září 2020 11:17:00 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Platnost: St, 16. září 2020 11:17:00 GMT Cache- Ovládání: soukromý Set-Cookie: 1P_JAR=2020-09-16-11; expires=Pá, 16-Oct-2020 11:17:00 GMT; cesta=/; doména=.google.com; Secure Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expiruje=Čt, 18. března 2021 11:17:00 GMT; cesta=/; doména=.google.com; HttpOnly gaurav@ubuntu:~/workspace$
V tomto příkladu jsem načetl HTTP hlavičky „www.firefox.com‘.
Načítání kódu C-Source pomocí CURL
Použitím kučera
příkaz s --libcurl
možnost může načíst zdrojový kód C. Pro laické uživatele to nemá žádné významné využití, ale může se ukázat jako velmi užitečné pro systémové programátory, bezpečnostní analytiky a vývojáře aplikací.
Syntax:
curl [URL] > název souboru --libcurl [kód_souboru]
Příklad:
V tomto příkladu jsem načetl obsah adresy URL všechno.jak a uložili jej do souboru s názvem gy_ath.html. Zdrojový kód C je samostatně uložen v zdroj.c soubor.
curl //www.allthings.how > gy_ath.html --libcurl source.c
Výstup:
gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Celkem % přijatých % Xferd Průměrná rychlost Čas Čas Čas Aktuální Dload Nahrání Celkem Utraceno Levá rychlost 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$
Nyní zkontrolujeme stažené soubory.
gaurav@ubuntu:~/workspace$ ls -al celkem 404 drwxrwxr-x 3 gaurav gaurav 4096 16. září 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 16. září 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 16. září 17:13 gy_ath.html -rw-r--r-- 1 garav15 gau 16. září 17:13 source.c gaurav@ubuntu:~/workspace$
The zdroj.c soubor obsahuje zdrojový kód. To lze zobrazit na terminálu pomocí kočka
příkaz. Vložil jsem pár řádků z výstupu do níže uvedeného bloku.
C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Ukázkový kód generovaný nástrojem příkazového řádku curl ********** * Všechny možnosti curl_easy_setopt() jsou zdokumentovány na: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html **************************************** *********************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; CURL *hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt(hnd, CURLOPT_URL, "//www.allthings.how"); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.58.0"); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
Použití proxy v CURL pro přístup k URL
Jak bylo řečeno v úvodu, kučera
příkaz podporuje širokou škálu protokolů jako FTP, SMTP, HTTPS, SOCKS atd. Někdy je použití proxy serveru pro přenos souborů důležité, když chcete zvýšit rychlost přenosu a také chránit svou identitu. kučera
příkaz lze snadno použít k přenosu souborů přes proxy server připojením -X
možnost k tomu.
Příklad:
curl -x [adresa_proxy]:[port] [URL]
Ve výše uvedeném příkladu jsem předpokládal, že váš proxy nevyžaduje žádné ověření. V případě, že proxy vyžaduje autentizaci pro zahájení přenosu, můžete použít následující příkaz.
curl -u [uživatelské jméno]:[heslo] -x [adresa_proxy]:[port] [URL]
Pomocí této jednoduché metody můžeme přenášet soubory přes proxy server s možností volby -X
používá se s kučera
příkaz.
Závěr
V tomto krátkém tutoriálu jsme se naučili, jak na to kučera
se ukázalo jako užitečné při stahování obsahu přímo z vašeho terminálu. Také jsme se dozvěděli o různých možnostech dostupných s tímto příkazem, které lze použít pro různé úlohy.