Ai fini di questa guida, ci concentreremo principalmente sul download di file utilizzando i protocolli HTTP e SFTP, che sono i più comuni. È importante notare che cURL supporta una vasta gamma di protocolli. Sebbene cURL sia relativamente semplice da utilizzare, è consigliabile avere una certa familiarità con la riga di comando per sfruttare al meglio le sue funzionalità.
Scarica i file di corrispondenza esatta con curl -O
Utilizzando il flag maiuscolo -O, cURL scaricherà il file dal server remoto mantenendo il nome originale. La sintassi di base è la seguente:
curl -O [url]
Ad esempio, se il file specificato è denominato «sample.zip», verrà scaricato come «sample.zip». Se il file ha un nome più complesso, come «LongExampleFileNameForOSXDaily-v-1-3-51-revision-515b12-readme.txt», cURL lo salverà esattamente con quel nome sul computer locale. In generale, i nomi di file più lunghi sono gestiti meglio con il flag -o, che esploreremo più avanti.
Se sei un lettore abituale, ricorderai che abbiamo utilizzato il comando curl -O quando abbiamo parlato di come estrarre contenuti audio da file di streaming m3u.
All’inizio di ogni download, cURL mostra la percentuale trasferita, il tempo impiegato, il tempo rimanente e la velocità di trasferimento.
Lo screenshot che vedete fornisce una rappresentazione visiva di quanto descritto, simile a questo:
% Totale% Ricevuto% Xferd Velocità media Tempo Tempo Tempo Corrente
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 -: -: – -: -: – -: -: – 142k
Con la velocità di trasferimento indicata, puoi anche reindirizzare l’output di cURL a /dev/null per testare la velocità della tua connessione internet. Tuttavia, il comando wget fornisce una barra di trasferimento più intuitiva, rendendolo più adatto per questo scopo.
Salvataggio di un file remoto con un nome diverso con curl -o
Utilizzando il flag minuscolo -o, puoi specificare un nome di file diverso per il file scaricato. Questo è utile per semplificare nomi di file lunghi o per etichettare i file in modo che siano più facili da trovare. La sintassi generale è:
curl -o [shortname] [url]
Ad esempio, se desideri scaricare un file IPSW iOS da un server Apple senza l’intero nome lungo, puoi utilizzare:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5,3_7.0.4_11B554a_Restore.ipsw
Questo scaricherà il file «iPhone5,3_7.0.4_11B554a_Restore.ipsw», ma lo salverà con un nome più breve e significativo come «iPhone5C-704.ipsw».
Se preferisci non salvare il file nella directory corrente, puoi specificare un percorso come parte del nome del file in questo modo:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Download di più file contemporaneamente con cURL
cURL può facilmente scaricare più file contemporaneamente. Tutto ciò che devi fare è specificare più URL in questo modo:
curl -O [URL 1] [URL 2] [URL 3]
Per file con nomi diversi o ospitati su server diversi, è possibile utilizzare l’URL completo, ad esempio:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Se i file da scaricare seguono una numerazione incrementale, puoi usare le parentesi per specificare un intervallo, così:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt
Questo comando scaricherà i file fdl-1.1.txt, fd1-1.2.txt e fd1-1.3.txt tutti in una volta, senza dover specificare ogni singolo URL. Ovviamente, questo funziona solo se i file si trovano nella stessa directory e dominio.
Autenticazione con cURL
Puoi anche autenticarvi su un server usando cURL con il flag -u:
curl -u utente:password -O ftp://remote_url/file-to-download.zip
Fai attenzione, però: la cronologia di bash memorizza la password in testo chiaro quando usi -u con un nome utente e una password specificati. È quindi consigliabile evitare questo approccio nella maggior parte delle situazioni. Un modo per aggirare il problema è anteporre uno spazio al comando «curl». Se non usi uno spazio, assicurati di svuotare la cronologia dei comandi in seguito per maggiore sicurezza.
Protocolli e utilizzo supportati oltre HTTP e FTP
Come accennato in precedenza, l’utilizzo di cURL va ben oltre HTTP e FTP. Infatti, la pagina di manuale di cURL elenca diversi protocolli supportati, tra cui:
curl è uno strumento per trasferire dati da o verso un server, utilizzando uno dei
protocolli supportati (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET e TFTP).
Inoltre, cURL può essere utilizzato per richieste PUT e POST, gestire cookie, proxy, tunnel, riprendere download e persino acquisire informazioni sulle intestazioni HTTP o modificare l’agente utente (effettivamente effettuando spoofing) senza la necessità di un browser web dedicato.
Come per la maggior parte delle utilità da riga di comando, puoi approfondire ulteriormente il tema cURL evocando la pagina man appropriata con il comando ‘man curl’.
Novità nel 2024: cURL e le sue potenzialità ampliato
Nel 2024, cURL continua a evolversi con nuove funzionalità e miglioramenti. Una delle novità più interessanti è l’integrazione con API RESTful, che semplifica notevolmente l’interazione con i servizi web moderni. Inoltre, le nuove opzioni di autenticazione, come OAuth 2.0, rendono più sicuro il trasferimento di dati sensibili.
Inoltre, cURL ha migliorato la gestione degli errori, fornendo messaggi più dettagliati che aiutano a diagnosticare problemi durante il download o l’upload di file. Queste migliorie rendono cURL uno strumento ancora più potente e versatile per gli sviluppatori e gli utenti avanzati.
Infine, cURL sta adottando sempre più l’uso di protocolli di sicurezza avanzati, come HTTP/3, garantendo così che le comunicazioni rimangano sicure e performanti. In un mondo dove la sicurezza dei dati è fondamentale, cURL si posiziona come un alleato indispensabile per chi lavora con il web.