Se lavori spesso con server, API o semplicemente vuoi automatizzare le interazioni con il Web, allora dovresti assolutamente conoscere il comando curl. Questo strumento da riga di comando non è solo un banale downloader: è una piccola meraviglia di versatilità capace di dialogare con diversi protocolli di rete, autenticare utenti, inviare dati strutturati e molto altro. curl nasce per Linux ma pochi sanno che Windows 10 e Windows 11 includono l’utilità di default: è richiamabile da qualunque cartella, usando la finestra del termine, in quanto curl.exe
risiede nella cartella di sistema.
curl, acronimo di Client URL, è uno degli strumenti più versatili e potenti a disposizione degli utenti Linux (e Windows). Nato come un semplice strumento da riga di comando per trasferire dati da o verso un server, oggi è diventato un alleato insostituibile per sviluppatori, amministratori di sistema e appassionati di scripting. In questa guida esploreremo non solo le funzionalità base di curl, ma anche quelle più avanzate e meno conosciute.
Come installare curl su Linux
Probabilmente curl è già installato sulla tua distribuzione Linux. Se così non fosse, è sufficiente aprire il terminale e digitare uno dei seguenti comandi:
Debian/Ubuntu: sudo apt install curl
Fedora: sudo dnf install curl
Arch Linux: sudo pacman -S curl
Per verificare la versione installata, è sufficiente digitare curl --version
, confrontando il responso con il numero di release sul sito ufficiale del progetto.
Gli usi di base
Cominciamo con alcuni esempi basilari che coinvolgono l’utilizzo di curl. Per ottenere il codice HTML di una qualunque pagina Web, basta digitare semplicemente curl
seguito dall’indirizzo completo della pagina Web di proprio interesse (non dimenticare di indicare il protocollo, ad esempio https://
).
Utilizzando il comando seguente, è possibile salvare l’output in un file locale:
curl https://google.com -o pagina.html
Per scaricare un file mantenendo il nome originale, basta digitare curl -O
seguito dall’indirizzo completo del file.
È inoltre possibile effettuare una richiesta POST, ad esempio il login su un form online trasmettendo nome utente e password (come se si fossero compilati i campi corrispondenti):
curl -X POST -d "user=test&pass=1234" URL_PAGINA_WEB
Ovviamente è indispensabile verificare di inviare i dati così come attesi dalla pagina Web. Nello specifico, user
e pass
devono corrispondere ai campi definiti per il form a livello di codice HTML.
Con la sintassi seguente, invece, si possono inviare dati JSON (ad esempio a un’API REST):
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' INDIRIZZO_API
Le opzioni utili (e spesso dimenticate) di curl su Linux
Un’utilità avanzata come curl ha decine di opzioni. Riassumiamo quelle che tecnici e professionisti potrebbero voler utilizzare più di frequente:
-I
, --head
: mostra solo gli header HTTP
-L
: segue automaticamente i redirect (reindirizzamenti)
-C -
: riprende un download interrotto
-o file
: salva con un nome personalizzato
-O
: salva con il nome originale del file remoto
Funzionalità avanzate: quando il gioco si fa duro…
Quando le operazioni si fanno più complesse, curl non delude le aspettative. Se le opzioni base ti hanno già conquistato, sappi che curl ha molto di più da offrire.
Con la possibilità di gestire autenticazioni, header personalizzati, upload via FTP e l’uso di proxy, curl su Linux dimostra nel concreto tutta la sua potenza. Di seguito alcuni spunti interessanti per scoprire come sfruttare curl al massimo, affrontando scenari reali che vanno ben oltre il semplice download di una pagina.
Autenticazione di base via HTTP: curl --user nomeutente:password INDIRIZZO_WEB
Un Token Bearer è una forma di autenticazione basata su token che consente a un client di dimostrare di avere il permesso di accedere a una risorsa protetta. Il termine “Bearer” deriva dal fatto che “chi lo possiede” (bearer, in inglese) può accedere alla risorsa, senza ulteriori verifiche oltre alla validità del token stesso. Con curl è possibile gestire facilmente questo scenario:
curl -H "Authorization: Bearer <TOKEN>" INDIRIZZO_API
Caricare un file via FTP: curl -T file.txt ftp://ftp.example.com --user nomeutente:password
Impostare un User-Agent personalizzato: curl -A "Mozilla/5.0" INDIRIZZO_WEB
Aggiungere header personalizzati: curl -H "X-Custom-Header: valore" INDIRIZZO_WEB
Usare un proxy: curl –proxy http://proxy.example.com:8080 https://example.com
curl Linux: trucchi nascosti e usi curiosi
Un’utilità potente, flessibile e versatile qual è curl, nasconde alcune chicche davvero interessanti. Ad esempio, è possibile misurare il tempo di risposta di un sito ricorrendo alla seguente sintassi:
curl -o /dev/null -s -w "%{time_total}\n" https://example.com
Si possono anche gestire i cookie tra una richiesta di connessione e l’altra. Ad esempio, il comando proposto di seguito effettua una richiesta HTTP all’indirizzo Web indicato. Se cookies.txt
esiste e contiene dei cookie, li invia al server. Riceve inoltre eventuali nuovi cookie dal server o aggiornamenti dei cookie esistenti e li salva sempre nello stesso file di testo in locale:
curl -c cookies.txt -b cookies.txt INDIRIZZO_WEB
Per ottenere il codice di stato HTTP:
curl -s -o /dev/null -w "%{http_code}\n" INDIRIZZO_WEB
Accedendo agli Strumenti per sviluppatori (ad esempio da Chrome o Firefox) e cliccando sulla scheda Network, si possono esportare richieste in formato curl direttamente dal browser. Basta infatti cliccare con il tasto destro del mouse sulla richiesta di proprio interesse quindi scegliere Copy as cURL. Con CTRL+V
, si può quindi incollare il testo della richiesta altrove.
Debug e logging: capire cosa succede dietro le quinte
Capire cosa accade durante una richiesta è spesso fondamentale per il debugging e, quindi, per la risoluzione dei problemi.
Per questo, l’utilità curl integra una speciale modalità verbose (dettagliata) attivabile semplicemente aggiungendo l’opzione -v al momento della connessione:
curl -v INDIRIZZO_WEB
Per registrare in dettaglio tutta la comunicazione (sia le richieste inviate sia le risposte ricevute, inclusi header, dati e informazioni di debug) in un file chiamato trace.txt
, si può impartire il seguente comando:
curl --trace trace.txt INDIRIZZO_WEB
Per visualizzare solo gli header della risposta:
curl -I https://example.com
Per visualizzare informazioni dettagliate in formato leggibile:
curl -w "\nCodice HTTP: %{http_code}\nTempo totale: %{time_total}s\n" -o /dev/null -s INDIRIZZO_WEB
Usare curl negli script su Linux: automatizzare è potere
Integrare curl all’interno di script consente di automatizzare operazioni ripetitive come il download di file, l’invio di dati, l’autenticazione e molto altro. Questo approccio non solo migliora l’efficienza del lavoro quotidiano, ma apre anche la strada a soluzioni personalizzate e flessibili, trasformando semplici comandi in veri e propri workflow automatici e intelligenti. Ecco un esempio:
#!/bin/bash
response=$(curl -s INDIRIZZO_API)
echo "$response" | jq .
Questo compatto script provvede ad effettuare una chiamata API con curl, prende la risposta JSON ottenuta e poi la stampa formattata in modo leggibile usando jq.
Conclusioni
curl non è semplicemente un comando da terminale: è una vera e propria “cassetta degli attrezzi” digitale indispensabile per chi lavora con il Web, le API e l’automazione. La sua versatilità, la compatibilità multipiattaforma e la ricchezza di opzioni avanzate lo rendono uno strumento imprescindibile per sviluppatori, amministratori di sistema e chiunque voglia interagire con risorse remote in modo rapido e flessibile.
Conoscere curl significa poter affrontare scenari complessi con semplicità, dalla gestione di autenticazioni sicure all’invio di dati strutturati, dal download intelligente di file al debug dettagliato delle richieste HTTP. Inoltre, grazie all’integrazione con script e workflow automatizzati, curl diventa un alleato strategico per aumentare l’efficienza e ridurre gli errori nelle attività quotidiane.
Investire tempo nell’apprendimento e nell’uso avanzato di curl significa acquisire una competenza tecnica di grande valore, capace di aprire molte porte nel mondo IT e dello sviluppo software.