Come usare il comando Curl in Linux

Una guida completa che spiega l'uso del comando curl per recuperare pagine Web e scaricare file direttamente dal tuo terminale

Il arricciare command è un'altra interessante utility da riga di comando che Linux ha da offrirti. arricciare Il comando consente all'utente di recuperare i file dal server.

arricciare è una scelta popolare tra gli sviluppatori di applicazioni e gli utenti Linux frequenti grazie al supporto per numerosi protocolli come RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S, ecc.

arricciare comando fa molto di più che recuperare le pagine web per te. Conoscere le opzioni disponibili con questo comando lo rende più versatile per il tuo utilizzo. Immergiamoci nel tutorial per avere una buona conoscenza dell'uso del arricciare comando utilizzando alcuni brevi esempi.

Installazione

Prima di utilizzare il arricciare comando, controlla se è già installato sul tuo sistema. Usa il comando curl --versione per verificare se arricciare è installato.

Nel caso in cui arricciare non è installato, utilizzare i passaggi seguenti.

Sui sistemi basati su Ubuntu e Debian, uso:

sudo apt-get update
sudo apt-get install curl

Sulle distro RHEL, CentOs e Fedora, uso:

sudo yum install curl

Ora usa il curl --versione comando per assicurarsi che sia installato correttamente.

curl --versione

Produzione:

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 di rilascio: 24/01/2018 Protocolli: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Caratteristiche: AsynchDNS IDN IPv6 Largefile GSS-API NTLM SPNWEGO Kerberos SSL libz TLS-SRP HTTP2 UnixSocket HTTPS-proxy PSL gaurav@ubuntu:~$ 

Ora siamo pronti per usare il arricciare comando.

Opzioni disponibili con il comando CURL

Diamo prima uno sguardo ad alcune delle opzioni importanti disponibili con il arricciare comando.

OpzioneDescrizione
-uper scaricare file da un server FTP
-Cper riprendere un download interrotto
-oper salvare il risultato del arricciare comando con un nome file predefinito
-IOper ottenere le intestazioni HTTP di un URL definito
-Oper salvare il risultato del arricciare comando con il nome del file originale
--libcurlper emettere il codice sorgente C che usa libcurl per l'opzione specificata
-Xutilizzare un proxy per accedere all'URL
-#per visualizzare la barra di avanzamento per mostrare lo stato del download

Recupero di una pagina web utilizzando CURL

Il arricciare comando, se utilizzato senza alcuna opzione, recupera il contenuto dell'URL specificato nel comando.

Sintassi:

arricciare [URL]

Esempio:

curl //tutto.come

Produzione:

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>corpo,html.i-amphtml-singledoc>corpo{overflow:visibile!importante}html.i-amphtml-fie:non (.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:visibile!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 flusso-y:auto!importante;posizione:assoluto!importante;alto:0!importante;sinistra:0!importante;destra:0!importante;fondo:0!importante;margine:0!importante;display:blocco!importante} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scroll: touch!importante}#i-amphtml-wrapper>corpo{posizione:relativo!importante;bordo-top:1px solido trasparente!importante}#i-amphtml-wrapper+corpo{visibilità:visibile}#i-amphtml-wrapper+corpo .i-amphtml-lightbox-elemento,#i-amphtml-wrapper+corpo[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+corpo[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}[subscriptions -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 [carica-altro] [carica-altro-pulsante],amp-list[carica-altro] [carica-altro-end],amp-list[carica-altro] [carica-altro-fallito],amp-list[carica -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!importante;altezza:100%!importante;margine:0!importante;imbottitura:0!importante;overflow:nascosto!importante;larghezza:100%!importante}amp-story[standalone]{background- 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([distanza]):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]{posizione:fissa!importante;top:0!importante;larghezza:1px!importante;altezza:1px!importante;overflow:nascosto!importante;visibilità:nascosto} 

Qui, il contenuto della pagina web viene scaricato direttamente sul tuo terminale come codice sorgente.

Puoi usare le opzioni -o e -O con il arricciare comando per memorizzare questo contenuto in un file.

quando -o viene utilizzata l'opzione, il contenuto dell'URL viene salvato nella directory corrente con un nome file definito dall'utente.

Sintassi:

curl -o [nomefile_definito dall'utente] [URL]

Esempio:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % Totale % ricevuti % Xferd Velocità media Tempo Tempo Tempo Dload attuale Upload Totale speso Velocità sinistra 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

In questo esempio, il contenuto dell'URL "allthings.how" viene salvato come file HTML denominato ath.html nella mia directory di lavoro corrente. All'apertura di questo file HTML, verrò reindirizzato alla pagina Web che è stata salvata.

Download di file utilizzando il comando CURL

Usando il -O L'opzione con il comando curl salva anche il contenuto o la pagina web o un pacchetto scaricabile come file ma salva questo file con il suo nome originale.

Vediamolo attraverso un esempio:

Esempio:

Qui ho usato il arricciare comando con -O opzione per scaricare un pacchetto Ubuntu denominato 'cherrytree_0.37.6-1.1_all.deb' dal repository del pacchetto Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % Totale % ricevuto % Xferd Velocità media Tempo Tempo Tempo Caricamento Dload corrente Velocità totale spesa rimanente 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

Produzione:

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

Quindi, il pacchetto viene ora scaricato e salvato nella directory di lavoro corrente (CWD) con il suo nome originale.

Visualizzazione di una barra di avanzamento durante il download di un file

C'è un'altra modifica estetica disponibile durante l'utilizzo del arricciare comando per scaricare un file. Puoi visualizzare lo stato di avanzamento del download del file sotto forma di barra di avanzamento sul tuo terminale. Devi solo aggiungere il -# opzione con il comando per scaricare un file.

Vediamo un esempio di questo tweak.

Sintassi:

curl -# -O [URL]

Esempio:

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$ 

Produzione:

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

In questo output, puoi osservare che ho scaricato un pacchetto chiamato "emacs-defaults_47.0.tar.xz' nel mio CWD e la barra di avanzamento viene visualizzata nel terminale mentre il download era in corso.

Ripresa del download interrotto in CURL

Molte volte, può verificarsi una situazione in cui è necessario scaricare file di dimensioni maggiori. A volte a causa di alcuni motivi come un'interruzione dell'alimentazione o un errore di rete, il download potrebbe interrompersi a metà del processo senza scaricare il file completo. Anche se premi Ctrl+C nel terminale, il processo viene interrotto.

Il arricciare comando quando usato con il -C l'opzione riprende il download interrotto.

Sintassi:

curl -C - -O [URL]

Esempio:

In questa illustrazione, ho provato a scaricare l'immagine ISO di Ubuntu 20.04 dal sito Web di Ubuntu.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 % % totale ricevuta % velocità media Xferd Tempo Tempo Tempo Attuale Dload Upload Totale speso Sinistra Velocità 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

Qui, ho deliberatamente interrotto il processo di download da Ctrl+C.

Ora userò il -C opzione con il arricciare comando per riprendere il download interrotto dallo stesso sito Web di origine.

Produzione:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974 ** Ripresa del trasferimento da posizione byte 1851392 % Totale % ricevuti % Xferd Velocità media Tempo Tempo Tempo Dload attuale Caricamento totale speso Velocità sinistra 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278

Il download è stato ripreso da dove era stato interrotto.

Scaricare file da un server FTP usando CURL

È abbastanza facile con il arricciare comando per scaricare un file dal server FTP utilizzando il -u opzione. Devi inserire il nome utente e la password nel comando prima di inserire l'URL.

Sintassi:

curl -u [nome utente]:[password] [URL]

Per l'illustrazione, utilizzerò un FTP pubblico online.

Esempio:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % % totale ricevuta % media Xferd Velocità Tempo Tempo Tempo Caricamento caricamento corrente Totale speso a sinistra Velocità 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

Qui ho scaricato un file chiamato '16-set-20-16-0-0.csv' da questo server ftp e l'ho salvato con il suo nome originale nel mio CWD. Controllerò il file scaricato usando il ls comando.

gaurav@ubuntu:~/workspace$ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 settembre 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-set-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16 settembre 11:45 ath.html gaurav@ubuntu:~/workspace$

Scaricare più file insieme usando CURL

Scaricare più file contemporaneamente utilizzando il arricciare comando è un compito molto semplice. Usa solo il -O opzione con il arricciare comando simile al modo in cui abbiamo eseguito nei blocchi precedenti.

Sintassi:

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

Esempio:

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 % Totale % ricevuta % Xferd Velocità media Tempo Tempo Tempo caricamento caricamento corrente Totale speso Velocità residua 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 $ 

In questo esempio, ho scaricato due pacchetti diversi dal repository Ubuntu.

Produzione:

gaurav@ubuntu:~/workspace$ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 16 settembre 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-set-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 16 set 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 16 set 16:29 apache2_2.4.29. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16 settembre 11:45 ath.html gaurav@ubuntu:~/workspace$ 

I due pacchetti vengono scaricati contemporaneamente utilizzando il comando curl.

Recupero delle intestazioni HTTP di un URL con CURL

I campi delle intestazioni HTTP di qualsiasi URL contengono informazioni utili come l'agente utente, il tipo di contenuto, la codifica, ecc. Questi file di intestazione forniscono anche informazioni sull'oggetto inviato nel corpo del messaggio. I dettagli sulla richiesta e la risposta si ottengono anche da queste intestazioni HTTP.

Puoi usare arricciare comando con -IO opzione per ottenere queste intestazioni HTTP di un URL.

Sintassi:

curl -I [URL]

Esempio:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="Questa non è una politica P3P! Vedi g.co/p3phelp per maggiori informazioni." Data: Mer, 16 Set 2020 11:17:00 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Scade: Mer 16 Set 2020 11:17:00 GMT Cache- Controllo: Set-Cookie privato: 1P_JAR=2020-09-16-11; scade=ven, 16-ott-2020 11:17:00 GMT; percorso=/; dominio=.google.com; Secure Set-Cookie: NID=204=SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunGb630PoPJ6A6D scade=Gio, 18-Mar-2021 11:17:00 GMT; percorso=/; dominio=.google.com; HttpOnly gaurav@ubuntu:~/workspace$

In questo esempio ho recuperato le intestazioni HTTP di "www.firefox.com‘.

Recupero del codice C-Source utilizzando CURL

Usando arricciare comando con il --libcurl l'opzione può recuperare il codice sorgente C. Questo non ha un uso significativo per gli utenti profani, ma può rivelarsi molto utile per i programmatori di sistema, gli analisti della sicurezza e gli sviluppatori di applicazioni.

Sintassi:

curl [URL] > nome file --libcurl [nome file_codice]

Esempio:

In questo esempio, ho recuperato il contenuto dell'URL tutto.come e l'ho memorizzato in un file chiamato gy_ath.html. Il codice sorgente C è memorizzato separatamente nel fonte.c file.

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

Produzione:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % Totale % ricevuto % Xferd Velocità media Tempo Tempo Tempo corrente Dload Upload Totale speso Velocità sinistra 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

Controlliamo ora i file scaricati.

gaurav@ubuntu:~/workspace$ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 16 settembre 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 settembre 17:13 source.c gaurav@ubuntu:~/workspace$

Il fonte.c file contiene il codice sorgente. Questo può essere visualizzato sul terminale utilizzando il gatto comando. Ho inserito alcune righe dall'output nel blocco indicato di seguito.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* Codice di esempio generato dallo strumento a riga di comando curl ********** * Tutte le opzioni curl_easy_setopt() sono documentate at: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html ********************************* ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; RICCIO *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);

Utilizzo di un proxy in CURL per accedere a un URL

Come discusso nell'introduzione, il arricciare Il comando supporta un'ampia gamma di protocolli come FTP, SMTP, HTTPS, SOCKS ecc. A volte l'utilizzo di un server proxy per il trasferimento di file diventa importante quando si desidera migliorare la velocità del trasferimento e anche proteggere la propria identità. arricciare comando può essere facilmente utilizzato per trasferire file sul server proxy aggiungendo il -X opzione ad esso.

Esempio:

curl -x [indirizzo_proxy]:[porta] [URL]

Nell'esempio sopra, ho assunto che il tuo proxy non richieda autenticazione. Nel caso in cui il proxy richieda l'autenticazione per avviare il trasferimento, è possibile utilizzare il seguente comando.

curl -u [nome utente]:[password] -x [indirizzo_proxy]:[porta] [URL]

Usando questo semplice metodo, possiamo trasferire file tramite un server proxy con opzione -X usato con il arricciare comando.

Conclusione

In questo breve tutorial, abbiamo imparato come arricciare comando si rivela utile per scaricare contenuti direttamente dal tuo terminale. Abbiamo anche appreso delle diverse opzioni disponibili con questo comando da utilizzare per varie attività.