2019-05-29 17:47:54 +02:00
# curl
> Trasferisci dati da o ad un server.
2024-10-20 00:06:30 +02:00
> Supporta la maggior parte dei protocolli, tra cui HTTP, HTTPS, FTP, SCP, etc.
2023-05-20 07:49:15 +05:30
> Maggiori informazioni: <https://curl.se/docs/manpage.html>.
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Esegue una richiesta HTTP GET e stampa il contenuto in `stdout` :
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
`curl {{https://example.com}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Esegue una richiesta HTTP GET, [L] segue eventuali reindirizzamenti `3xx` e [D] stampa il contenuto e la intestazione della risposta su `stdout` :
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-L|--location]}} {{[-D|--dump-header]}} - {{https://example.com}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Scarica un file salvando l'[O]utput con lo stesso nome indicato nell'URL:
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-O|--remote-name]}} {{https://example.com/nome_file.zip}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Invia [d]ati form-encoded (con una richiesta POST di tipo `application/x-www-form-urlencoded` ). Utilizza `--data @file_name` oppure `--data @'-'` per leggere da `stdin` :
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-X|--request]}} POST {{[-d|--data]}} {{'name=mario'}} {{http://example.com/form}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Invia una richiesta con una intestazione aggiuntiva utilizzando un metodo HTTP personalizzato attraverso un pro[x]y (come BurpSuite) ignorando i certificati autofirmati non sicuri:
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-k|--insecure]}} {{[-x|--proxy]}} {{http://127.0.0.1:8080}} {{[-H|--header]}} {{'Authorization: Bearer token'}} {{[-X|--request]}} {{GET|PUT|POST|DELETE|PATCH|...}} {{https://example.com}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Invia dati in formato JSON, specificando la [H] intestazione content-type appropriata:
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-d|--data]}} {{'{"name":"mario"}'}} {{[-H|--header]}} {{'Content-Type: application/json'}} {{http://example.com/users/1234}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Invia il certificato client e la chiave per una risorsa omettendo la validazione del certificato:
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-E|--cert]}} {{cliente.pem}} --key {{chiave.pem}} {{[-k|--insecure]}} {{https://example.com}}`
2019-05-29 17:47:54 +02:00
2024-10-20 00:06:30 +02:00
- Risolve un hostname con un indirizzo IP personalizzato con un output [v] dettagliato (simile alla modifica del file `/etc/hosts` per la risoluzione di un DNS personalizzato):
2019-05-29 17:47:54 +02:00
2025-03-19 00:36:34 +02:00
`curl {{[-v|--verbose]}} --resolve {{example.com}}:{{80}}:{{127.0.0.1}} {{http://example.com}}`