cURL in Windows: ecco come avvicinarsi in modo semplice
L’abbreviazione 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 trasferimento di dati in computer collegati in rete. L'autore del software cURL è il programmatore Daniel Stenberg. Il suo scopo originario era di mettere a disposizione dei partecipanti 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 dall'aggiornamento 1803, supporta anche cURL. La vasta guida Everything curl rappresenta solo un piccolo assaggio delle numerose possibilità offerte agli sviluppatori da questo strumento. Con l’aiuto di alcuni esempi pratici, qui di seguito scoprirete cosa può fare cURL per Windows. Potrete sperimentare alcune cose anche da soli.
Cos’è di preciso cURL per Windows
Come negli altri sistemi operativi, cURL per Windows è composto dal file eseguibile curl.exe e dalla libreria libcurl, scritta nel linguaggio di programmazione API, che permette di applicare le molte possibilità 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> rappresenta l’indirizzo del sito con cui si vuole interagire. Con le [options …] si specificano le istruzioni che definiscono processi come visualizzazioni 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 utilizzate allo stesso modo sia l’opzione “-G” sia quella “--get”.
Verificare la disponibilità e la versione di cURL
Verificate prima di tutto se nella vostra copia di Windows è presente cURL e in caso di risposta affermativa, 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
Riceverete le informazioni sulla versione di cURL disponibile nella vostra copia di Windows 10.
La diffusione di cURL ha consentito un aumento significativo del numero dei protocolli permessi. Questo diventa evidente nel confronto tra le due versioni sopra menzionate.
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 possibilità di trasferire dati a diverse reti.
Installare la versione aggiornata di cURL
Con la versione di cURL installata con Windows è presente un path, che può essere visualizzato sia dall’utente corrente sia dall'amministratore. Se volete utilizzare tutti i protocolli disponibili di cURL, dovete avere installato la versione corrente di cURL per Windows. Il modo più semplice è attraverso il download della versione più aggiornata disponibile come file ZIP dal sito dello sviluppatore. Qui troverete anche le informazioni 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 eseguibile curl.exe si trova nella sottocartella\bin, che contiene anche i file del certificato curl-ca-bundle.crt, necessario per utilizzare il protocollo SFTP o il protocollo 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 disposizione le funzionalità complete di cURL per Windows, che saranno rappresentate in seguito. Per fare una prova, potete semplicemente richiedere la versione, come descritto di sopra. Il metodo per aggiornare 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 disattivare il path della versione precedente.
cURL in alcuni semplici esempi
Per utilizzare cURL con Windows dovete digitare i comandi di testo nel prompt dei comandi. Per una panoramica rapida utilizzate il comando:
C:\curl\bin>curl --help
Per avere il manuale dettagliato, digitate:
C:\curl\bin>curl --manual
Entrambi i risultati che appariranno 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ù rapidamente ai comandi grazie alla funzione di ricerca all’interno del documento senza impegnare il prompt dei comandi.
Utilizzate un editor di testo per Windows: in questo modo potrete segnare e verificare i comandi per cURL e poi copiarli nel prompt dei comandi. Questo vi risparmierà molti (e frustranti) sforzi di digitazione, quando si verificano involontari errori di scrittura. Inoltre potrete creare un vostro “mondo dei comandi” per le azioni future utilizzando 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 informazioni di un sito sull’unità locale
Una semplice routine di cURL vi permetterà anche di salvare su un file locale informazioni relative a un sito. Il file che contiene le informazioni, deve avere la denominazione infos.html ed essere salvato sul PC locale nella stessa directory del file per l’installazione 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 dimensioni superano i 700 Kilobyte con le informazioni sullo stato preciso del sito dell’emittente tedesca N-TV al momento della richiesta. In <title> la dicitura “Nachrichten aktuelle Schlagzeilen und Videos” sta a significare “Notizie, titoli attuali e video”:
Se richiedete 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 rinominato 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>) utilizziamo un’opzione prima dell’indirizzo web richiesto (I = i maiuscola):
curl --head https://google.com
#oppure
curl -I https://google.com
Estrarre informazioni più ampie
Per estrarre ancora più informazioni tramite cURL, si può completare il risultato con l’opzione aggiuntiva “v” oppure “--verbose”. Così, tra le varie cose, si otterranno informazioni sugli indirizzi IPv6 utilizzati, sulle porte, sui certificati aggiuntivi e molto altro ancora.
curl -I https://google.com -v
#oppure
curl --head https://google.com --verbose
Upload di file tramite il protocollo SFTP
Qui il comando cURL diventa un po’ più complesso, perché per l’SFTP bisogna trasmettere al server il riconoscimento 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 digitazione del comando, cURL per Windows reagirà in tempi brevi e rapidi con “curl:(67) Authentication failure”. Se si cerca di trasferire un file con una versione di cURL precedente alla 7.55.1, vi apparirà la notifica “curl:(1) Protocol "sftp" not supported or disabled in libcurl”.
Download tramite protocollo SFTP e cURL
Con la versione corrente di cURL, il download funziona in modo altrettanto semplice senza un particolare client FTP. Naturalmente, l’unico requisito necessario sarà che il file da scaricare sia disponibile sul server FTP:
curl -k sftp://-prova-ftp-server:22 --user Utenteprova:Passwordprova -o fileprova.pdf
cURL è diventato uno strumento molto potente. Procedete con cautela, se desiderate usare cURL nel vostro ambiente server. Mettendo i dati in sicurezza e con un’unità di ripristino di Windows, sarete al sicuro nel caso qualcosa andasse storto anche solo una volta.
cURL per le previsioni meteo
Che sia possibile elaborare con i caratteri codice ASCII le relative (e ancora utili) informazioni, è dimostrato dalla richiesta delle previsioni meteo locali:
curl http://wttr.in/LOCATION
È un’operazione che si può ripetere con qualsiasi località a piacere.
cURL e PHP: una bella coppia
Per riuscire a lavorare con cURL anche nelle operazioni pratiche di programmazione quotidiana, cURL è disponibile anche in PHP. Verificate il vostro server web con una richiesta PHP:
<?php
phpinfo();
?>
Salvate questo codice come file phpinfo.php e inseritelo nella root del vostro server web. Dopo la richiesta di questo file nel browser con "https://miosito.tld/phpinfo.php", riceverete tutte le informazioni sulle opzioni disponibili nella vostra versione PHP e anche riguardo alla disponibilità di cURL.
Per richiedere ulteriori informazioni 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 informazioni relative all’header saranno rilasciate come scritta del browser, e quindi non saranno formattate. Una routine di questo tipo rappresenta il primo passaggio per incorporare dati da altri siti nel proprio con PHP e cURL.
PowerShell vs prompt dei comandi
Con Windows 10 è stato implementato un altro importante strumento di sviluppo: PowerShell. Dopo averlo aperto con l’icona di Windows e un clic con il tasto destro del mouse, è riconoscibile dalle lettere “PS” prima del path di Windows. La Windows PowerShell dovrebbe sostituire in futuro con il termine “console” il prompt dei comandi e offre un numero superiore di possibilità per amministrare siti e server. In ogni caso, soltanto alcuni dei comandi di cURL sono utilizzabili nella PowerShell. Altri devono essere “tradotti”.
Il traduttore è già incorporato e si attiva con PowerShell 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 PowerShell permette di fare il cURL a un sito.
PS C:\WINDOWS\system32> Invoke-WebRequest https://google.com/