Com utilitzar l'ordre Curl a Linux

Una guia extensa que explica l'ús de l'ordre curl per obtenir pàgines web i descarregar fitxers directament des del vostre terminal

El rínxol L'ordre és una utilitat de línia d'ordres més interessant que Linux us ofereix. rínxol L'ordre permet a l'usuari recuperar fitxers del servidor.

rínxol és una opció popular entre els desenvolupadors d'aplicacions i els usuaris freqüents de Linux a causa del seu suport per a diversos protocols com RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FITXER, GOPHER, LDAP, LDAPS, POP3, POP3S, etc.

rínxol L'ordre fa molt més que buscar les pàgines web per a vostè. Conèixer les opcions disponibles amb aquesta comanda la fa més versàtil per al vostre ús. Anem a submergir-nos en el tutorial per entendre bé l'ús del rínxol comanda utilitzant alguns exemples breus.

Instal·lació

Abans d'utilitzar el rínxol comanda, comproveu si ja està instal·lat al vostre sistema. Utilitzeu l'ordre curl --versió per comprovar si rínxol està instal·lat.

En cas que si rínxol no està instal·lat, seguiu els passos següents.

En sistemes basats en Ubuntu i Debian, utilitzar:

sudo apt-get update
sudo apt-get install curl

A les distribucions RHEL, CentOs i Fedora, utilitzar:

sudo yum install curl

Ara utilitzeu el curl --versió comanda per assegurar-vos que està instal·lat correctament.

curl --versió

Sortida:

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. 0 librtmp/2.3 Data de llançament: 2018-01-24 Protocols: fitxer dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Característiques: Asynchrone IDSSN-IPVLM6 KERSLB SPLNT_ libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

Ara estem preparats per utilitzar el rínxol comandament.

Opcions disponibles amb l'ordre CURL

Primer donem un cop d'ull a algunes de les opcions destacades disponibles amb el rínxol comandament.

OpcióDescripció
-uper descarregar fitxers des d'un servidor FTP
-Cper reprendre una descàrrega interrompuda
-oper guardar el resultat de la rínxol comanda amb un nom de fitxer predefinit
-Iper obtenir les capçaleres HTTP d'un URL definit
-Oper guardar el resultat de la rínxol comanda amb el nom del fitxer original
--libcurlper generar el codi font C que utilitza libcurl per a l'opció especificada
-xutilitzar un proxy per accedir a l'URL
-#per mostrar la barra de progrés per mostrar l'estat de la descàrrega

Recuperació d'una pàgina web mitjançant CURL

El rínxol L'ordre, quan s'utilitza sense cap opció, obté el contingut de l'URL especificat a l'ordre.

Sintaxi:

curl [URL]

Exemple:

curl //totes les coses.com

Sortida:

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-incrustat{-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 ;posició:absolut!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;overflow flow-y:auto!important;posició:absoluta!important;superior:0!important;esquerra:0!important;dreta:0!important;inferior:0!important;marge:0!important;display:bloc!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{posició:relative!important;border-top:1px sòlid 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}[subscripcions -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>[actualització]{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[resizeble-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [carregar-més] [carregar-més-botó],ampli-llista[carregar-més] [carregar-més-final],ampli-llista[carregar-més] [carregar-més-fallit],ampliar-llista[carregar -més] [carrega-més-càrrega]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[autònom]{min-height:1px !important;display:block!important;altura:100%!important;marge:0!important;padding:0!important;desbordament:ocult!important;amplada:100%!important}amp-story[autònom]{background- color:#202125!important;posició:relativa!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([distància]):not([active]){transform:translateY(1000vh)!important }amp-autocomplete{posició:relative!important;display:inline-block!important}amp-autocomplete>entrada,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0.33) }.i-amphtml-autocomplete-results,amp-autocomplete>entrada,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden} amp-script[nodom]{posició:fixat!important;superior:0!important;amplada:1px!important;alçada:1px!important;desbordament:ocult!important;visibilitat:ocult} 

Aquí, el contingut de la pàgina web s'obté directament al vostre terminal com a codi font.

Podeu utilitzar opcions -o i -O amb el rínxol comanda per emmagatzemar aquest contingut en un fitxer.

Quan -o s'utilitza l'opció, el contingut de l'URL es desa al vostre directori actual amb un nom de fitxer definit per l'usuari.

Sintaxi:

curl -o [nom_fitxer_definit per l'usuari] [URL]

Exemple:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Total % rebut % Xferd Velocitat mitjana Temps Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

En aquest exemple, el contingut de l'URL "allthings.how" es desa com a fitxer HTML anomenat ath.html al meu directori de treball actual. En obrir aquest fitxer HTML, seré redirigit a la pàgina web que s'ha desat.

Baixant fitxers mitjançant l'ordre CURL

Utilitzant el -O L'opció amb l'ordre curl també desa el contingut o la pàgina web o un paquet que es pot descarregar com a fitxer, però desa aquest fitxer amb el seu nom original.

Vegem-ho a través d'un exemple:

Exemple:

Aquí he utilitzat el rínxol comanda amb -O opció per descarregar un paquet Ubuntu anomenat "cherrytree_0.37.6-1.1_all.deb'des del dipòsit de paquets d'Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Total % rebut % Xferd Velocitat mitjana Temps Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Sortida:

trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$

Per tant, ara el paquet es descarrega i es desa al directori de treball actual (CWD) amb el seu nom original.

Es mostra una barra de progrés mentre es baixa un fitxer

Hi ha una modificació estètica més disponible mentre s'utilitza rínxol comanda per descarregar un fitxer. Podeu veure el progrés de la descàrrega de fitxers en forma de barra de progrés al vostre terminal. Només cal que afegiu el -# opció amb la vostra comanda per descarregar un fitxer.

Vegem un exemple d'aquest retoc.

Sintaxi:

curl -# -O [URL]

Exemple:

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$ 

Sortida:

gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$ 

En aquesta sortida, podeu observar que he baixat un paquet anomenat "emacs-defaults_47.0.tar.xz' al meu CWD i la barra de progrés es mostra al terminal mentre la descàrrega estava en curs.

Es reprèn la descàrrega interrompuda a CURL

Moltes vegades, es pot produir una situació en què hagueu de descarregar fitxers de mida més gran. De vegades, a causa d'alguns motius, com ara una fallada d'alimentació o una fallada de la xarxa, la descàrrega pot avortar-se a la meitat del procés sense descarregar el fitxer complet. Encara que premeu Ctrl+C al terminal, el procés s'avorta.

El rínxol comanda quan s'utilitza amb el -C L'opció reprèn la descàrrega interrompuda.

Sintaxi:

curl -C - -O [URL]

Exemple:

En aquesta il·lustració, he intentat descarregar la imatge ISO d'Ubuntu 20.04 des del lloc web d'Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.16002509094 Total Velocitat15090941150909111509091115090911509091150090911500909115090911509094 Hora Hora Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Aquí, he avortat deliberadament el procés de descàrrega per Ctrl+C.

Ara faré servir el -C opció amb el rínxol comanda per reprendre la descàrrega interrompuda des del mateix lloc web d'origen.

Sortida:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600024 ** Transferència des de 1600024 15090914 posició de bytes 1851392 % Total % rebuts % Xferd Velocitat mitjana Temps Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 0 2654M 0 20,2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

La descàrrega s'ha recollit des d'on es va avortar.

Baixant fitxers des d'un servidor FTP mitjançant CURL

És bastant fàcil amb el rínxol comanda per descarregar un fitxer des del servidor FTP mitjançant l' -u opció. Heu de posar el nom d'usuari i la contrasenya a l'ordre abans d'introduir l'URL.

Sintaxi:

curl -u [nom d'usuari]:[contrasenya] [URL]

Per a la il·lustració, faré servir un FTP públic en línia.

Exemple:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % Total % Mitjana Xferd rebut Velocitat Temps Temps Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Aquí, he baixat un fitxer anomenat "16-set-20-16-0-0.csv’ d'aquest servidor ftp i el vaig desar amb el seu nom original al meu CWD. Comprovaré el fitxer descarregat amb el ls comandament.

gaurav@ubuntu:~/workspace$ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 set 16 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 16 set 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16 set 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16 de setembre 11:45 ath.html gaurav@ubuntu:~/workspace$

Baixant diversos fitxers junts mitjançant CURL

Baixant diversos fitxers alhora amb el rínxol comandar és una tasca molt senzilla. Només feu servir el -O opció amb el rínxol comanda similar a la que hem realitzat als blocs anteriors.

Sintaxi:

curl -O [URL-1] -O [URL-2] -O[URL-n]

Exemple:

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 % Total % rebut % Xferd Velocitat mitjana Temps Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 100 63500 100 63500 0 0 55458 0 0:00 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $ 

En aquest exemple, he baixat dos paquets diferents del dipòsit d'Ubuntu.

Sortida:

gaurav@ubuntu:~/workspace$ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 set 16 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 16 set 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 16 set 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 set 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 16 de setembre 11:45 ath.html gaurav@ubuntu:~/workspace$ 

Els dos paquets es descarreguen al mateix temps mitjançant l'ordre curl.

Obtenció de capçaleres HTTP d'un URL amb CURL

Els camps de capçaleres HTTP de qualsevol URL contenen informació útil com l'agent d'usuari, el tipus de contingut, la codificació, etc. Aquests fitxers de capçalera també proporcionen informació sobre l'objecte enviat al cos del missatge. També s'obtenen detalls sobre la sol·licitud i la resposta d'aquestes capçaleres HTTP.

Pots fer servir rínxol comanda amb -I opció per obtenir aquestes capçaleres HTTP d'un URL.

Sintaxi:

curl -I [URL]

Exemple:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 D'acord Tipus de contingut: text/html; charset=ISO-8859-1 P3P: CP="Aquesta no és una política de P3P! Vegeu g.co/p3phelp per obtenir més informació." Data: dimecres, 16 de setembre de 2020 11:17:00 GMT Servidor: gws X-XSS-Protecció: 0 X-Frame-Opcions: SAMEORIGIN Codificació de transferència: fragmentat Caduca: dimecres, 16 de setembre de 2020 11:17:00 GMT Cache- Control: Set-Cookie privat: 1P_JAR=2020-09-16-11; caduca=dv, 16 d'octubre de 2020 11:17:00 GMT; camí=/; domini=.google.com; Asseguri Set-Cookie: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; caduca=dj, 18-mar-2021 11:17:00 GMT; camí=/; domini=.google.com; HttpOnly gaurav@ubuntu:~/workspace$

En aquest exemple he obtingut les capçaleres HTTP de 'www.firefox.com‘.

Obtenció del codi font C mitjançant CURL

Utilitzant rínxol comanda amb el --libcurl L'opció pot obtenir el codi font C. Això no té un ús significatiu per als usuaris profans, però pot resultar molt útil per als programadors de sistemes, els analistes de seguretat i els desenvolupadors d'aplicacions.

Sintaxi:

curl [URL] > nom de fitxer --libcurl [nom_fitxer_codi]

Exemple:

En aquest exemple, he obtingut el contingut de l'URL tot.com i el va emmagatzemar en un fitxer anomenat gy_ath.html. El codi font C s'emmagatzema per separat al fitxer font.c dossier.

curl //www.allthings.how > gy_ath.html --libcurl source.c 

Sortida:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Total % rebut % Xferd Velocitat mitjana Temps Temps Descàrrega actual Carrega Total gastat Velocitat esquerra 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Comprovem ara els fitxers descarregats.

gaurav@ubuntu:~/workspace$ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 set 16 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 16 set 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 16 set 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 16 de setembre 17:13 source.c gaurav@ubuntu:~/workspace$

El font.c fitxer conté el codi font. Això es pot visualitzar al terminal mitjançant el gat comandament. He posat unes quantes línies de la sortida al bloc indicat a continuació.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Codi de mostra generat per l'eina de línia d'ordres curl ********** * Totes les opcions curl_easy_setopt() estan documentades a: * //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);

Ús d'un proxy a CURL per accedir a un URL

Com s'ha comentat a la introducció, el rínxol L'ordre admet una àmplia gamma de protocols com FTP, SMTP, HTTPS, SOCKS, etc. De vegades, utilitzar un servidor intermediari per transferir fitxers esdevé important quan voleu millorar la velocitat de la transferència i també protegir la vostra identitat. rínxol L'ordre es pot utilitzar fàcilment per transferir fitxers al servidor intermediari afegint el fitxer -x opció a ell.

Exemple:

curl -x [adreça_proxy]:[port] [URL]

A l'exemple anterior, he suposat que el vostre proxy no requereix autenticació. En cas que el servidor intermediari requereixi autenticació per iniciar la transferència, podeu utilitzar l'ordre següent.

curl -u [nom d'usuari]:[contrasenya] -x [adreça_proxy]:[port] [URL]

Mitjançant aquest mètode senzill, podem transferir fitxers a través d'un servidor intermediari amb opció -x utilitzat amb el rínxol comandament.

Conclusió

En aquest breu tutorial, hem après com rínxol L'ordre demostra ser útil per descarregar contingut directament des del terminal. També vam conèixer les diferents opcions disponibles amb aquesta ordre per utilitzar-les per a diferents tasques.