Come utilizzare cURL per il trasferimento dati da riga di comando e altro ancora

Guida ai comandi Curl in evidenza

Se hai seguito le istruzioni di installazione focalizzate sul terminale per le applicazioni Linux per un po’, probabilmente sei già venuto a conoscenza del comando curl a un certo punto. cURL è uno strumento da riga di comando per il trasferimento di dati con URL. Uno degli usi più semplici è scaricare un file tramite la riga di comando. Tuttavia, questo è ingannevole, poiché cURL è uno strumento incredibilmente potente che può fare molto di più.

Indice dei contenuti

  • Cos’è cURL?
  • Installazione
  • Utilizzo di cURL
  • Seguire i reindirizzamenti
  • Riprendere un download
  • Scaricare più di un file
  • Scaricare con autenticazione
  • Suddividere e unire file
  • Altre funzionalità utili
  • cURL vs. Wget
  • Domande frequenti
  • Conclusione

Leggi anche: Come copiare e incollare testo, file e cartelle nel terminale Linux

Cos’è cURL?

Inizialmente scritto da Daniel Sternberg nel 1996 per recuperare dati finanziari dai server web e trasmetterli ai canali IRC, cURL è evoluto per diventare uno strumento potente per ottenere dati senza dover utilizzare un browser. Se utilizzi sempre il terminale, questo sarà uno degli strumenti più importanti nel tuo arsenale.

Nella maggior parte delle distribuzioni Linux, cURL è preinstallato nel sistema e puoi usarlo immediatamente. Anche se non è installato, si trova nella maggior parte dei repository, quindi puoi facilmente installarlo tramite il Centro Software.

Per Windows, non ha un comando “simile a curl”, e macOS ha cURL preinstallato ma non offre tante opzioni quanto la versione Linux.

Leggi anche: Come utilizzare il comando dd in Linux

Installazione

Prima di procedere ulteriormente, dobbiamo assicurarci che cURL sia già installato sul nostro sistema.

Linux

Nelle distro basate su Debian/Ubuntu, utilizza il seguente comando per installare cURL:

sudo apt install curl

In distro basate su Arch:

sudo pacman -S curl

In Fedora/CentOS/RHEL:

sudo dnf install curl

macOS

Per macOS, è già preinstallato, quindi non devi fare nulla.

Leggi anche: Come avviare il terminale nella posizione attuale della cartella su Mac

Windows

  1. Per Windows 7/10/11, vai alla pagina di download di cURL e scegli tra i pacchetti a 64 bit o 32 bit, in base all’architettura che stai utilizzando. Se non conosci la tua architettura, il 64 bit è una scommessa sicura, poiché la stragrande maggioranza dell’hardware prodotto dopo il 2006 è su quella.
  2. Crea una cartella sia direttamente sull’unità di sistema che in “C:\Program Files\” e chiamala “cURL.”

Linuxcurl Nuovafolder

  1. Torna al file zip che hai scaricato, aprilo e trova “curl.exe” nella cartella “bin”. Copia questo file nella cartella cURL che hai creato. L’EXE copiato è completamente autosufficiente e in grado di eseguire ogni permutazione che puoi eseguire su Linux.
  2. Per rendere utile questo comando, dobbiamo aggiungerlo alla variabile PATH in Windows in modo che possa essere eseguito dal prompt dei comandi ovunque.
  • Fai clic sul menu Start, digita environment e premi Invio.
  • Fai clic su “Variabili d’ambiente … “. Dovresti ora essere nelle impostazioni delle variabili d’ambiente.

Linuxcurl Variabiliambientali

  • Seleziona la variabile d’ambiente “Path”, quindi fai clic su “Modifica … “

  • Una volta nella finestra di dialogo di modifica del percorso, fai clic su “Nuovo” e digita la directory in cui si trova “curl.exe” - ad esempio, “C:\Program Files\cURL”.

  • Fai clic su “OK” sulle finestre di dialogo che hai aperto durante questo processo e goditi l’uso di cURL nel tuo terminale!

Ogni flag di cURL utilizzabile in Linux dovrebbe funzionare anche nella versione di Windows.

Nota bene: ricorda che il prompt dei comandi non dovrebbe mai essere confuso con Windows Terminal. Windows Terminal include una sua versione di cURL nel PowerShell, che offre funzionalità simili ma funziona in modo completamente diverso.

Leggi anche: Come utilizzare il comando Rm in Linux

Utilizzo di cURL

Per iniziare, digita semplicemente curl maketecheasier.com nel tuo terminale e premi Invio.

Se non stai ricevendo alcun output, è perché il server di questo sito non è configurato per rispondere a richieste di connessione casuali al suo dominio non-www. Se interrogassi un server che non esiste o non è online, otterresti un messaggio di errore che indica che cURL non è riuscito a risolvere l’host.

Per fare in modo che cURL faccia qualcosa di effettivamente utile, dobbiamo specificare un protocollo. Nel nostro esempio, stiamo usando il protocollo HTTPS per interpellare la homepage di questo sito. Digita curl https://www.maketecheasier.com.

Linuxcurl File

Se tutto va per il verso giusto, dovresti trovarti di fronte a un enorme muro di dati. Per rendere questi dati un po’ più utilizzabili, possiamo dire a cURL di metterli in un file HTML:

curl https://www.maketecheasier.com > ~/Downloads/mte.html

Questo comando mette il contenuto dell’output del nostro sito in un file HTML nella tua cartella Download. Naviga verso la cartella con il tuo gestore di file preferito e fai doppio clic sul file che hai appena creato. Dovrebbe aprirsi un’istantanea dell’output HTML della homepage di questo sito.

Allo stesso modo, puoi utilizzare il flag -o per ottenere lo stesso risultato:

curl -o ~/Downloads/mte.html https://www.maketecheasier.com

Seguire i reindirizzamenti

La maggior parte dei siti reindirizza automaticamente il traffico dal protocollo “http” a “https”. In cURL, puoi ottenere la stessa cosa con il flag -L. Questo seguirà automaticamente i reindirizzamenti 301 fino a quando non raggiunge una pagina o un file leggibili.

 curl -L http://google.com.

Linuxcurl Reindirizzamento

Riprendere un download

Quando si scaricano file di grandi dimensioni, a seconda della tua velocità di Internet, le interruzioni possono essere estremamente irritanti. Fortunatamente, cURL ha una funzione di ripresa. Passare il flag -C si prenderà cura di questo problema in un attimo.

Per mostrare un esempio pratico, ho interrotto intenzionalmente un download dell’ISO della release di testing di Debian premendo Ctrl e C nel bel mezzo del download.

Linuxcurl Interrotto

Per il nostro prossimo comando, stiamo allegando il flag -C. Ad esempio,

curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso

Linuxcurl Riprendi

Il download è ripartito correttamente da dove si era interrotto.

Scaricare più di un file

Poiché cURL non ha il modo più intuitivo per scaricare più file, ci sono due metodi, ciascuno con il proprio compromesso.

Se i file che stai scaricando sono numerati (ad esempio, file1, file2 e così via), puoi utilizzare le parentesi per ottenere l’intero intervallo di file e “#” all’interno dell’output specificato con il flag -o. Per rendere questo un po’ meno confuso, ecco un esempio:

curl "http://example.com/file[1-5].zip" -o "#1_#2"

Un modo più semplice per fare ciò è con -O ( --remote-name). Questo flag fa sì che cURL scarichi il file remoto su un file locale con lo stesso nome. Dato che non devi specificare un output, dovresti usare questo comando quando il terminale è aperto nella directory in cui desideri scaricare i file.

curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"

Se hai un gran numero di file enumerati da scaricare, --remote-name-all è un flag migliore per questo:

curl --remote-name-all "https://example.com/file[1-5].zip"

Puoi anche specificare file non numerati provenienti dallo stesso sito senza dover ridigitare l’URL utilizzando le parentesi:

curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"

Scaricare con autenticazione

Scarica file che richiedono autenticazione (ad esempio, quando scarichi da un server FTP privato) con il flag -u. Ogni richiesta di autenticazione deve essere eseguita prima con il nome utente e poi con la password, con i due separati da un due punti. Ecco un esempio per semplificare le cose:

curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip

Questo autenticherà il nostro amico bonobo_bob nel server FTP e scaricherà il file nella cartella Download.

Suddividere e unire file

Se per qualsiasi motivo desideri scaricare un file di grandi dimensioni e suddividerlo in pezzi, puoi farlo con il flag --range di cURL. Con --range, devi specificare il byte da cui vuoi partire fino a quello in cui vuoi terminare. Se non specifichi una fine per l’intervallo, scaricherà semplicemente il resto del file.

Nel comando qui sotto, cURL scaricherà i primi 100 MB dell’immagine di installazione di Arch Linux:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Per i successivi 100 MB, utilizza --range 100000000-199999999, ecc. Puoi concatenare questi comandi usando l’operatore &&:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Se segui la struttura del comando sopra alla lettera, otterrai otto file esattamente dove hai chiesto a cURL di scaricarli.

Per riunire questi file, dovrai utilizzare il comando cat se sei su Linux o macOS in questo modo:

cat arch.part? > arch.iso

Per Windows, dovrai utilizzare il comando copy in questo modo:

copy /b arch.part* arch.iso

Altre funzionalità utili

Ci sono molti flag e usi per cURL:

  • -# – Usa una barra di avanzamento per indicare quanto sei avanti nel download. Esempio: curl -# https://asite.com/somefile.zip > ~/somefile.zip.
  • -a – Chiede a cURL di aggiungere a un file piuttosto che sovrascriverlo. Esempio: curl -a -o ~/collab-full.x https://example-url.com/collab-part26.x.
  • --head – Recupera solo l’intestazione della risposta dal server senza i dati di output. Questo è utile quando stai debuggando un sito web o dando un’occhiata alle risposte programmate del server ai client. Esempio: curl --head https://example-url.com.
  • --limit-rate – Ordina un download con larghezza di banda limitata. È utile in situazioni in cui non vuoi che cURL occupi tutta la larghezza di banda disponibile nel tuo sistema. Un numero semplice sarà interpretato come byte al secondo. K rappresenta kilobyte al secondo; M rappresenta megabyte al secondo. Esempio: curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip.
  • -o – Come menzionato in precedenza, determina un file di output che cURL deve utilizzare. Esempio: curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip.
  • --proxy – Se desideri lavorare con un proxy, questo è il modo per farlo. Esempio: curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip.

cURL vs. Wget

Entrambi rilasciati nello stesso anno (1996), cURL e Wget sono praticamente programmi sorelle per l’osservatore casuale. Tuttavia, approfondendo un po’, si può vedere che queste due sorelle hanno scopi diversi.

Wget

  • È completamente costruito da zero per recuperare dati da Internet.
  • Non ha bisogno dei flag -L o -o come cURL; basta digitare wget [url] e via!
  • Può scaricare in modo ricorsivo per recuperare tutto il contenuto di una directory con il flag -r.
  • Ha tutte le funzioni necessarie all’utente per l’uso quotidiano e si occupa delle attività quotidiane dell’amministratore di sistema.
  • (In Linux) Non ha bisogno di molte dipendenze; tutte dovrebbero essere disponibili immediatamente.

Leggi anche: Come installare e utilizzare wget su Mac

cURL

  • Vasta gamma di flag e funzioni utili per il recupero remoto.
  • Supporta reti locali (LDAP) e stampanti di rete (Samba).
  • Funziona bene con le librerie di compressione gzip.
  • Dipende da libcurl, che consente agli sviluppatori di scrivere software o script bash che includono la funzionalità di cURL.

In breve, Wget è il “cassetta degli attrezzi di ogni uomo” per raccogliere materiali da Internet, mentre cURL si espande su questo con un controllo più dettagliato per utenti esperti e amministratori di sistema.

Domande frequenti

1. Ho ricevuto un errore di certificato in Linux. Come posso risolverlo?

Se hai ricevuto un errore che dice qualcosa come “l’emittente del certificato del peer è stato contrassegnato come non attendibile”, il modo più semplice per risolverlo è reinstallare il pacchetto di certificati comuni nella tua distribuzione.

Per sistemi basati su Debian/Ubuntu:

sudo apt reinstall ca-certificates

Per Fedora/CentOS/RHEL:

dnf reinstall ca-certificates

Per sistemi basati su Arch:

pacman -S ca-certificates

Nota che in Arch potresti voler svuotare la cache dei pacchetti usando pacman -Scc prima di reinstallare il pacchetto dei certificati.

Se continui a ricevere questo errore, potrebbe esserci un problema dal lato del server.

2. È sicuro eseguire cURL e comandi bash insieme?

Sebbene non sia il modo più comune per installare applicazioni Linux, ci sono diversi sviluppatori (come le persone dietro NodeJS) che non ti danno scelta se non usare curl insieme a un comando di accesso root che viene eseguito tramite bash (ad esempio, curl [argomento] | sudo -E bash -) per installare il software.

Può sembrare un po’ spaventoso, ma se le persone dietro l’applicazione sono affidabili, è molto improbabile che tu rompa qualcosa. Attori malevoli sono ovunque e possono infiltrarsi nei repository come AUR di Arch, quindi installare usando curl in combinazione con comandi di accesso root non è generalmente più insicuro rispetto a farlo tramite il tuo gestore di pacchetti.

3. Posso utilizzare cURL con Tor?

Sì! Avvia Tor Browser (o un servizio tor stand-alone) e utilizza il flag --proxy. Tor ti fornisce un proxy locale che puoi usare per mascherare il tuo IP in altre applicazioni. Ecco un esempio di cURL usato con Tor:

curl --proxy localhost:9050 http://example.com

I servizi Tor autonomi useranno 9050 come porta per l’ascolto, mentre il browser Tor utilizza la porta 9150.

Conclusione

cURL ha dimostrato di essere resiliente nel mutare panorama del mondo Linux, mantenendo la sua posizione come strumento importante nell’arsenale dell’utente del terminale.

Se sei nuovo alla riga di comando, guarda alcuni dei comandi Linux più utili. Se vuoi semplicemente cercare sul Web invece di scaricare dati da Internet, puoi navigare anche nel terminale.