fb-pixel

Linux, comando cURL: cos’è e come si usa

cURL è uno strumento open source e gratuito che puoi usare da linea di comando. In questo tutorial vedremo come usare su Linux il comando cURL per trasmettere dati senza usare il browser.

Tieni presente che sebbene si tratti di un comando da terminale, cURL può essere usato anche su macOS e Windows e in molti casi è già presente e non necessita l’installazione.

Partiamo da cos’è cURL per poi impararne la sintassi e vedere esempi pratici di utilizzo.

Linux Comando Curl Guida Su Come Usarlo

Cos’è cURL?

cURL è uno strumento da linea di comando con cui si può comunicare con il server senza dover utilizzare un browser.

Gli utilizzi più comuni di questo strumento sono:

  • testare il funzionamento delle API;
  • visualizzare gli header HTTP;
  • inviare richieste HTTP;
  • trasferire dati da o verso un server.

Il nome “cURL” richiama esattamente la sua funzione.

La “c” rappresenta il fatto che si tratta di un programma lato client, mentre “URL” indica proprio che esso lavora con gli URL inviando e scaricando dati da URL.

Su Linux il comando cURL serve a richiamare questo strumento che si utilizza esclusivamente da linea di comando e non ha un’interfaccia grafica (GUI). Se si vuole integrare lo strumento all’interno di un altro programma si possono utilizzare le librerie libcurl.

Ecco l’elenco completo dei protocolli supportati da cURL attualmente:

  • DICT
  • FILE
  • FTP
  • FTPS
  • GOPHER
  • GOPHERS
  • HTTP
  • HTTPS
  • IMAP
  • IMAPS
  • LDAP
  • LDAPS
  • MQTT
  • POP3
  • POP3S
  • RTMP
  • RTSP
  • SCP
  • SFTP
  • SMB
  • SMBS
  • SMTP
  • SMTPS
  • TELNET
  • TFTP
  • WS
  • WSS.

Sintassi del comando Linux cURL

Prima di andare a vedere degli esempi dell’uso di cURL, partiamo dal principio e iniziamo a capire come si usa questo comando.

La sintassi base del comando è la seguente:

curl [parametri] [URL]

I parametri possono essere un’opzione, come per esempio “-h” per mostrare degli aiuti. Oppure combinazioni di più opzioni.

Se non hai molta familiarità con il terminale, ti suggeriamo di leggere prima la nostra guida ai comandi Linux in modo da acquisire le conoscenze di base.

Come per gli altri comandi da terminale, anche nel caso di cURL è possibile utilizzare le opzioni in due modi.

  • Versione abbreviata delle opzioni: per esempio “-v“. Ricordati che viene sempre preceduta da un solo trattino (“-“).
  • Versione estesa delle opzioni: come ad esempio “--verbose“. In questo caso l’opzione deve essere preceduta da due trattini (“–“).

Ricordati che le opzioni sono case sensitive, prova a usare “-V” invece di “-v” e avrai due output differenti. Nel caso di cURL “-v” è l’abbreviazione di “--verbose” e ci darà più informazioni sulle operazioni eseguite, mentre “-V” indica “--version” e ci mostrerà quale versione dello strumento è installata sul nostro sitema.

Grazie agli esempi che vedremo in questo articolo, imparerai a usare alcune delle opzioni di cURL. Considera che questo comando ha più di 200 opzioni, per cui non potremo esaminarle tutte.

Per vedere una lista delle opzioni più comuni puoi usare l’opzione “--help“, così:

curl --help

Il risultato sarà come questo.

Linux Comando Curl Opzione Help

Si tratta solo delle opzioni più comuni, mentre se vuoi avere una lista completa ti basta dare questo comando:

curl --help all

In questo caso vedrai tutte le opzioni accompagnate sempre da una breve spiegazione.

Curl Comando Linux Opzione Help All

Come usare cURL (con esempi)

In questa sezione del nostro tutorial su come utilizzare cURL impareremo la sintassi di base delle opzioni e vedremo come eseguire alcune operazioni utili.

Dopo che avrai imparato a usare il comando cURL con questi esempi pratici, potrai sfruttare le opzioni per i tuoi test.

Nello specifico andremo a vedere:

  • pagine web: come mostrarle in HTML e salvare il contenuto;
  • file: come scaricarli e riprendere i download interrotti;
  • user agent: come emulare un user agent diverso;
  • header HTTP: come mostrarli da linea di comando;
  • reindirizzamenti: come far sì che cURL segua i redirect;
  • pagine protette da password: come si usa l’autenticazione HTTP;
  • richieste POST: come si fa una richiesta con lo strumento;
  • FTP: come vedere la lista dei file nelle directory, caricare e scaricare file via FTP.

Si tratta di uno strumento molto utile da sfruttare sulle macchine virtuali e sui server. Con SupportHost troverai cURL già installato se scegli un qualsiasi piano hosting o una soluzione dedicata come un server dedicato o un piano VPS cloud hosting.

Verificare che cURL sia installato

Nella maggior parte delle distribuzioni Linux, su macOS e su Windows 10 cURL è già installato.

Prima di iniziare a usarlo, possiamo assicurarci in maniera molto veloce che sia installato. Per farlo ci basta aprire il terminale (o anche il prompt dei comandi nel caso di Windows) e scrivere:

curl

Se lo strumento è presente, l’output che vedremo sarà il seguente:

curl: try 'curl --help' for more information
Verifica Installazione Curl Terminale

Se il programma non fosse presente ti basterà installarlo. Il comando da usare per l’installazione dipende dal sistema operativo e dalla distribuzione che stai usando.

Se non sai come fare in fondo a questa guida troverai i collegamenti al manuale che comprendono anche le indicazioni specifiche sull’installazione.

Mostrare il contenuto di una pagina con cURL

L’utilizzo di base di cURL è quello di reperire i dati dall’URL che gli forniamo.

Diamo il comando seguito dall’URL, in questo modo:

curl https://supporthost.com/

Ci verrà mostrato sul terminale il codice sorgente della pagina richiesta, nell’esempio qui sopra dell’home page del nostro sito.

Comando Curl Url Supporthost

Salvare il contenuto di una pagina

Possiamo utilizzare un’opzione del comando cURL per salvare il contenuto di un URL, per esempio una pagina web in un file.

Sintassi:

curl -O [URL]

Esempio:

curl -O https://supporthost.com/

L’opzione “-O” ci consente di utilizzare il nome del file che viene usato sul server. Nel caso di una pagina web, come l’esempio che abbiamo appena visto, il programma ci restituirà un errore come questo “Remote file name has no lenght”:

Errore File Name Lenght Curl

In questo caso, infatti, dobbiamo specificare noi il nome del file. Per farlo ci basta usare questo comando:

curl -o homepage-supporthost.html https://supporthost.com/

La sintassi del comando da usare è questa:

curl -o nome-file.html https://sito.com/

Questo sarà il risultato che ci viene mostrato.

Salvare Pagina Web Con Curl

Nota: in questo caso il file viene salvato nel percorso in cui ci troviamo, nel nostro esempio “C:\Users\Fabrizio\”

Usare cURL per scaricare un file

Nell’esempio che abbiamo appena visto, abbiamo usato cURL per scaricare il contenuto di una pagina sul nostro computer.

Conoscendo l’URL, possiamo utilizzare lo stesso comando per scaricare un file.

Ci basta procedere esattamente come abbiamo visto prima, vediamolo di nuovo con un esempio.

Trattandosi di un file, in questo caso non abbiamo il problema che abbiamo visto prima perché il file avrà già un nome sul server. In questo caso, quindi, possiamo usare una delle due opzioni:

  • -O se vogliamo che il file che scarichiamo abbia lo stesso nome di quello sul server;
  • -o se vogliamo specificare un nome diverso.

Ecco i due esempi.

Vogliamo scaricare il logo di cPanel da Wikipedia e salvarlo con lo stesso nome che ha sul server “Cpanel_logo.svg”. Usiamo il comando seguente con l’opzione “-O”:

Curl Salvare File

Scarichiamo lo stesso logo, ma questa volta diamogli il nome “cpanel.svg”, usando questo comando con l’opzione “-o” seguita dal nome:

Curl Salvare File Con Nome Diverso

Far ripartire un download interrotto

Se abbiamo iniziato a scaricare un file con cURL e il download è stato interrotto, possiamo riprendere a scaricarlo usando l’opzione “-C” in questo modo:

curl -C - -O [percorsodelfile]

Questa opzione è utile per download di grandi dimensioni perché ci permette di riprendere da dove è stato interrotto anziché dover ricominciare da zero.

Può essere utilizzata anche per riprendere un download con il protocollo FTP. In quest’ultimo caso la sintassi da usare sarà la seguente:

curl -C - -O ftp://[percorsodelfile]

Specificare un User Agent diverso con cURL

Per impostazione predefinita cURL userà il suo User Agent vale a dire:

User-Agent: curl/[version]

Per esempio con la versione che abbiamo usato per i nostri esempi, 7.83.1, l’User agent sarà:

User-Agent: curl/7.83.1
User Agent Default Curl

Per impostare un User Agent diverso possiamo usare l’opzione “-A” seguita dalla stringa che identifica l’User Agent che vogliamo usare, con questa sintassi:

curl -A ["User Agent"] [URL]

Ecco un esempio:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" https://google.com/

Mostrare gli header HTTP

Come abbiamo visto nel primo esempio, quando usiamo il comando cURL seguito dall’URL ci viene mostrata la versione HTML della pagina.

In questo caso, però, non ci vengono fatti vedere gli header HTTP della pagina.

Per visualizzare solo gli header (senza il contenuto della pagina), possiamo usare questo comando:

curl -I [URL]

Per esempio:

curl -I https://supporthost.com/

Ci mostrerà l’header HTTP dell’home page del nostro sito.

Header Http Pagina Con Curl

Se, invece, volessimo visualizzare sia la versione HTML della pagina che l’header HTTP, potremmo usare questo comando:

curl -i https://supporthost.com/

In questo modo ci verrà mostrato l’header HTTP seguito dal codice sorgente della pagina.

Header Http E Pagina Html Con Curl

Seguire i reindirizzamenti

Se proviamo a dare il comando cURL seguito da un URL che viene reindirizzato verso un altro indirizzo, lo strumento non ci restituirà nessun risultato.

Di default, infatti, cURL non segue in automatico i reindirizzamenti.

Per capire se quell’URL viene effettivamente reindirizzato altrove, possiamo visualizzare l’header HTTP (con l’opzione -I come abbiamo visto prima). Ecco l’output:

Curl Reindirizzamento Pagina

Come vedi in questo esempio nel valore “location” ci viene indicata la pagina verso cui punta il redirect 301.

A questo punto, se vogliamo che cURL segua il reindirizzamento dobbiamo utilizzare l’opzione “–location”.

Nel nostro esempio abbiamo utilizzato anche l’opzione -I per vedere solo gli header HTTP anziché mostrare anche il codice sorgente. Questo è l’output:

Curl Reindirizzamento Pagina Con Location

Come puoi vedere il primo codice di risposta HTTP è “301 Moved Permanently” che ci dice che la risorsa è stata spostata. In “location” possiamo vedere l’indirizzo di destinazione.

Il secondo codice HTTP è “200 OK“, questo ci fa capire che il secondo URL visitato ha restituito un codice 200.

Usare l’autenticazione HTTP con cURL

Quando bisogna accedere ad URL protetti da credenziali (nome utente e password), si possono inviare i dati di accesso con il comando cURL.

Se il sistema di autenticazione usato è basic access authentication basterà indicare le credenziali in questo modo:

curl --user nome:password https://nomesito.com

Questo può essere utile ad esempio per accedere da linea di comando a pagine protette con la protezione htaccess.

Se una pagina è protetta da password e tentiamo di accedere senza aver usato l’opzione “–user” per le credenziali di accesso, potremo vedere ad esempio una pagina di errore 401, come in questo esempio:

Errore 401 Curl

Inviare una richiesta POST con cURL

Una nota sull’uso dei metodi HTTP con cURL: tieni presente che con questo strumento non è sempre necessario indicare il metodo HTTP da usare.

In base all’opzione che stai usando, verrà utilizzato il metodo predefinito. Per esempio quando utilizziamo “-d” verrà usato il metodo POST, quando non viene specificato nessun metodo viene usato quello di default, ovvero GET.

Con cURL possiamo inviare una richiesta POST, passando dei dati da inviare ad un URL. L’opzione “-d” o “--data” ci permette di inviare i dati con una richiesta POST.

Sintassi:

curl -d ["campo=valore"] [URL]

Facciamo un esempio con un ipotetico modulo di contatti con due campi “nome” e “testo”.

Usando il comando:

curl -d "nome=mario&testo=prova" https://esempio.com/contatti

Stiamo inviando questi dati: “nome=mario” e “testo=prova” alla pagina specificata nell’URL. Come vedi nell’esempio per concatenare i dati l’uno con l’altro ci basta usare “&”.

Il formato da utilizzare sarà quindi il seguente:

[campo1]=[valore1]&[campo2]=[valore2]

Proprio come nell’esempio che abbiamo appena visto.

Vedere la lista dei file sul server (FTP)

Tra i protocolli supportati da cURL troviamo anche FTP. Insieme a SFTP si tratta di un protocollo standard per la trasmissione dei file da e verso un server.

Prima di vedere come trasferire i file da e verso il server con il protocollo FTP con cURL, vediamo un semplice comando che ci permette di visualizzare la lista dei file sul server.

curl --user nome:password ftp://[nomedelserver]

Questo comando darà un output simile al seguente:

Lista Dei File Ftp Curl

Possiamo visualizzare il contenuto di una cartella specifica inserendo il percorso della cartella per esempio:

curl --user nome:password ftp://ftp.sitoesempio.com/nomecartella/

Scaricare un file via FTP

Possiamo usare cURL per collegarci via FTP al server e scaricare un file in locale.

Il comando che si usa ha questa sintassi:

curl --user nome:password -O ftp://[percorsodelfile]

Stiamo usando una combinazione delle due opzioni che abbiamo visto negli esempi precedenti:

  • l’opzione “–user” ci permette di inserire le credenziali di accesso;
  • l’opzione “-O” indica di scaricare il file mantenendo lo stesso nome che ha sul server.

Ecco un esempio in cui abbiamo scaricato un file jpg:

Scaricare Un File Via Ftp Con Curl

Ricordati di inserire il nome del server FTP seguito dal percorso completo del file.

Da cPanel puoi recuperare le informazioni sul tuo account FTP andando su Account FTP > Configura client FTP e guardando nella sezione “Impostazioni manuali”, come ti mostro qui:

Impostazioni Manuali Account Ftp Cpanel

Se il download del file viene interrotto e vuoi riprenderlo dal punto in cui si è bloccato, ti basta usare il comando che abbiamo visto prima e che riporto di nuovo qui per maggiore chiarezza:

curl -C - -O ftp://[percorsodelfile]

Caricare un file via FTP

Come accennavamo in apertura di questa guida, cURL ci permette di trasferire dati. Usando il protocollo FTP possiamo anche caricare dei file sul server.

Per farlo bisognerà utilizzare l’opzione “-T” così:

curl --user nome:password -T [file] ftp://[percorsodelfile]

Ecco un esempio in cui carichiamo un’immagine:

Caricare Un File Via Ftp Con Curl

In questo esempio il file che verrà caricato sul server avrà lo stesso nome del file locale “image.jpg”.

Se invece volessimo modificare il nome solo sul server, dovremo indicarlo dopo il percorso, così:

Caricare E Rinominare Un File Via Ftp Con Curl

La sintassi da usare sarà questa:

curl --user nome:password -T [file] ftp://[percorsodelfile/nuovo-nome-file]

Nell’esempio appena visto, il comando diventa infatti:

curl --user user:password -T image.jpg ftp://ftp.sito.com/backup/image2.jpg

Conclusioni e altre risorse

In questo tutorial su cURL abbiamo visto alcuni degli utilizzi più comuni. Lo strumento ci può essere utile in diverse occasioni per trasferire dati, inviare richieste HTTP e per fare dei test.

Grazie agli esempi pratici che abbiamo visto, ora hai tutte le basi per iniziare a usare il comando cURL. Per approfondire e scoprire altri casi d’uso, puoi fare affidamento sulla guida rapida e sulla documentazione dettagliata “Everything curl“.

Hai provato a usare cURL seguendo la nostra guida? Facci sapere con un commento.


Prova gratis e senza impegno uno dei nostri piani hosting per 14 giorni. Non è richiesto nessun dato di pagamento!

Commenti

2 risposte a “Linux, comando cURL: cos’è e come si usa”

  1. Avatar Giorgio

    Perfetto! Ho usato la vostra guida, ha funzionato tutto.
    Questo uno dei primi comandi che ho provato con successo,
    utilizzando le vostre indicazioni:
    passo tre variabili ad un file php e lui mi restituisce semplicemente i valori:

    curl -d “iduser=51&oggi=18/6/2024&ruolo=Amministratore” localhost/cartella/curl_prova.php
    iduser: 51
    oggi: 18/6/2024
    ruolo: Amministratore

    1. Ciao Giorgio, sono contento che la nostra guida ti sia stata utile. Grazie mille per la conferma.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *