Cos'è CURL?
CURL è uno strumento per il trasferimento dei dati. È inoltre disponibile come libreria per sviluppatori e come CLI per casi d'uso basati su terminale. Entrambi hanno lo stesso motore all'interno (la verità è che lo strumento CLI è solo il programma che usa la libreria nascosta).
CURL funziona con ogni protocollo che potresti aver utilizzato. Vai su questo sito per verificare se CURL funziona con il tuo protocollo di destinazione o meno.
Cosa può fare CURL?
Hmm... Tutto ciò che riguarda il trasferimento dei dati. Tutti devono aver usato un browser. Anche adesso stai leggendo questo articolo tramite il tuo browser. Quello che fa il browser, richiede una pagina e la ottiene come risposta. Può scrivere e leggere i cookie. E poi lo rende (visualizzando il contenuto, le immagini ed eseguendo gli script JS).
CURL può fare tutto un browser tranne il rendering dell'ultima parte perché non è correlato al trasferimento dei dati.
In conclusione, CURL può scaricare pagine HTML, compilare moduli HTML e inviarli, scaricare file da un server FTP/HTTP e caricare file sullo stesso e leggere/scrivere cookie.
Questo lo rende uno strumento eccellente da utilizzare in scripting, debugging e analisi forense, ecc.
Esempi di comandi Curl
Vediamo cosa puoi fare con Curl.
1. Ottieni una risposta da un server
Tutto dal server è una risposta alla richiesta. Quindi ottenere una pagina HTML equivale a scaricare un file.
Per ottenere una risposta HTML da http://info.cern.c,
curl http://info.cern.ch/
Per ottenere l'elenco dei post come risposta da un server ( https://jsonplaceholder.typicode.com/posts),
curl https://jsonplaceholder.typicode.com/posts
Poiché sappiamo come ottenere una risposta da un server, puoi scaricare un file (ad esempio il logo di Google).
curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Il comando precedente scaricherà i dati dell'immagine binaria che non puoi visualizzare nel terminale. Devi salvarli e quindi utilizzare un visualizzatore di foto per vederli.
Nota che vari flag di opzione possono essere posizionati ovunque sul comando invece dell'ordine rigoroso. Quindi non preoccuparti se hai posizionato qualche opzione nell'ultimo mentre gli esempi avevano il flag all'inizio.
2. Salva il file con un nome file predefinito
Ogni file servito su Internet ha un nome file. Per utilizzare lo stesso nome file del nome file scaricato, usa il flag -O.
curl -O http://www.google.com/robots.txt
3. Salva il file con nome personalizzato
Per salvare il nome del file con il tuo nome personalizzato, usa il flag -o seguito (rigorosamente) da un nome personalizzato.
curl -O http://www.google.com/robots.txt googleRobots.txt
4. Scarica più file
Per scaricare più file, separali con uno spazio bianco.
curl url1 url2 url3
Se vuoi usare il flag -O per tutti gli URL, usa
curl url1 url2 url3 -O -O -O
La stessa soluzione dovrebbe essere eseguita per qualsiasi flag. Questo perché la prima occorrenza di un determinato flag è per il primo URL, il secondo flag è per il secondo URL e così via.
5. Scarica una serie di file
curl ha la capacità integrata di scaricare una serie di file dal server. Questo può essere illustrato dal seguente esempio.
curl http://www.google.com/logo/logo[1-9].png
Il comando precedente scarica i file da logo1.png, logo2.png, logo3.png e fino a logo9.png.
6. Scarica un file solo se più recente
Per scaricare un file solo se l'ora di modifica del file è più recente dell'ora indicata.
curl url -z "DD MMM YY MM:HH:SS"
7. Riprendi il download
Se hai già trasferito parzialmente un file, puoi riprendere il trasferimento utilizzando il flag -C. L'offset da cui è necessario continuare il trasferimento deve essere passato come parametro al flag -C.
curl -C 1024 http://seeni.linuxhandbook.org/files/largeFile.mpv -O
8. Carica un file
Per caricare un file sul server, è necessario utilizzare il flag -T seguito dal percorso del file sul sistema locale.
curl -T uploadFile.txt http://upload.linuxhandbook.org/files
9. Elimina un file
Per eliminare un file chiamato deleteFile.txt in un server, è possibile utilizzare il flag -X destinato a qualsiasi verbo/metodo HTTP (come GET, POST, PUT, DELETE, PATCH). La maggior parte dei server FTP avrà configurato il metodo DELETE se non tutti i metodi HTTP avanzati.
curl -X DELETE http://upload.linuxhandbook.org/files/deleteFile.txt
Puoi anche modificare il comando precedente per qualsiasi metodo HTTP per eseguire l'attività corrispondente. Ad esempio, se il tuo server consente il metodo TRUNCATE (questo è un metodo HTTP inventato, non standard) che rimuove solo il contenuto del file e non il file, puoi usare il comando simile al seguente.
curl -X TRUNCATE http://upload.linuxhandbook.org/files/mysql.dump
Sopra menzionati sono i principali usi del ricciolo. Ma potrebbero esserci difficoltà che devono essere combattute come reindirizzamenti, autenticazione utente, certificati SSL, ecc. Possiamo chiamarli componenti aggiuntivi in quanto sono solo opzionali ma rimangono comunque cruciali per determinati scopi. Vediamo alcuni di questi componenti aggiuntivi e come gestirli con curl nella prossima sezione.
10. Evita i reindirizzamenti
Quando richiedi http://www.google.com , ti verrà offerta solo la pagina regionale come www.google.co.in. Questo viene fatto con l'aiuto di reindirizzamenti (pacchetti HTTP con codici di stato nell'intervallo 300-399).
Puoi evitare i reindirizzamenti con l'opzione L.
curl -L http://www.google.com
11. Autenticazione
Quando il server è configurato per essere utilizzato solo per determinate persone con credenziali, verranno forniti loro nome utente e password. Si può effettuare il login con l'aiuto di -u flag.
curl -u username:password http://seeni.linuxhandbook.org/files/tasks.txt
12. Limita il trasferimento di dati
Se si desidera imporre un limite di trasferimento dei dati, utilizzare il flag –limit-rate. Il comando seguente tenta di scaricare il file con limite di velocità di 10 K.
curl --limit-rate 10K http://seeni.linuxhandbook.org/files/logoDetails.tgz
13. Mostra/Nascondi stato del trasferimento
Se la risposta viene reindirizzata dal terminale come il download, il caricamento e poi curl mostra automaticamente lo stato/l'indicatore di avanzamento per il trasferimento.
Se non vuoi vedere l'indicatore di avanzamento, aggiungi semplicemente il comando con il flag -s. I progressi non verranno mostrati per la risposta diretta al terminale.
14. Ignora i certificati SSL
Ricordi le situazioni in cui è necessario fornire un'eccezione al certificato di sicurezza per visitare alcuni siti Web? Se ritieni attendibili le origini e desideri eseguire un trasferimento di dati, puoi ignorare la convalida del certificato SSL utilizzando il flag -k.
curl -k https://notSoSecure.org/files/logoDetails.tgz
15. Ottieni anche informazioni sull'intestazione
Per visualizzare le informazioni sull'intestazione insieme ai dati trasferiti, usa il flag -i.
curl -i http://www.google.com/robots.txt
16. Ottieni solo informazioni sull'intestazione
Se vuoi solo le intestazioni e non i dati, usa il flag -I
curl -I http://www.google.com/robots.txt
17. Cambia User Agent
Alcuni siti Web e server non consentono a determinati tipi di dispositivi di accedere ai loro sistemi. Ma come fanno a sapere che stiamo usando un tipo specifico di dispositivo? Ciò è dovuto al campo dell'intestazione HTTP User-Agent. Possiamo cambiare questo User Agent con -A flag.
curl -A "Mozilla FireFox(42.0)" http://notAllowedForCLI.sites.org/randomFile.png
18. Invio dati al Server
Se il server ha bisogno di alcuni dati come token o chiave API, usa il flag -d per inviare i dati. I dati che devono essere inviati devono seguire il flag nel comando. Si può usare "&" per combinare più dati. Questo di solito viene fatto dalle richieste GET e POST nei browser. Questo è uno dei modi in cui puoi inviare le informazioni del tuo modulo.
curl -d "token=34343abvfgh&name='seeni'" http://api.restful.org/getcontent
19. Scrivi i cookie in un file
I cookie sono alcune piccole informazioni che consentono di mantenere una sessione con un protocollo HTTP stateless. Se vuoi saperne di più sui cookie, fai riferimento a questa fantastica risorsa.
Per scrivere i cookie in un file, è necessario utilizzare il flag -c seguito dal nome del file del cookie.
curl -c googleCookie.txt http://www.google.com/files
20. Lettura dei cookie da un file
Per leggere un cookie dal file, è possibile utilizzare il flag -b seguito dal nome del file del cookie.
curl -b googleCookie.txt http://www.google.com/files
Nota che -b flag legge solo il cookie dal file. Quindi, se il server invia nuovamente un altro cookie, potrebbe essere necessario utilizzare l'opzione -c per scriverli.
21. Inizia una nuova sessione
Se vuoi avviare una nuova sessione eliminando i cookie, usa il flag -j. Avvia una nuova sessione anche se hai fornito il file cookie da leggere con il flag -b.
curl -b googleCookie.txt http://www.google.com/files -j
Congratulazioni! Sei arrivato alla fine. Se trovi utile questo articolo, condividilo con i tuoi amici e seguici sui social. Se hai suggerimenti su questo articolo o qualsiasi altro argomento, non esitare a rilasciarli di seguito.