Convertitore da curl a codice — Python, JavaScript, Go, PHP e altri

Incolla un comando curl, anche da "Copia come cURL" di Chrome, e ottieni la stessa richiesta in Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget o HTTPie.

Esempi:
Converti in
POST https://api.example.com/v1/orders · 2 header · body JSON
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json',
}

json_data = {
    'customer_id': 'cus_123',
    'items': [
        {
            'sku': 'TSHIRT-M',
            'qty': 2,
        },
    ],
    'note': 'Leave at the door',
}

response = requests.post('https://api.example.com/v1/orders', headers=headers, json=json_data)
print(response.status_code)
print(response.text)

Funziona interamente nel tuo browser. Il comando viene solo analizzato, mai eseguito né inviato altrove, quindi token e cookie al suo interno restano sul tuo computer. Sfoglia tutti gli strumenti gratuiti.

Hai trovato un problema o qualcosa che potrebbe andare meglio? Leggiamo ogni messaggio e sistemiamo le cose in fretta.

Questo convertitore gratuito da curl a codice prende un comando curl e scrive la stessa richiesta HTTP in Python (requests), JavaScript (fetch o Axios), Node.js, Go, PHP, Ruby, Java, C#, wget o HTTPie. Il flusso di lavoro tipico: trova una richiesta negli strumenti per sviluppatori del browser, scegli Copia come cURL, incollala qui e ottieni codice funzionante senza riscrivere gli header né fare a mano l'escape di un body JSON.

Il parser segue le regole di curl: le opzioni brevi si possono combinare (-sSL) o attaccare al valore (-XPOST), l'URL può comparire ovunque, -d implica POST con un content type da modulo, -G sposta i dati nella query string e --data-urlencode codifica come fa curl. Comprende le virgolette di bash, comprese le stringhe $'…' prodotte da Chrome, e quelle del cmd di Windows con gli escape ^. Tutto ciò che un linguaggio di destinazione non può esprimere, come saltare la verifica TLS in un browser, viene segnalato in un commento invece di essere scartato in silenzio.

Come si usa

  1. Negli strumenti per sviluppatori di Chrome o Edge, apri la scheda Rete, fai clic con il tasto destro su una richiesta e scegli Copia → Copia come cURL (bash o cmd). In Firefox, scegli Copia valore → Copia come cURL. Oppure scrivi un tuo comando curl.
  2. Incollalo nella casella. Metodo, URL, numero di header e tipo di body compaiono sopra l'output, così puoi verificare che sia stato letto correttamente.
  3. Scegli il linguaggio di destinazione. Il codice si aggiorna all'istante.
  4. Leggi le eventuali note nel riquadro giallo: elencano le opzioni ignorate o che richiedono attenzione.
  5. Copia il codice o scaricalo. Sostituisci token e cookie prima di pubblicarlo da qualsiasi parte.

Domande frequenti

Come si copia una richiesta come cURL da Chrome?

Apri gli strumenti per sviluppatori (F12 o Cmd+Option+I), vai alla scheda Rete e ricarica la pagina se l'elenco è vuoto. Fai clic con il tasto destro sulla richiesta che ti interessa, scegli Copia e poi Copia come cURL (bash) su macOS e Linux o Copia come cURL (cmd) su Windows. Qui funzionano entrambi i formati. Il comando copiato include i tuoi cookie e gli header di autorizzazione, quindi trattalo come una password.

Perché nel codice fetch per il browser mancano alcuni header?

I browser non consentono a JavaScript di impostare alcuni header di richiesta: Cookie, Host, Origin, Referer, in pratica User-Agent, Content-Length, Accept-Encoding, Connection e tutto ciò che inizia con Sec- o Proxy-. Nello standard Fetch si chiamano forbidden request headers (header di richiesta vietati) e li compila il browser. L'output fetch per il browser li omette e lo segnala in un commento; l'output fetch per Node.js li mantiene, perché Node non ha questa restrizione.

Che differenza c'è tra -d, --data-raw e --data-binary?

-d (--data) invia il testo come body, ma un valore che inizia con @ viene letto da un file, eliminando ritorni a capo e newline. --data-raw è uguale ma senza il comportamento @file, ed è per questo che lo usano i browser. --data-binary legge anch'esso i file con @ ma mantiene i byte esattamente come sono. Tutti e tre impostano Content-Type: application/x-www-form-urlencoded a meno che tu non passi un tuo header, e più opzioni -d vengono unite con &.

curl segue i reindirizzamenti?

Non per impostazione predefinita: restituisce la risposta 3xx a meno che tu non aggiunga -L (--location). La maggior parte delle librerie HTTP fa il contrario: fetch, Python requests, Go net/http, Axios in Node e .NET HttpClient seguono i reindirizzamenti automaticamente. Java HttpClient, PHP cURL e Ruby Net::HTTP no, quindi quando il comando contiene -L il codice generato attiva per loro il follow dei reindirizzamenti (per Ruby c'è una nota, perché Net::HTTP non ha un'opzione apposita).

Cosa fa --compressed e serve nel codice?

Fa inviare a curl un header Accept-Encoding (gzip, deflate, br e zstd, a seconda di come è stato compilato curl) e decomprimere la risposta. Browser, Python requests, Go e fetch di Node richiedono e decodificano già le risposte compresse senza che glielo si dica. Il codice generato lo aggiunge solo dove la libreria deve attivarlo esplicitamente: CURLOPT_ENCODING in PHP, AutomaticDecompression in C#, --compression=auto in wget.

Il mio comando curl viene inviato da qualche parte?

No. Il comando viene analizzato e convertito da JavaScript in questa pagina. Non viene mai eseguito né inviato a un server, quindi i token e i cookie di sessione di una richiesta copiata dagli strumenti per sviluppatori restano sul tuo computer.

Le opzioni di curl e cosa diventano

• -X / --request imposta il metodo. Senza, il metodo è GET, POST quando c'è -d, --json o -F, HEAD con -I e PUT con -T.

• -H / --header aggiunge un header. "Name:" senza nulla dopo rimuove un header, e "Name;" ne invia uno vuoto.

• --json body invia JSON e imposta sia Content-Type sia Accept su application/json (curl 7.82 e successivi).

• -F name=value e -F file=@photo.jpg;type=image/jpeg creano un body multipart/form-data; il codice usa FormData, files=, CURLFile o MultipartFormDataContent a seconda dei casi.

• -u user:password diventa autenticazione Basic; -b "a=1; b=2" diventa un header Cookie (o un dizionario cookies in Python).

• -A ed -e impostano User-Agent e Referer. -k / --insecure disattiva la verifica dei certificati; dove possibile viene mostrato con un avviso, perché non dovrebbe mai arrivare in produzione.

• -G / --get aggiunge tutti i valori di -d e --data-urlencode all'URL come query string e invia una GET.

• -s, -S, -v, -i, -o e le opzioni di avanzamento influiscono solo su come curl stampa l'output, quindi non hanno un equivalente nel codice e vengono ignorate.

Virgolette in bash e Windows, in breve

In bash, il testo tra 'virgolette singole' è letterale; le "virgolette doppie" consentono gli escape \" e \$; le stringhe $'…' comprendono gli escape \n, \t, \' e \xHH. Una barra rovesciata a fine riga continua il comando sulla riga successiva. Chrome usa $'…' ogni volta che un header o un body contiene una virgoletta singola o un carattere non ASCII.

Nel cmd di Windows, ^ è il carattere di escape e serve anche a continuare una riga. Il "Copia come cURL (cmd)" di Chrome racchiude ogni valore tra ^"…^" e fa l'escape di caratteri come &, %, { e } con ^. PowerShell è ancora diverso: in Windows PowerShell 5 curl è un alias di Invoke-WebRequest, quindi lì esegui esplicitamente curl.exe. Questo convertitore legge sia la forma bash sia quella cmd; la sintassi specifica di PowerShell, come le continuazioni con il backtick, non è supportata.

Strumenti gratuiti correlati

  • Da JSON a TypeScript — Incolla un esempio JSON e ottieni interfacce TypeScript, uno schema Zod, un JSON Schema o tipi per Go, Python, Java, C#, Kotlin, Swift e Rust.
  • Formattatore JSON — Formatta, minifica e valida JSON, con gli errori di parsing localizzati per riga e colonna. Nel tuo browser, senza upload.
  • Decoder JWT — Decodifica header e payload di un JWT, leggi la scadenza in parole semplici, verifica firme HS, RS, PS ed ES o firma un nuovo token. Nulla esce dal browser.
  • Codificatore / decodificatore Base64 — Codifica testo o file in Base64, trasforma immagini in data URI con snippet CSS e <img>, e decodifica Base64 in un file con anteprima. Nulla esce dal tuo browser.
  • Decoder di certificati SSL — Incolla un certificato PEM, una catena o una CSR, oppure carica un file .crt, per vedere SAN, scadenza, emittente, tipo di chiave e impronte. Decodificato nel browser.