L’ab­bre­via­zio­ne cURL sta per “Client for URLs” oppure “Curl URL Request Library”. Si tratta di un programma della riga di comando con relativa libreria per il tra­sfe­ri­men­to di dati in computer collegati in rete. L'autore del software cURL è il pro­gram­ma­to­re Daniel Stenberg. Il suo scopo ori­gi­na­rio era di mettere a di­spo­si­zio­ne dei par­te­ci­pan­ti di una chat i dati relativi ai tassi di cambio ricavati da diversi siti. cURL dispone di una licenza MIT aperta e perciò il suo utilizzo è gratuito. Si è fatto strada in molti sistemi operativi, tra cui Windows 10 che dal mese di aprile del 2018, a partire dal­l'ag­gior­na­men­to 1803, supporta anche cURL. La vasta guida Eve­ry­thing curl rap­pre­sen­ta solo un piccolo assaggio delle numerose pos­si­bi­li­tà offerte agli svi­lup­pa­to­ri da questo strumento. Con l’aiuto di alcuni esempi pratici, qui di seguito sco­pri­re­te cosa può fare cURL per Windows. Potrete spe­ri­men­ta­re alcune cose anche da soli.

Cos’è di preciso cURL per Windows

Come negli altri sistemi operativi, cURL per Windows è composto dal file ese­gui­bi­le curl.exe e dalla libreria libcurl, scritta nel lin­guag­gio di pro­gram­ma­zio­ne API, che permette di applicare le molte pos­si­bi­li­tà offerte da cURL. I comandi sono eseguiti dal prompt dei comandi (riga di comando) di Windows. A tal proposito, è presente una struttura di comando fissa:

C:\Users\Utenteprova>curl [options …] <url>

Qui <url> rap­pre­sen­ta l’indirizzo del sito con cui si vuole in­te­ra­gi­re. Con le [options …] si spe­ci­fi­ca­no le istru­zio­ni che de­fi­ni­sco­no processi come vi­sua­liz­za­zio­ni di pagine, download o upload, posting, utilizzo di formulari e molto altro ancora. Per molte opzioni sono possibili due tipi di scrittura:

  • Una con simbolo meno e lettere
  • Una con simbolo meno e comando (swort)

Ad esempio, per l’utilizzo del metodo GET, possono essere uti­liz­za­te allo stesso modo sia l’opzione “-G” sia quella “--get”.

Ve­ri­fi­ca­re la di­spo­ni­bi­li­tà e la versione di cURL

Ve­ri­fi­ca­te prima di tutto se nella vostra copia di Windows è presente cURL e in caso di risposta af­fer­ma­ti­va, in quale versione. Per farlo dovete attivare il prompt dei comandi digitando “cmd” nel box di ricerca di Windows. Dopodiché digitare:

C:\Users\Utenteprova>curl --version

Ri­ce­ve­re­te le in­for­ma­zio­ni sulla versione di cURL di­spo­ni­bi­le nella vostra copia di Windows 10.

La dif­fu­sio­ne di cURL ha con­sen­ti­to un aumento si­gni­fi­ca­ti­vo del numero dei pro­to­col­li permessi. Questo diventa evidente nel confronto tra le due versioni sopra men­zio­na­te.

7.55.1 (agosto 2017) 7.70.0 (aprile 2020)
dict dict
file file
ftp ftp
ftps ftps
gopher
http http
https https
imap imap
imaps imaps
ldap
ldaps
mqtt
pop3 pop3
pop3s pop3s
rtsp
scp
sftp
smb
smbs
smtp smtp
smtps smtps
telnet telnet
tftp tftp

Si ampliano anche le pos­si­bi­li­tà di tra­sfe­ri­re dati a diverse reti.

In­stal­la­re la versione ag­gior­na­ta di cURL

Con la versione di cURL in­stal­la­ta con Windows è presente un path, che può essere vi­sua­liz­za­to sia dall’utente corrente sia dal­l'am­mi­ni­stra­to­re. Se volete uti­liz­za­re tutti i pro­to­col­li di­spo­ni­bi­li di cURL, dovete avere in­stal­la­to la versione corrente di cURL per Windows. Il modo più semplice è at­tra­ver­so il download della versione più ag­gior­na­ta di­spo­ni­bi­le come file ZIP dal sito dello svi­lup­pa­to­re. Qui troverete anche le in­for­ma­zio­ni su tutte le modifiche apportate (Changelog). Estraete il file su Explorer in una cartella, che potete chiamare ad esempio “curl”. Una cartella di questo tipo può essere salvata anche sul vostro disco di sistema, ad esempio in C:\curl\, dove potrete copiare tutti i file e gli elenchi estratti dal vostro download di cURL. Il file ese­gui­bi­le curl.exe si trova nella sot­to­car­tel­la\bin, che contiene anche i file del cer­ti­fi­ca­to curl-ca-bundle.crt, ne­ces­sa­rio per uti­liz­za­re il pro­to­col­lo SFTP o il pro­to­col­lo HTTPS.

Aprite il prompt dei comandi di Windows e digitate:

# salite in alto di due livelli nella gerarchia della directory
C:\Users\Utenteprova>cd..
C:\Users>cd..
# arrivate alla directory indicata
C:\cd curl\bin
C:\curl\bin>

Qui avrete a di­spo­si­zio­ne le fun­zio­na­li­tà complete di cURL per Windows, che saranno rap­pre­sen­ta­te in seguito. Per fare una prova, potete sem­pli­ce­men­te ri­chie­de­re la versione, come descritto di sopra. Il metodo per ag­gior­na­re cURL che vi abbiamo mostrato funziona con Windows 7, 8 e 10. Potete integrare la versione corrente di cURL anche nel sistema; per farlo dovete creare un path di sistema e trovare (!) e di­sat­ti­va­re il path della versione pre­ce­den­te.

cURL in alcuni semplici esempi

Per uti­liz­za­re cURL con Windows dovete digitare i comandi di testo nel prompt dei comandi. Per una pa­no­ra­mi­ca rapida uti­liz­za­te il comando:

C:\curl\bin>curl --help

Per avere il manuale det­ta­glia­to, digitate:

C:\curl\bin>curl --manual

Entrambi i risultati che ap­pa­ri­ran­no nel prompt dei comandi potranno essere salvati per motivi pratici con un copia e incolla in un file txt di una cartella separata. Questo permette di accedere più ra­pi­da­men­te ai comandi grazie alla funzione di ricerca all’interno del documento senza impegnare il prompt dei comandi.

Consiglio

Uti­liz­za­te un editor di testo per Windows: in questo modo potrete segnare e ve­ri­fi­ca­re i comandi per cURL e poi copiarli nel prompt dei comandi. Questo vi ri­spar­mie­rà molti (e fru­stran­ti) sforzi di di­gi­ta­zio­ne, quando si ve­ri­fi­ca­no in­vo­lon­ta­ri errori di scrittura. Inoltre potrete creare un vostro “mondo dei comandi” per le azioni future uti­liz­zan­do i vostri dati di accesso.

È ancora più rapido con

C:\curl\bin >curl --help | clip

Il comando Cmd “clip” preceduto dalla barra verticale “|” copia subito il risultato corrente mostrato nel prompt dei comandi negli appunti di Windows, in modo da inserirlo con il comando [CTRL] + [V] in un documento vuoto di testo per poi salvarlo.

Salvare in­for­ma­zio­ni di un sito sull’unità locale

Una semplice routine di cURL vi per­met­te­rà anche di salvare su un file locale in­for­ma­zio­ni relative a un sito. Il file che contiene le in­for­ma­zio­ni, deve avere la de­no­mi­na­zio­ne infos.html ed essere salvato sul PC locale nella stessa directory del file per l’in­stal­la­zio­ne di cURL. Per farlo, cuRL utilizza con Windows l’opzione “-o” (si tratta di una o minuscola, non di uno zero).

curl -o infos.html https://www.n-tv.de/

Questo comando crea un file le cui di­men­sio­ni superano i 700 Kilobyte con le in­for­ma­zio­ni sullo stato preciso del sito dell’emittente tedesca N-TV al momento della richiesta. In <title> la dicitura “Na­chri­ch­ten aktuelle Schlag­zei­len und Videos” sta a si­gni­fi­ca­re “Notizie, titoli attuali e video”:

Se ri­chie­de­te questo file da un supporto dati locale in un browser, vi sarà mostrato il sito così com’è salvato.

Questo funziona anche con un file singolo di un server web. Dopo il download, il file ref.pdf dovrà essere ri­no­mi­na­to come referenze.pdf:

curl -o referenze.pdf https://miosito.tld/ref.pdf
oppure
curl --output referenze.pdf https://miosito.tld/ref.pdf

Mostrare l’header di un sito

Per estrarre il contenuto dell’header di un sito (inclusi i tag HTML <head>…</head>) uti­liz­zia­mo un’opzione prima dell’indirizzo web richiesto (I = i maiuscola):

curl --head https://google.com
#oppure
curl -I https://google.com

Estrarre in­for­ma­zio­ni più ampie

Per estrarre ancora più in­for­ma­zio­ni tramite cURL, si può com­ple­ta­re il risultato con l’opzione ag­giun­ti­va “v” oppure “--verbose”. Così, tra le varie cose, si ot­ter­ran­no in­for­ma­zio­ni sugli indirizzi IPv6 uti­liz­za­ti, sulle porte, sui cer­ti­fi­ca­ti ag­giun­ti­vi e molto altro ancora.

curl -I https://google.com -v
#oppure
curl --head https://google.com --verbose

Upload di file tramite il pro­to­col­lo SFTP

Qui il comando cURL diventa un po’ più complesso, perché per l’SFTP bisogna tra­smet­te­re al server il ri­co­no­sci­men­to dell’utente per il login e la verifica. Si procede con:

curl -k sftp://prova-ftp-server:22 --user Utenteprova:Passwordprova -T fileprova.pdf

Nella finestra del prompt dei comandi di Windows si possono seguire gli sviluppi del processo di upload. Dovreste trovare il file caricato nella root del vostro server FTP. Se ci fossero errori nella di­gi­ta­zio­ne del comando, cURL per Windows reagirà in tempi brevi e rapidi con “curl:(67) Au­then­ti­ca­tion failure”. Se si cerca di tra­sfe­ri­re un file con una versione di cURL pre­ce­den­te alla 7.55.1, vi apparirà la notifica “curl:(1) Protocol "sftp" not supported or disabled in libcurl”.

Download tramite pro­to­col­lo SFTP e cURL

Con la versione corrente di cURL, il download funziona in modo al­tret­tan­to semplice senza un par­ti­co­la­re client FTP. Na­tu­ral­men­te, l’unico requisito ne­ces­sa­rio sarà che il file da scaricare sia di­spo­ni­bi­le sul server FTP:

curl -k sftp://-prova-ftp-server:22 --user Utenteprova:Passwordprova -o fileprova.pdf
N.B.

cURL è diventato uno strumento molto potente. Procedete con cautela, se de­si­de­ra­te usare cURL nel vostro ambiente server. Mettendo i dati in sicurezza e con un’unità di ri­pri­sti­no di Windows, sarete al sicuro nel caso qualcosa andasse storto anche solo una volta.

cURL per le pre­vi­sio­ni meteo

Che sia possibile elaborare con i caratteri codice ASCII le relative (e ancora utili) in­for­ma­zio­ni, è di­mo­stra­to dalla richiesta delle pre­vi­sio­ni meteo locali:

curl http://wttr.in/LOCATION

È un’ope­ra­zio­ne che si può ripetere con qualsiasi località a piacere.

cURL e PHP: una bella coppia

Per riuscire a lavorare con cURL anche nelle ope­ra­zio­ni pratiche di pro­gram­ma­zio­ne quo­ti­dia­na, cURL è di­spo­ni­bi­le anche in PHP. Ve­ri­fi­ca­te il vostro server web con una richiesta PHP:

<?php
phpinfo();
?>

Salvate questo codice come file phpinfo.php e in­se­ri­te­lo nella root del vostro server web. Dopo la richiesta di questo file nel browser con "https://miosito.tld/phpinfo.php", ri­ce­ve­re­te tutte le in­for­ma­zio­ni sulle opzioni di­spo­ni­bi­li nella vostra versione PHP e anche riguardo alla di­spo­ni­bi­li­tà di cURL.

Per ri­chie­de­re ulteriori in­for­ma­zio­ni a un sito, bastano alcune righe di codici PHP. Qui troverete un esempio di richiesta al sito italiano di Microsoft:

<?php
$site = curl_init(); //cURL-Initialize_Handler
curl_setopt($site, CURLOPT_URL, "https://www.microsoft.com/it-it"); //fornire l’URL
curl_setopt($site,CURLOPT_RETURNTRANSFER,true); // stabilire i parametri facoltativi
curl_setopt($site,CURLOPT_HEADER, true); //mostrare l’header; nascondere con “false”
$result=curl_exec($site); //eseguire il cURL
curl_close($site);
echo $result;
?>

Salvate ad esempio questo codice come curlinfo.php nella root del vostro server web.

Poiché solo il puro codice PHP si trova nel file, le in­for­ma­zio­ni relative all’header saranno ri­la­scia­te come scritta del browser, e quindi non saranno for­mat­ta­te. Una routine di questo tipo rap­pre­sen­ta il primo passaggio per in­cor­po­ra­re dati da altri siti nel proprio con PHP e cURL.

Po­wer­Shell vs prompt dei comandi

Con Windows 10 è stato im­ple­men­ta­to un altro im­por­tan­te strumento di sviluppo: Po­wer­Shell. Dopo averlo aperto con l’icona di Windows e un clic con il tasto destro del mouse, è ri­co­no­sci­bi­le dalle lettere “PS” prima del path di Windows. La Windows Po­wer­Shell dovrebbe so­sti­tui­re in futuro con il termine “console” il prompt dei comandi e offre un numero superiore di pos­si­bi­li­tà per am­mi­ni­stra­re siti e server. In ogni caso, soltanto alcuni dei comandi di cURL sono uti­liz­za­bi­li nella Po­wer­Shell. Altri devono essere “tradotti”.

Il tra­dut­to­re è già in­cor­po­ra­to e si attiva con Po­wer­Shell con “GetAlias” più il comando cURL.

PS C:\WINDOWS\system32>Get-Alias curl
# genera il risultato
CommandType	Name	Version	Source
-----------	----	-------	------
Alias	curl ->Invoke-WebRequest

In questo modo possiamo scoprire quale comando di Po­wer­Shell permette di fare il cURL a un sito.

PS C:\WINDOWS\system32> Invoke-WebRequest https://google.com/
Vai al menu prin­ci­pa­le