Ricerca nel sito web

15 suggerimenti su come utilizzare il comando 'Curl' in Linux


A metà degli anni '90, quando Internet era ancora agli albori, un programmatore svedese di nome Daniel Stenberg iniziò un progetto che alla fine divenne quello che oggi conosciamo come curl.

Inizialmente, il suo obiettivo era sviluppare un bot in grado di scaricare periodicamente i tassi di cambio da una pagina web e di fornire agli utenti IRC l'equivalente in corone svedesi in dollari statunitensi.

Per farla breve, il progetto ha prosperato, aggiungendo diversi protocolli e funzionalità lungo il percorso, e il resto è storia. Ora tuffiamoci con entrambi i piedi e impariamo come utilizzare curl per trasferire dati e altro in Linux!

Abbiamo messo insieme per te il seguente elenco di 15 comandi curl.

1. Visualizza la versione dell'arricciatura

Le opzioni -V o --version non solo restituiranno la versione, ma anche i protocolli e le funzionalità supportati nella versione corrente.

curl --version

curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

2. Scarica un file

Se desideri scaricare un file, puoi utilizzare curl con le opzioni -O o -o. Il primo salverà il file nella directory di lavoro corrente con lo stesso nome della posizione remota, mentre il secondo consente di specificare un nome file e/o una posizione diversa.

curl -O http://yourdomain.com/yourfile.tar.gz # Save as yourfile.tar.gz
curl -o newfile.tar.gz http://yourdomain.com/yourfile.tar.gz # Save as newfile.tar.gz

3. Riprendere un download interrotto

Se un download è stato interrotto per qualche motivo (ad esempio, utilizzando Ctrl + c), puoi riprenderlo molto facilmente. L'uso di -C – (trattino C, spazio trattino) indica a curl di riprendere il download iniziando da dove era stato interrotto.

curl -C - -O http://yourdomain.com/yourfile.tar.gz

4. Scarica più file

Con il seguente comando scaricherai info.html e about.html da http://tuosito.com e http:/ /miosito.com, rispettivamente, in una volta sola.

curl -O http://yoursite.com/info.html -O http://mysite.com/about.html 

5. Scarica URL da un file

Se combini curl con xargs, puoi scaricare file da un elenco di URL in un file.

xargs -n 1 curl -O < listurls.txt

6. Utilizzare un proxy con o senza autenticazione

Se sei dietro un server proxy in ascolto sulla porta 8080 su proxy.tuodominio.com, fallo.

curl -x proxy.yourdomain.com:8080 -U user:password -O http://yourdomain.com/yourfile.tar.gz

dove puoi saltare -U utente:password se il tuo proxy non richiede l'autenticazione.

7. Interrogare le intestazioni HTTP

Le intestazioni HTTP consentono al server Web remoto di inviare informazioni aggiuntive su se stesso insieme alla richiesta effettiva. Ciò fornisce al client i dettagli su come viene gestita la richiesta.

Per interrogare le intestazioni HTTP da un sito Web, eseguire:

curl -I linux-console.net

Queste informazioni sono disponibili anche negli strumenti per sviluppatori del tuo browser.

8. Effettuare una richiesta POST con parametri

Il comando seguente invierà i parametri firstName e lastName, insieme ai valori corrispondenti, a https://yourdomain.com/info.php .

curl --data "firstName=John&lastName=Doe" https://yourdomain.com/info.php

Puoi utilizzare questo suggerimento per simulare il comportamento di un normale modulo HTML.

9. Scarica file da un server FTP con o senza autenticazione

Se un server FTP remoto prevede connessioni su ftp://yourftpserver, il seguente comando scaricherà yourfile.tar.gz nella directory di lavoro corrente.

curl -u username:password -O ftp://yourftpserver/yourfile.tar.gz 

dove puoi saltare -u nomeutente:password se il server FTP consente accessi anonimi.

10. Carica file su un server FTP con o senza autenticazione

Per caricare un file locale denominato mylocalfile.tar.gz su ftp://yourftpserver utilizzando curl, esegui:

curl -u username:password -T mylocalfile.tar.gz ftp://yourftpserver

11. Specificare l'agente utente

Lo user agent fa parte delle informazioni che vengono inviate insieme a una richiesta HTTP. Indica quale browser ha utilizzato il client per effettuare la richiesta. Vediamo cosa utilizza la nostra versione corrente di curl come predefinita e cambiamola in seguito in "Sono un nuovo browser web":

curl -I http://localhost --user-agent "I am a new web browser"

12. Memorizza i cookie del sito web

Vuoi vedere quali cookie vengono scaricati sul tuo computer quando navighi su https://www.cnn.com? Utilizza il seguente comando per salvarli in cnncookies.txt. È quindi possibile utilizzare il comando cat per visualizzare il file.

curl --cookie-jar cnncookies.txt https://www.cnn.com/index.html -O

13. Invia cookie del sito web

È possibile utilizzare i cookie recuperati nell'ultimo suggerimento nelle successive richieste allo stesso sito.

curl --cookie cnncookies.txt https://www.cnn.com

14. Modificare la risoluzione dei nomi

Se sei uno sviluppatore web e desideri testare una versione locale di tuodominio.com prima di pubblicarla, puoi fare in modo che curl risolusca http://www.tuodominio.com al tuo localhost in questo modo:

curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/

Pertanto, la query su http://www.tuodominio.com dirà a curl di richiedere il sito da localhost invece di utilizzare DNS o il file /etc/hosts.

15. Limita la velocità di download

Per evitare che Curl utilizzi la tua larghezza di banda, puoi limitare la velocità di download a 100 KB/s come segue.

curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
Riepilogo

In questo articolo abbiamo condiviso una breve storia delle origini del riccio e spiegato come utilizzarlo attraverso 15 esempi pratici.

Conosci altri comandi curl che potremmo aver perso in questo articolo? Sentiti libero di condividerli con la nostra community nei commenti! Inoltre, se avete domande, non esitate a farcelo sapere. Restiamo in attesa della vostra risposta!