cURL Cheat Sheet
Comandi utili di cUrl con parametri
Ecco un riferimento rapido per i comandi cURL più utili con i loro parametri:
L’immagine sopra è generata da Flux - modello AI testo a immagine.
Utilizzo base di cURL
- Scaricare un file:
curl http://example.com/file.zip -o file.zip
- Scaricare più file:
curl -O URL1 -O URL2
- Seguire i reindirizzamenti:
curl -L http://example.com/file
- Visualizzare solo gli header:
curl -I http://example.com
Autenticazione
- Autenticazione di base:
curl -u username:password http://example.com
- Usare il file .netrc:
curl --netrc-file .netrc http://example.com
Metodi HTTP
- Richiesta POST:
curl -X POST -d 'name=value' http://example.com
- Richiesta PUT:
curl -X PUT -d @file http://example.com
- Metodo personalizzato:
curl -X METODO http://example.com
Header e dati
- Aggiungere un header personalizzato:
curl -H "X-Header: Value" http://example.com
- Inviare dati JSON:
curl -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com
- Inviare dati in formato form:
curl -F "key=value" -F "file=@localfile" http://example.com
Opzioni SSL/TLS
- Ignorare la verifica del certificato SSL:
curl -k https://example.com
- Usare un certificato client:
curl --cert cert.pem --key key.pem https://example.com
Proxy e rete
- Usare un proxy:
curl -x proxysever.server.com:PORT http://example.com
- Limitare la velocità di download:
curl --limit-rate 1000B -O http://example.com/file
Controllo dell’output
- Modalità silenziosa:
curl -s http://example.com
- Modalità verbosa:
curl -v http://example.com
- Scrivere l’output in un file:
curl -o file.html http://example.com
- Salvare con il nome del file remoto:
curl -O http://example.com/file.zip
Altri utili
- Riprendere un download fallito:
curl -C - -o partial_file.zip http://example.com/file.zip
- Impostare un timeout:
curl --connect-timeout 10 http://example.com
- Usare un file di configurazione:
curl -K config_file http://example.com
Questo riferimento rapido copre i comandi cURL più comunemente utilizzati e i loro parametri, fornendo un’utile guida rapida per varie operazioni HTTP e trasferimenti di dati.
Comandi avanzati di cURL
Ecco alcuni comandi avanzati di curl per il debug:
-
Output verboso:
curl -v https://example.com
Questo comando fornisce informazioni dettagliate sulla richiesta e sulla risposta, inclusi gli header e i dettagli della connessione. -
Dump completo:
curl --trace - https://example.com
Questo output mostra un hexdump di tutti i dati in entrata e in uscita, offrendo una visione completa di tutta la comunicazione. -
Traccia con timestamp:
curl --trace - --trace-time https://example.com
Questo aggiunge timestamp all’output della traccia, aiutando nell’analisi dei problemi legati al tempo. -
Visualizzare solo gli header di risposta:
curl -s -o /dev/null -D - https://example.com
Questo comando mostra solo gli header di risposta, utile per un’analisi rapida degli header. -
Visualizzare solo gli header di richiesta:
curl -v -s -o /dev/null --stderr - https://example.com | grep '^>'
Questo comando complesso filtra solo gli header di richiesta, utile per ispezionare ciò che viene inviato. -
Usare il debugger di Pantheon:
curl -I -H "Pantheon-Debug:1" https://example.com
Questo comando utilizza l’intestazione di debug di Pantheon per ottenere ulteriori informazioni sulla richiesta, utile per i siti ospitati su Pantheon. -
Forzare il protocollo HTTP/2:
curl --http2 https://example.com
Questo assicura l’uso del protocollo HTTP/2, che può essere combinato con -I per verificare il supporto HTTP/2. -
Debug con netcat: In un terminale:
nc -l 1234
In un altro:curl http://127.0.0.1:1234
Questo permette di vedere esattamente cosa invia curl, utile per il debug del payload.
Questi comandi avanzati offrono potenti capacità di debug, permettendo agli sviluppatori di ispezionare vari aspetti delle comunicazioni HTTP e risolvere problemi complessi.
Uso comune di cURL
curl è uno strumento versatile da riga di comando con numerose applicazioni. Ecco alcuni dei casi d’uso più comuni per curl:
Interazioni web
- Scaricare file: curl può scaricare file da URL.
- Web scraping: curl può recuperare il contenuto delle pagine web per scopi di scraping.
- Testare siti web: curl è utile per verificare se un sito web è accessibile e per recuperare il suo contenuto.
Interazioni API
- Inviare richieste API: curl supporta diversi metodi HTTP (GET, POST, PUT, DELETE) per interagire con le API.
- Testare endpoint API: curl fornisce un modo rapido per testare e debuggare endpoint API senza necessitare di un client API dedicato.
Risoluzione di problemi di rete
- Verificare la connettività: curl può essere utilizzato per verificare le connessioni di rete e risolvere problemi.
- Testare DNS: curl permette di forzare server DNS specifici per risolvere problemi legati al DNS.
- Ispezionare gli header: curl può visualizzare gli header HTTP, utile per il debug.
Trasferimento dati
- Operazioni FTP: curl supporta il trasferimento di file utilizzando il Protocollo di Trasferimento File (FTP).
- Interazioni SMTP: curl può essere utilizzato per inviare email tramite il Simple Mail Transfer Protocol (SMTP).
Sicurezza e autenticazione
- Connessioni SSL: curl supporta connessioni sicure utilizzando SSL/TLS.
- Autenticazione: curl può gestire diversi metodi di autenticazione, tra cui l’autenticazione di base e i certificati client.
Sviluppo e debug
- Simulare diversi metodi HTTP: curl permette agli sviluppatori di testare facilmente diversi metodi HTTP.
- Logging verboso: la modalità verbosa di curl fornisce informazioni dettagliate sul ciclo di richiesta-risposta, utile per il debug.
Questi casi d’uso dimostrano la flessibilità di curl come strumento per interazioni web, test API, risoluzione di problemi di rete e compiti di sviluppo.
Test del rendimento del sito web con cURL
curl è uno strumento potente per testare il rendimento del sito web. Ecco come puoi usarlo per misurare diversi aspetti della velocità di caricamento di un sito web:
Test di rendimento base
Per ottenere una misura semplice del tempo di caricamento di un sito web, usa questo comando:
curl -o /dev/null -s -w "Tempo totale: %{time_total}s\n" "https://example.com"
Questo comando visualizzerà il tempo totale necessario per recuperare il sito web[2].
Metriche di rendimento dettagliate
Per un’analisi più completa, puoi utilizzare curl per misurare diverse metriche di rendimento:
curl -s -w 'Test del tempo di risposta del sito web per :%{url_effective}\n\nTempo di lookup DNS:\t\t%{time_namelookup}\nTempo di connessione:\t\t%{time_connect}\nTempo pre-trasferimento:\t%{time_pretransfer}\nTempo inizio trasferimento:\t%{time_starttransfer}\n\nTempo totale:\t\t%{time_total}\n' -o /dev/null https://example.com
Questo comando fornisce una suddivisione delle diverse fasi del processo di caricamento, tra cui il tempo di lookup DNS, il tempo di connessione e il tempo totale[1].
Metriche avanzate
Per un’analisi ancora più dettagliata, puoi includere ulteriori metriche:
curl -o /dev/null -w "Versione HTTP: %{http_version}\nDimensione pagina: %{size_download} byte\nCodice risposta: %{response_code}\nLookup DNS: %{time_namelookup} sec\nTempo di connessione: %{time_connect} sec\nTempo per primo byte: %{time_starttransfer} sec\nTempo totale: %{time_total} sec\n" -s https://example.com
Questo comando include informazioni sulla versione HTTP, sulla dimensione della pagina e sul codice di risposta[3].
Benchmarking di più richieste
Per testare la coerenza o monitorare il rendimento nel tempo, puoi utilizzare un ciclo per effettuare più richieste:
for i in {1..5}; do curl -o /dev/null -s -w "Richiesta $i Tempo totale: %{time_total}\n" https://example.com; done
Questo eseguirà il test cinque volte e mostrerà il tempo totale per ciascuna richiesta[3].
Creare uno script per testare il rendimento
Puoi creare uno script bash semplice per automatizzare questi test e salvare i risultati:
#!/bin/bash
curl -s -w 'Test del tempo di risposta del sito web per :%{url_effective}\n\nTempo di lookup DNS:\t\t%{time_namelookup}\nTempo di connessione:\t\t%{time_connect}\nTempo pre-trasferimento:\t%{time_pretransfer}\nTempo inizio trasferimento:\t%{time_starttransfer}\n\nTempo totale:\t\t%{time_total}\n' -o /dev/null URL > webspeedtest_"$(date)"
Sostituisci “URL” con il sito web che desideri testare. Questo script salverà i risultati in un file con data[5].
Utilizzando questi comandi e script di curl, puoi misurare e monitorare efficacemente il rendimento del sito web, aiutandoti a identificare eventuali collo di bottiglia e ottimizzare i tempi di caricamento.