Opsežan vodič koji objašnjava upotrebu naredbe curl za dohvaćanje web stranica i preuzimanje datoteka izravno s vašeg terminala
The kovrča
naredba je još jedan zanimljiv uslužni program naredbenog retka koji vam Linux nudi. kovrča
naredba omogućuje korisniku dohvaćanje datoteka s poslužitelja.
kovrča
je popularan izbor programera aplikacija i čestih korisnika Linuxa zbog svoje podrške za brojne protokole kao što su RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S, itd.
kovrča
naredba radi puno više od samog dohvaćanja web stranica umjesto vas. Poznavanje opcija dostupnih s ovom naredbom čini je svestranijom za vašu upotrebu. Zaronimo u tutorijal kako bismo bolje razumjeli korištenje kovrča
naredbu koristeći neke kratke primjere.
Montaža
Prije upotrebe kovrča
naredbu, provjerite je li već instalirana na vašem sustavu. Koristite naredbu curl --verzija
provjeriti je li kovrča
je instaliran.
U slučaju da kovrča
nije instaliran, koristite sljedeće korake.
Na Ubuntu i Debian sustavima, koristiti:
sudo apt-dobi ažuriranje
sudo apt-get install curl
Na RHEL, CentOs i Fedora distribucijama, koristiti:
sudo yum install curl
Sada koristite curl --verzija
naredbu kako biste bili sigurni da je ispravno instaliran.
curl --verzija
Izlaz:
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.1) ng02/ 0 librtmp/2.3 Datum izdanja: 2018-01-24 Protokoli: dict datoteka ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp telnet tftp IDN AsynchNTBSLNtps telnet tftp IDN AsynchNTSB6NTLE SPGE libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$
Sada smo spremni za korištenje kovrča
naredba.
Opcije dostupne s CURL naredbom
Pogledajmo najprije neke od istaknutih opcija dostupnih s kovrča
naredba.
Opcija | Opis |
-u | za preuzimanje datoteka s FTP poslužitelja |
-C | za nastavak prekinutog preuzimanja |
-o | za spremanje rezultata kovrča naredba s unaprijed definiranim imenom datoteke |
-ja | da biste dobili HTTP zaglavlja definiranog URL-a |
-O | za spremanje rezultata kovrča naredbu s izvornim imenom datoteke |
--libcurl | za izlaz C izvornog koda koji koristi libcurl za navedenu opciju |
-x | za korištenje proxyja za pristup URL-u |
-# | za prikaz trake napretka za prikaz statusa preuzimanja |
Dohvaćanje web stranice pomoću CURL-a
The kovrča
naredba, kada se koristi bez ikakve opcije, dohvaća sadržaj URL-a navedenog u naredbi.
Sintaksa:
curl [URL]
Primjer:
kovrča //allthings.how
Izlaz:
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!important;overflow-y:visible!important;min-height:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important ;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!važno;položaj:apsolutno!važno;gore:0!važno;lijevo:0!važno;desno:0!važno;dolje:0!važno;margina:0!važno;prikaz:blok!važno} 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}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[pretplate -dijalog],tijelo:ne(.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[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [učitaj-više] [gumb-više-učitaj],amp-list[učitaj-više] [učitaj-više-kraj],amp-list[učitaj-više] [učitaj-više-neuspjeh],amp-list[učitaj -više] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[samostalno]{min-height:1px !important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[samostalna]{background- boja:#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([udaljenost]):not([aktivan]){transform:translateY(1000vh)!važno }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!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden}
Ovdje se sadržaj web stranice dohvaća izravno na vaš terminal kao izvorni kod.
Možete koristiti opcije -o
i -O
sa kovrča
naredba za pohranu ovog sadržaja u datoteku.
Kada -o
Ako se koristi opcija, sadržaj URL-a sprema se u vaš trenutni direktorij s korisnički definiranim imenom datoteke.
Sintaksa:
curl -o [userdefined_filename] [URL]
Primjer:
gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Ukupno % primljenih % Xferd Prosječna brzina Vrijeme Vrijeme Trenutno preuzimanje Učitavanje Ukupna potrošena preostala brzina 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$
U ovom primjeru, sadržaj s URL-a 'allthings.how' spremljen je kao HTML datoteka pod nazivom ath.html u mom trenutnom radnom direktoriju. Nakon otvaranja ove HTML datoteke, bit ću preusmjeren na web stranicu koja je spremljena.
Preuzimanje datoteka pomoću CURL naredbe
Koristiti -O
opcija s naredbom curl također sprema sadržaj ili web stranicu ili paket koji se može preuzeti kao datoteku, ali sprema ovu datoteku s njezinim izvornim nazivom.
Pogledajmo ovo kroz primjer:
Primjer:
Ovdje sam koristio kovrča
zapovijed sa -O
opcija za preuzimanje Ubuntu paketa pod nazivom 'trešnja_0.37.6-1.1_sve.deb‘ iz repozitorija Ubuntu paketa.
gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Ukupno % primljenih % Xferd Prosječna brzina Vrijeme Vrijeme Vrijeme Trenutačni prijenos prijenosa Ukupna potrošena preostala brzina 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$
Izlaz:
trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$
Dakle, paket je sada preuzet i spremljen u trenutni radni direktorij (CWD) s izvornim imenom.
Prikaz trake napretka tijekom preuzimanja datoteke
Dostupna je još jedna estetska modifikacija tijekom korištenja kovrča
naredba za preuzimanje datoteke. Možete vidjeti napredak preuzimanja vaše datoteke u obliku trake napretka na vašem terminalu. Trebate samo dodati -#
opciju s vašom naredbom za preuzimanje datoteke.
Pogledajmo primjer ovog podešavanja.
Sintaksa:
curl -# -O [URL]
Primjer:
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$
Izlaz:
gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$
U ovom izlazu možete primijetiti da sam preuzeo paket pod nazivom 'emacs-defaults_47.0.tar.xz‘ u mom CWD-u i traka napretka se prikazuje na terminalu dok je preuzimanje bilo u tijeku.
Nastavak prekinutog preuzimanja u CURL-u
Mnogo puta može doći do situacije u kojoj morate preuzeti datoteke veće veličine. Ponekad zbog nekih razloga poput nestanka struje ili kvara mreže preuzimanje se može prekinuti usred procesa bez preuzimanja cijele datoteke. Čak i ako pritisnete Ctrl+C
u terminalu, proces se prekida.
The kovrča
naredba kada se koristi s -C
opcija nastavlja prekinuto preuzimanje.
Sintaksa:
curl -C - -O [URL]
Primjer:
Na ovoj ilustraciji, pokušao sam preuzeti Ubuntu 20.04 ISO sliku s Ubuntu web stranice.
gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.160025072.1184373179.160025072.160025079.1600250725 Brzina %1600250720 %1600250720 %250920 %25092 %25092 Vrijeme Vrijeme Vrijeme Trenutačno preuzimanje Učitavanje Ukupno utrošeno preostala brzina 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C
Ovdje sam namjerno prekinuo proces preuzimanja Ctrl+C
.
Sada ću koristiti -C
opcija s kovrča
naredba za nastavak prekinutog preuzimanja s iste izvorne web stranice.
Izlaz:
gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.16002450 Prenos** od 16002450 pozicija bajta 1851392 % Ukupno % primljenih % Xferd Prosječna brzina Vrijeme Vrijeme Vrijeme Trenutni Dload Upload Ukupna potrošena lijeva brzina 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:28
Preuzimanje je preuzeto s mjesta gdje je prekinuto.
Preuzimanje datoteka s FTP poslužitelja pomoću CURL-a
Prilično je jednostavno s kovrča
naredba za preuzimanje datoteke s FTP poslužitelja pomoću -u
opcija. Morate unijeti korisničko ime i lozinku u naredbu prije unosa URL-a.
Sintaksa:
curl -u [korisničko ime]:[lozinka] [URL]
Za ilustraciju, koristit ću internetski javni FTP.
Primjer:
gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Ukupno % primljenih % Xfer Brzina Vrijeme Vrijeme Vrijeme Trenutno Dload Upload Ukupno potrošeno preostala brzina 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$
Ovdje sam preuzeo datoteku pod nazivom ‘16-ruj-20-16-0-0.csv’ s ovog ftp poslužitelja i spremio ga s originalnim imenom u moj CWD. Provjerit ću preuzetu datoteku pomoću ls
naredba.
gaurav@ubuntu:~/workspace$ ls -al ukupno 1092 drwxrwxr-x 3 gaurav gaurav 4096 16. rujna 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 16. rujna 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16. ruj 16:15 16. rujna 20. 16. 0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16. rujna 11:45 ath.html gaurav@ubuntu:~/workspace$
Zajedničko preuzimanje više datoteka pomoću CURL-a
Preuzimanje više datoteka odjednom pomoću kovrča
naredba je vrlo jednostavan zadatak. Vi samo koristite -O
opcija s kovrča
naredba slična na način na koji smo izveli u gornjim blokovima.
Sintaksa:
curl -O [URL-1] -O [URL-2] -O[URL-n]
Primjer:
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 % Ukupno % primljenih % Xferd Prosječna brzina Vrijeme Vrijeme Trenutno Dload Upload Ukupno utrošeno Lijeva brzina 100 63500 100 63500 0 0 8 05 0 0 8 05 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $
U ovom primjeru, preuzeo sam dva različita paketa iz Ubuntu repozitorija.
Izlaz:
gaurav@ubuntu:~/workspace$ ls -al ukupno 9596 drwxrwxr-x 3 gaurav gaurav 4096 16. rujna 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 16. rujna 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16. ruj 16:15 16. rujna 20. 16. 0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 16. rujna 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 16. rujna 16:29 apache2_. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16. rujna 11:45 ath.html gaurav@ubuntu:~/workspace$
Dva paketa preuzimaju se u isto vrijeme pomoću naredbe curl.
Dohvaćanje HTTP zaglavlja URL-a s CURL-om
Polja HTTP zaglavlja bilo kojeg URL-a sadrže korisne informacije kao što su korisnički agent, vrsta sadržaja, kodiranje itd. Ove datoteke zaglavlja također pružaju informacije o objektu koji se šalje u tijelu poruke. Detalji o zahtjevu i odgovoru također se dobivaju iz ovih HTTP zaglavlja.
Možeš koristiti kovrča
zapovijed sa -ja
opcija za dobivanje ovih HTTP zaglavlja URL-a.
Sintaksa:
curl -I [URL]
Primjer:
gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Vrsta sadržaja: tekst/html; charset=ISO-8859-1 P3P: CP="Ovo nije politika P3P! Za više informacija pogledajte g.co/p3phelp." Datum: srijeda, 16. rujna 2020. 11:17:00 GMT Poslužitelj: gws X-XSS-Protection: 0 X-Frame-Opcije: SAMEORIGIN Transfer-Encoding: chunked Istječe: Srijeda, 16. rujna 2020. 11:17:00 GMT Cache- Kontrola: privatni Set-Cookie: 1P_JAR=2020-09-16-11; istječe=pet, 16. listopada 2020. 11:17:00 GMT; put=/; domena=.google.com; Set-osigurati kolačić: NID-204-SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expires=čet, 18. ožujka 2021. 11:17:00 GMT; put=/; domena=.google.com; HttpSamo gaurav@ubuntu:~/workspace$
U ovom primjeru dohvatio sam HTTP zaglavlja "www.firefox.com‘.
Dohvaćanje C-izvornog koda pomoću CURL-a
Korištenje kovrča
naredba s --libcurl
opcija može dohvatiti C izvorni kod. Ovo nema značajne koristi za laike, ali se može pokazati vrlo korisnim za programere sustava, sigurnosne analitičare i programere aplikacija.
Sintaksa:
curl [URL] > naziv datoteke --libcurl [naziv_datoteke]
Primjer:
U ovom primjeru dohvatio sam sadržaj URL-a sve stvari.kako i pohranio ga u datoteku pod nazivom gy_ath.html. Izvorni kod C zasebno je pohranjen u izvor.c datoteka.
curl //www.allthings.how > gy_ath.html --libcurl source.c
Izlaz:
gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Ukupno % primljenih % Xferd Prosječna brzina Vrijeme Vrijeme Vrijeme Trenutno Dload Upload Ukupna potrošena preostala brzina 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$
Provjerimo sada preuzete datoteke.
gaurav@ubuntu:~/workspace$ ls -al ukupno 404 drwxrwxr-x 3 gaurav gaurav 4096 16. rujna 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 ruj 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 ruj 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 16. rujna 17:13 source.c gaurav@ubuntu:~/workspace$
The izvor.c datoteka sadrži izvorni kod. To se može prikazati na terminalu pomoću mačka
naredba. Stavio sam nekoliko redaka iz izlaza u blok ispod.
C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Primjer koda generiranog alatom curl naredbenog retka ********** * Sve opcije curl_easy_setopt() su dokumentirane 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);
Korištenje proxyja u CURL-u za pristup URL-u
Kao što je rečeno u uvodu, kovrča
naredba podržava širok raspon protokola kao što su FTP, SMTP, HTTPS, SOCKS itd. Ponekad korištenje proxy poslužitelja za prijenos datoteka postaje važno kada želite povećati brzinu prijenosa i zaštititi svoj identitet. kovrča
naredba se lako može koristiti za prijenos datoteka preko proxy poslužitelja dodavanjem -x
opcija za to.
Primjer:
curl -x [proxy_address]:[port] [URL]
U gornjem primjeru pretpostavio sam da vaš proxy ne zahtijeva provjeru autentičnosti. U slučaju da proxy zahtijeva autentifikaciju za početak prijenosa, možete koristiti sljedeću naredbu.
curl -u [korisničko ime]:[lozinka] -x [proxy_address]:[port] [URL]
Koristeći ovu jednostavnu metodu, možemo prenijeti datoteke preko proxy poslužitelja s opcijom -x
koristi se sa kovrča
naredba.
Zaključak
U ovom kratkom vodiču naučili smo kako kovrča
naredba se pokazala korisnom u preuzimanju sadržaja izravno s vašeg terminala. Također smo naučili o različitim opcijama dostupnim uz ovu naredbu za različite zadatke.