Isang malawak na gabay na nagpapaliwanag sa paggamit ng curl command para kumuha ng mga webpage at mag-download ng mga file mula mismo sa iyong terminal
Ang kulot
Ang command ay isa pang kawili-wiling command-line utility na iniaalok sa iyo ng Linux. kulot
Binibigyang-daan ng command ang user na kumuha ng mga file mula sa server.
kulot
ay isang popular na pagpipilian ng mga developer ng application at madalas na gumagamit ng Linux dahil sa suporta nito para sa isang bilang ng mga protocol tulad ng RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S, atbp.
kulot
Ang command ay higit pa sa pagkuha ng mga web page para sa iyo. Ang pag-alam sa mga opsyon na magagamit sa command na ito ay ginagawang mas maraming nalalaman para sa iyong paggamit. Sumisid tayo sa tutorial upang makakuha ng isang mahusay na kaalaman sa paggamit ng kulot
utos gamit ang ilang maikling halimbawa.
Pag-install
Bago gamitin ang kulot
command, tingnan kung naka-install na ito sa iyong system. Gamitin ang utos curl --bersyon
upang suriin kung kulot
ay naka-install.
Sa kaso kung kulot
ay hindi naka-install, gamitin ang mga sumusunod na hakbang.
Sa mga sistemang nakabatay sa Ubuntu at Debian, gamitin:
sudo apt-get update
sudo apt-get install curl
Sa RHEL, CentOs at Fedora distros, gamitin:
sudo yum install curl
Ngayon gamitin ang curl --bersyon
command upang matiyak na ito ay maayos na naka-install.
curl --bersyon
Output:
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.30. . libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$
Ngayon ay handa na kaming gamitin ang kulot
utos.
Available ang mga opsyon gamit ang CURL command
Tingnan muna natin ang ilan sa mga kilalang opsyon na magagamit sa kulot
utos.
Pagpipilian | Paglalarawan |
-u | upang mag-download ng mga file mula sa isang FTP server |
-C | upang ipagpatuloy ang isang naantalang pag-download |
-o | upang i-save ang resulta ng kulot command na may paunang natukoy na filename |
-ako | upang makuha ang mga header ng HTTP ng isang tinukoy na URL |
-O | upang i-save ang resulta ng kulot command na may orihinal na filename |
--libcurl | upang i-output ang C source code na gumagamit libcurl para sa tinukoy na opsyon |
-x | para gumamit ng proxy para ma-access ang URL |
-# | upang ipakita ang progress bar upang ipakita ang katayuan sa pag-download |
Pagkuha ng webpage gamit ang CURL
Ang kulot
command, kapag ginamit nang walang anumang opsyon, kinukuha ang nilalaman ng URL na tinukoy sa command.
Syntax:
kulot [URL]
Halimbawa:
curl //allthings.how
Output:
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!important;position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0!important;display:block!important} 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}[mga subscription -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[resizable-children]>.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] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px !important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}amp-story[standalone]{background- color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-ampftm l-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([distansya]):not([active]){transform:translateY(1000vh)!important }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}
Dito, ang nilalaman ng webpage ay direktang kinukuha sa iyong terminal bilang source code.
Maaari kang gumamit ng mga pagpipilian -o
at -O
kasama ang kulot
command na iimbak ang nilalamang ito sa isang file.
Kailan -o
ang opsyon ay ginagamit, ang nilalaman ng URL ay nai-save sa iyong kasalukuyang direktoryo na may filename na tinukoy ng gumagamit.
Syntax:
curl -o [userdefined_filename] [URL]
Halimbawa:
gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Kabuuan % Natanggap % Xferd Average na Bilis Oras Oras Oras Kasalukuyang Pag-upload ng Dload Kabuuang Nagastos Kaliwang Bilis 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$
Sa halimbawang ito, ang nilalaman mula sa URL na 'allthings.how' ay nai-save bilang isang HTML file na pinangalanang ath.html sa aking kasalukuyang gumaganang direktoryo. Sa pagbubukas ng HTML file na ito, ire-redirect ako sa webpage na naka-save.
Nagda-download ng mga file gamit ang CURL command
Gamit ang -O
Ang opsyon na may curl command ay nagse-save din ng content o webpage o isang nada-download na package bilang isang file ngunit sine-save ang file na ito gamit ang orihinal nitong pangalan.
Tingnan natin ito sa pamamagitan ng isang halimbawa:
Halimbawa:
Dito ko ginamit ang kulot
utos na may -O
opsyon na mag-download ng Ubuntu package na pinangalanang 'cherrytree_0.37.6-1.1_all.deb' mula sa imbakan ng pakete ng Ubuntu.
gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Kabuuan % Natanggap % Xferd Average na Bilis ng Oras Oras Oras Kasalukuyang Dload Upload Kabuuang Ginastos Kaliwang Bilis 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$
Output:
trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$
Kaya, ang package ay nai-download at nai-save na ngayon sa kasalukuyang working directory (CWD) kasama ang orihinal na pangalan nito.
Pagpapakita ng Progress Bar habang nagda-download ng file
May isa pang aesthetic modification na magagamit habang ginagamit ang kulot
command na mag-download ng file. Maaari mong tingnan ang progreso ng iyong pag-download ng file sa anyo ng isang Progress Bar papunta sa iyong terminal. Kailangan mo lamang idagdag ang -#
opsyon sa iyong command na mag-download ng file.
Tingnan natin ang isang halimbawa ng tweak na ito.
Syntax:
curl -# -O [URL]
Halimbawa:
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$
Output:
gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$
Sa output na ito, maaari mong obserbahan na nag-download ako ng isang package na pinangalanang 'emacs-defaults_47.0.tar.xz' sa aking CWD at ang progress bar ay ipinapakita sa terminal habang ang pag-download ay isinasagawa.
Ipinagpapatuloy ang naantalang pag-download sa CURL
Maraming beses, maaaring magkaroon ng sitwasyon kung saan kailangan mong mag-download ng mga file na may mas malaking sukat. Minsan dahil sa ilang kadahilanan tulad ng power failure o network failure ang pag-download ay maaaring ma-abort sa kalagitnaan ng proseso nang hindi dina-download ang kumpletong file. Kahit pinindot mo Ctrl+C
sa terminal, maa-abort ang proseso.
Ang kulot
utos kapag ginamit sa -C
ipagpatuloy ng opsyon ang naantalang pag-download.
Syntax:
curl -C - -O [URL]
Halimbawa:
Sa paglalarawang ito, sinubukan kong i-download ang imahe ng Ubuntu 20.04 ISO mula sa website ng Ubuntu.
gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-154 Oras Oras Oras Kasalukuyang Pag-upload ng Dload Kabuuang Nagastos Kaliwang Bilis 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C
Dito, sinadya kong i-abort ang proseso ng pag-download ni Ctrl+C
.
Ngayon ay gagamitin ko ang -C
opsyon kasama ang kulot
command na ipagpatuloy ang naantalang pag-download mula sa parehong pinagmulang website.
Output:
gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.16002509291.16002509291 posisyon ng byte 1851392 % Kabuuan % Natanggap % Xferd Average na Bilis ng Oras Oras Oras Kasalukuyang Pag-upload ng Dload Kabuuang Ginastos Kaliwang Bilis 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 9
Ang pag-download ay kinuha mula sa kung saan ito na-abort.
Pag-download ng mga file mula sa isang FTP server gamit ang CURL
Ito ay medyo madali sa kulot
command na mag-download ng file mula sa FTP server gamit ang -u
opsyon. Kailangan mong ilagay ang username at password sa command bago ipasok ang URL.
Syntax:
curl -u [username]: [password] [URL]
Para sa paglalarawan, gagamit ako ng online na pampublikong FTP.
Halimbawa:
gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Total % Natanggap % Xferd Average Bilis Oras Oras Oras Kasalukuyang Pag-upload ng Dload Kabuuang Ginastos Kaliwang Bilis 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$
Dito, nag-download ako ng file na pinangalanang '16-Sep-20-16-0-0.csv’ mula sa ftp server na ito at na-save ito kasama ang orihinal nitong pangalan sa aking CWD. Susuriin ko ang na-download na file gamit ang ls
utos.
gaurav@ubuntu:~/workspace$ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 Set 16 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 Set 16 11:45 ath.html gaurav@ubuntu:~/workspace$
Pagda-download ng maraming file nang magkasama gamit ang CURL
Pag-download ng maraming file nang sabay-sabay gamit ang kulot
Ang utos ay isang napakasimpleng gawain. Gamitin mo lang ang -O
opsyon kasama ang kulot
utos na katulad sa paraang ginawa namin sa mga bloke sa itaas.
Syntax:
curl -O [URL-1] -O [URL-2] -O[URL-n]
Halimbawa:
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 % Kabuuan % Natanggap % Xferd Average na Bilis Oras Oras Oras Kasalukuyang Pag-upload ng Dload Kabuuang Nagastos Kaliwang Bilis 100 63500 100 63500 0 0 554:58 0 0 554:58 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $
Sa halimbawang ito, nag-download ako ng dalawang magkaibang mga pakete mula sa repositoryo ng Ubuntu.
Output:
gaurav@ubuntu:~/workspace$ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 Set 16 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 Sep 16 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 Set 16 16:29 apache2_2.4. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 Set 16 11:45 ath.html gaurav@ubuntu:~/workspace$
Ang dalawang pakete ay nai-download nang sabay-sabay gamit ang curl command.
Kinukuha ang mga header ng HTTP ng isang URL na may CURL
Ang mga field ng HTTP Header ng anumang URL ay naglalaman ng kapaki-pakinabang na impormasyon tulad ng user agent, uri ng nilalaman, pag-encode, atbp. Ang mga header file na ito ay nagbibigay din ng impormasyon tungkol sa bagay na ipinadala sa katawan ng mensahe.Ang mga detalye tungkol sa kahilingan at tugon ay nakukuha rin mula sa mga header ng HTTP na ito.
Pwede mong gamitin kulot
utos na may -ako
opsyon upang makuha ang mga HTTP header na ito ng isang URL.
Syntax:
curl -I [URL]
Halimbawa:
gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Ito ay hindi isang P3P na patakaran! Tingnan ang g.co/p3phelp para sa higit pang impormasyon." Petsa: Miy, 16 Set 2020 11:17:00 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Mag-e-expire: Miy, 16 Set 2020 11:17:00 GMT Cache- Kontrol: pribadong Set-Cookie: 1P_JAR=2020-09-16-11; mag-e-expire=Biy, 16-Okt-2020 11:17:00 GMT; landas=/; domain=.google.com; Secure Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; mag-e-expire=Huwe, 18-Mar-2021 11:17:00 GMT; landas=/; domain=.google.com; HttpOnly gaurav@ubuntu:~/workspace$
Sa halimbawang ito, kinuha ko ang mga header ng HTTP ng 'www.firefox.com‘.
Kinukuha ang C-Source Code gamit ang CURL
Gamit kulot
utos kasama ang --libcurl
maaaring kunin ng opsyon ang C source code. Ito ay walang makabuluhang paggamit sa mga karaniwang gumagamit ngunit maaaring patunayan na napakalaking tulong para sa mga System Programmer, Security Analyst at Application Developers.
Syntax:
curl [URL] > filename --libcurl [code_filename]
Halimbawa:
Sa halimbawang ito, kinuha ko ang nilalaman ng URL lahat ng bagay.paano at inimbak ito sa isang file na pinangalanan gy_ath.html. Ang C source code ay hiwalay na nakaimbak sa pinagmulan.c file.
curl //www.allthings.how > gy_ath.html --libcurl source.c
Output:
gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Kabuuan % Natanggap % Xferd Average na Bilis Oras Oras Oras Kasalukuyang Pag-upload ng Dload Kabuuang Nagastos Kaliwang Bilis 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$
Suriin natin ngayon ang mga na-download na file.
gaurav@ubuntu:~/workspace$ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 Set 16 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 Set 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 Set 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 Set 16 17:13 source.c gaurav@ubuntu:~/workspace$
Ang pinagmulan.c file ay naglalaman ng source code. Ito ay maaaring ipakita sa terminal gamit ang pusa
utos. Naglagay ako ng ilang linya mula sa output sa ibinigay na bloke sa ibaba.
C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Sample code na nabuo ng curl command line tool ********** * Nakadokumento ang lahat ng opsyon sa curl_easy_setopt() sa: * //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);
Paggamit ng proxy sa CURL upang ma-access ang isang URL
Gaya ng tinalakay sa panimula, ang kulot
Sinusuportahan ng command ang isang malawak na hanay ng mga protocol tulad ng FTP, SMTP, HTTPS, SOCKS atbp. Minsan ang paggamit ng proxy server para sa paglilipat ng mga file ay nagiging mahalaga kapag nais mong pagandahin ang bilis ng iyong paglipat at protektahan din ang iyong pagkakakilanlan. kulot
Ang command ay madaling magamit upang maglipat ng mga file sa proxy server sa pamamagitan ng pagdaragdag ng -x
pagpipilian dito.
Halimbawa:
curl -x [proxy_address]:[port] [URL]
Sa halimbawa sa itaas, ipinapalagay ko na ang iyong proxy ay hindi nangangailangan ng pagpapatunay. Sa kaso kung ang proxy ay nangangailangan ng pagpapatunay upang simulan ang paglipat, maaari mong gamitin ang sumusunod na command.
curl -u [username]: [password] -x [proxy_address]:[port] [URL]
Gamit ang simpleng paraan na ito, maaari kaming maglipat ng mga file sa pamamagitan ng proxy server na may opsyon -x
ginamit kasama ng kulot
utos.
Konklusyon
Sa maikling tutorial na ito, natutunan namin kung paano kulot
Ang command ay nagpapatunay na nakakatulong sa pag-download ng content nang direkta mula sa iyong terminal. Nalaman din namin ang tungkol sa iba't ibang opsyon na magagamit sa command na ito na gagamitin para sa iba't ibang gawain.