logo
GeekFormat

Generatore di codice cURL

Input cURL

Incolla un comando cURL per analizzare automaticamente URL, metodo, header e body della richiesta.

Richiesta analizzata

https://api.example.com/items1 headerBody: 15 carattericurlToCode.flag.followRedirects

Codice generato

curlToCode.target.fetch

Incolla il comando curl e ottieni codice di richiesta HTTP eseguibile in 11 linguaggi in pochi secondi.

Raccomandazioni correlate

Casi d'uso

  • Dopo aver fatto clic con il tasto destro su una richiesta nel pannello Network di Chrome DevTools e selezionato «Copy as cURL», incollalo in questo strumento per convertirlo direttamente nel codice del linguaggio usato dal tuo progetto, 10 volte più veloce che scrivere la richiesta a mano
  • Durante il debug di API di terze parti quando la documentazione fornisce esempi curl, convertili rapidamente in codice Python requests/Java OkHttp/C# HttpClient per integrarli nel tuo progetto
  • Durante il debug di interfacce in ambiente di produzione, copia comandi curl da strumenti di cattura (Charles/mitmproxy/Wireshark) e convertili in codice di test unitario per verificare direttamente
  • Durante la scrittura di documentazione API, passa rapidamente tra esempi di più linguaggi, fornendo esempi di codice pronti per l'esecuzione a lettori di stack tecnologici diversi
  • Durante la risoluzione di problemi di richieste in produzione, usa curl per riprodurre il problema e poi convertilo in codice per inviarlo a colleghi o creare un Issue, facilitando la riproduzione diretta da parte di altri
  • Nello sviluppo multilinguaggio (ad esempio, passando da un progetto Python a uno Go), converti rapidamente le richieste curl esistenti in codice di chiamata del client HTTP del nuovo linguaggio, risparmiando tempo nella consultazione della documentazione
  • Negli script Shell converti i comandi curl in PowerShell Invoke-RestMethod per i colleghi delle operazioni Windows, o viceversa
  • Impara il protocollo HTTP: confrontando il codice che implementa la stessa richiesta in linguaggi diversi, comprendi le differenze API delle librerie client HTTP
  • Converti rapidamente curl -X POST -d 'json' in codice con Content-Type corretto e serializzazione JSON, evitando errori di concatenazione di stringhe a mano
  • Quando hai bisogno di chiamare API negli script CI/CD, converti i comandi curl debuggati localmente nel codice del linguaggio di script corrispondente per integrarlo nella pipeline

Funzionalità

  • 11 linguaggi/librerie target: copre frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), riga di comando (wget), tutti gli stack tecnologici principali
  • Analisi intelligente dei comandi curl: riconosce automaticamente URL, metodo HTTP, header, body, supporta apici singoli/doppi, escape con backslash, comandi multilinea (backslash a fine riga)
  • Supporto completo per parametri curl comuni: -X/--request metodo, -H/--header header, -d/--data/-F form/body JSON, -u/--user autenticazione Basic, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location seguire reindirizzamenti, --compressed decompressione automatica, -k/--insecure ignorare verifica certificato, -I/--head richiesta HEAD
  • Riconoscimento intelligente del body JSON: rileva Content-Type application/json e serializza automaticamente con JSON.parse/JSON.stringify/requests(json=)/json=, generando codice che usa oggetti direttamente invece di stringhe, più idiomatico
  • Conversione automatica dell'autenticazione Basic: al rilevamento di -u user:pass genera automaticamente l'header Authorization: Basic <base64>, usando meccanismi di autenticazione nativi in ogni linguaggio (Python auth=, OkHttp credentials, C# credentials, ecc.)
  • Badge indicatori di sicurezza: rileva automaticamente parametri come --compressed/-L/-k/-u, mostrandoli con badge visibili nei risultati dell'analisi
  • Cambio manuale del metodo HTTP: dopo aver analizzato automaticamente il metodo curl, consente di cambiare manualmente il metodo nel menu a discesa (GET/POST/PUT, ecc. 7 tipi), vedendo istantaneamente il codice corrispondente
  • Escape delle stringhe sicuro: durante la generazione del codice per ogni linguaggio usa letterali stringa nativi (apici tripli/backslash in Python, backtick in Go, @"" in C#, apici singoli in PHP, apici doppi escapati in Java), evitando errori di sintassi
  • Avvisi di errore di analisi: quando viene inserito un comando curl non valido (URL mancante, non inizia con curl, POST senza body, ecc.) mostra un avviso arancione indicando il problema specifico
  • 3 esempi con un clic: fornisce 3 esempi tipici: GET+autenticazione Token, POST+JSON, autenticazione Basic+seguire reindirizzamenti, per vedere rapidamente le capacità dello strumento
  • Cancella input con un clic: il pulsante Clear reimposta rapidamente, senza residui quando si incollano nuovi comandi
  • Elaborazione 100% locale: i comandi curl e il contenuto delle richieste vengono analizzati e convertiti completamente nel browser, non vengono inviati a nessun server, token/password sensibili non vengono divulgati
  • Copia codice con un clic: dopo aver generato il codice fai clic sul pulsante Copy per copiare negli appunti, incolla direttamente nel tuo progetto ed esegui
  • Adattamento della modalità non sicura HTTPS: il parametro -k/--insecure genera la configurazione corrispondente per ignorare la verifica del certificato TLS in Node/Go/Python/PHP/C#/PowerShell (wget usa --no-check-certificate, C# mostra avviso ServicePointManager, Node imposta NODE_TLS_REJECT_UNAUTHORIZED)

Come utilizzare

  1. Ottieni il comando curl: nel pannello Network di DevTools del browser fai clic con il tasto destro sulla richiesta → Copy → Copy as cURL (bash); oppure esporta cURL da strumenti di cattura come Postman/Charles/mitmproxy; oppure scrivi il comando curl a mano
  2. Incolla nella casella di input: incolla il comando curl nell'area di input superiore, supporta comandi di una o più righe (con backslash di continuazione), rimuovendo automaticamente i ritorni a capo
  3. Fai clic sui pulsanti di esempio per riferimento: se non hai familiarità con il formato puoi fare clic su «Esempio 1/2/3» per caricare comandi curl predefiniti e vederne l'effetto
  4. Visualizza i risultati dell'analisi: l'area dei risultati mostrerà URL, numero di header, caratteri del body e badge per compressione/reindirizzamento/ignora certificato/autenticazione Basic, mostrando avvisi arancioni in caso di problemi
  5. Regola il metodo se necessario: se il metodo riconosciuto automaticamente non è corretto (ad esempio, curl non ha -X POST ma dovrebbe essere POST), cambia manualmente il metodo HTTP nel menu a discesa
  6. Seleziona il linguaggio target: nell'area del codice target fai clic sul pulsante del linguaggio corrispondente (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, ecc.)
  7. Copia il codice: fai clic sul pulsante «Copia codice», incolla nel tuo progetto/terminale ed esegui

Domande frequenti

A cosa serve lo strumento di conversione da cURL a codice? Perché non usare direttamente il comando curl?

Chiamare direttamente i comandi curl nel codice (come shell_exec, subprocess.run) richiede l'avvio di sottoprocessi, è insicuro e difficile da gestire errori, ottenere header di risposta, fare conversioni di tipi. Il codice di produzione dovrebbe usare i client HTTP nativi del linguaggio di programmazione (Python requests, Java OkHttp, JS fetch, ecc.). Il valore di curl-to-code è tradurre automaticamente i comandi curl che copi da DevTools/strumenti di cattura nel codice del client HTTP del linguaggio corrispondente, risparmiandoti il lavoro meccanico di consultare la documentazione API, escapizzare gli apici manualmente, elaborare JSON/autenticazione, ecc., copia e incolla per eseguire.

Quali linguaggi/librerie target sono supportati?

Attualmente sono supportati 11 target: JavaScript fetch (nativo del browser), Axios (libreria HTTP universale Node/browser), Node.js node-fetch, Python requests (libreria HTTP più popolare di Python), Python httpx (libreria HTTP di nuova generazione compatibile con HTTP/2 e asincrona), Go net/http (libreria standard di Go), estensione PHP cURL, Java OkHttp (libreria ad alte prestazioni universale Android/backend), C# HttpClient (client HTTP standard di .NET), PowerShell Invoke-RestMethod (comune negli script di automazione Windows), wget (strumento di download da riga di comando). Se il linguaggio di cui hai bisogno non è nell'elenco (come Ruby, Rust reqwest, Dart http, Swift URLSession, ecc.), puoi inviare feedback nella pagina, lo aggiungeremo in base alla domanda.

Come copio il comando curl da Chrome DevTools?

Passaggi: 1. Apri Chrome/Edge, premi F12 per aprire DevTools; 2. Passa al pannello Network; 3. Aggiorna la pagina o attiva la richiesta target; 4. Trova la richiesta target nell'elenco delle richieste (puoi filtrare per XHR/JS); 5. Fai clic con il tasto destro sulla richiesta → Copy → seleziona «Copy as cURL (bash)» (versione bash consigliata, migliore compatibilità); 6. Incolla nella casella di input di questo strumento. Fai attenzione a non selezionare Copy as fetch (è codice JS non curl). Firefox/Safari funzionano in modo simile, tutti hanno l'opzione Copy as cURL.

La gestione degli apici nei comandi curl è complicata, quali formati sono supportati?

Lo strumento riconosce apici singoli, apici doppi, escape con backslash in stile bash; apici doppi+escape ^ di Windows cmd; escape con backtick di PowerShell fondamentalmente. Si consiglia di usare il formato bash (avvolto in apici singoli). I comandi multilinea (con backslash \ di continuazione) supportano anche l'incolla, lo strumento rimuove automaticamente i ritorni a capo e i caratteri di continuazione. Se il tuo comando curl è particolarmente complesso (contiene variabili shell, sostituzione di comando $(...), pipe |, ecc.), si consiglia di eseguire prima il comando echo nel terminale per stampare il curl effettivo espanso e poi copiarlo, o semplificare manualmente prima (sostituire le variabili con valori reali).

Perché quando invio JSON con -d in curl il server riceve dati illeggibili/400?

Questo è uno degli errori più comuni di curl. L'opzione -d/--data di curl ha Content-Type predefinito application/x-www-form-urlencoded (formato form), non application/json. Se esegui direttamente curl -d '{"name":"demo"}' url, il server lo analizzerà come form (errore di analisi o dati vuoti). Devi aggiungere esplicitamente l'header -H "Content-Type: application/json" per inviare correttamente JSON. Questo strumento mostra un avviso arancione quando rileva un body ma senza Content-Type.

Il codice generato può essere copiato ed eseguito direttamente? Quali dipendenze devo installare?

Il codice della maggior parte dei linguaggi può essere eseguito direttamente utilizzando librerie standard (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget sono integrati), non richiede installazione aggiuntiva. Altri richiedono librerie di terze parti: Axios (richiede npm install axios), node-fetch (richiede npm install node-fetch, Node 18+ ha fetch integrato senza installazione), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (richiede di importare la dipendenza okhttp3 con Maven/Gradle). Il codice per impostazione predefinita stampa il codice di stato e il testo della risposta, puoi modificare la logica di elaborazione secondo necessità.

È compatibile con l'upload di file multipart/form-data (parametro -F)?

Supporto di base: il parametro -F viene riconosciuto come body della richiesta, ma il codice generato attualmente tratta @file come stringa letterale invece di upload di file reale. L'upload di file richiede la lettura del contenuto del file locale, i metodi di elaborazione variano molto tra i linguaggi (JS usa FormData/FormData.append, Python usa il parametro files=, Go usa multipart.Writer). Si consiglia, sulla base del codice generato dallo strumento, di consultare la documentazione di upload di file della libreria corrispondente per apportare modifiche. Le versioni future miglioreranno il supporto multipart.

I miei comandi curl e dati sensibili verranno inviati?

Assolutamente no. L'intero processo di analisi e generazione del codice viene completato al 100% localmente nel tuo browser (JavaScript puramente frontend), i comandi curl, Token/Cookie/password negli header, i dati nel body della richiesta non vengono inviati a nessun server. Puoi usare questo strumento offline, non preoccuparti della divulgazione di informazioni sensibili.

Come viene gestito -k/--insecure per ignorare la verifica del certificato nel codice di ogni linguaggio?

Al rilevamento del parametro -k, questo strumento genera la configurazione corrispondente per ignorare la verifica del certificato per ogni linguaggio target: Python requests/httpx usa verify=False; Node.js imposta process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go crea tls.Config{InsecureSkipVerify: true} personalizzato; PHP imposta CURLOPT_SSL_VERIFYPEER=false e CURLOPT_SSL_VERIFYHOST=0; Java OkHttp richiede TrustManager personalizzato (viene aggiunto un avviso nei commenti nel codice, perché il codice è lungo); C# può personalizzare ServerCertificateCustomValidationCallback; PowerShell usa -SkipCertificateCheck (PS6+); wget usa --no-check-certificate; fetch nel browser non può ignorare i certificati (restrizione di sicurezza del browser, viene aggiunto un commento esplicativo nel codice). Nota: queste configurazioni sono solo per test di sviluppo locale, non disattivare mai la verifica dei certificati in produzione.

Perché il codice Go generato non segue i reindirizzamenti? Con -L dovrebbe seguirli?

Il comportamento predefinito di net/http di Go è di non seguire i reindirizzamenti (coincide con il comportamento predefinito di curl, curl deve aggiungere esplicitamente -L per seguire). Lo strumento, al rilevamento del parametro -L, genera un client vuoto (http.Client{} con CheckRedirect nil per impostazione predefinita, cioè segue 10 reindirizzamenti); senza -L genera un client con CheckRedirect che restituisce http.ErrUseLastResponse, non segue i reindirizzamenti (coincide con il comportamento di curl senza -L). Se vuoi che Go segua sempre i reindirizzamenti, puoi usare direttamente http.DefaultClient nel codice o personalizzare Client{Timeout: ...}.

Come gestisco le richieste che richiedono l'accesso/con Cookie?

Ci sono due modi:①Copia curl direttamente da DevTools del browser con sessione aperta (consigliato): fai clic con il tasto destro sulla richiesta→Copy as cURL, così cookie/header sono inclusi automaticamente, incolla e converti per eseguire direttamente;②In curl specifica manualmente il valore del Cookie con -b/--cookie (-b 'sessionid=abc; token=xyz'), specifica l'autenticazione Basic con -u/--user, specifica Bearer Token con -H "Authorization: Bearer xxx", lo strumento converte questi header tali e quali. Nota: i Cookie copiati dal browser hanno una validità, potrebbero scadere dopo alcune ore e dover essere ricopiati.

Perché il body JSON in Python requests usa il parametro json= invece di data=?

Il parametro data della libreria Python requests codifica dict come application/x-www-form-urlencoded, invia la stringa tale e quale, mentre il parametro json serializza automaticamente dict/lista come stringa JSON e imposta automaticamente l'header Content-Type: application/json (se non l'hai impostato manualmente). Questo strumento, al rilevamento che Content-Type contiene application/json e il body è JSON valido, analizza automaticamente il JSON come dict di Python e usa il parametro json=, così il codice è più conciso, non hai bisogno di json.dumps manualmente e non dimentichi l'header Content-Type. I body non JSON (form/XML/testo normale) usano il parametro data= per inviare la stringa originale.

Il comando curl è molto lungo con molti header, cosa faccio se il codice generato ha tutti gli header?

Il comando curl copiato da DevTools includerà molti header aggiunti automaticamente dal browser (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, ecc.), la maggior parte di questi header non deve essere impostata esplicitamente nel codice (i client HTTP aggiungeranno automaticamente valori predefiniti ragionevoli, come Accept-Encoding, Connection, Host, Content-Length, ecc.). Si consiglia, dopo aver copiato il codice generato, di rimuovere manualmente gli header non necessari, conservando almeno: Content-Type, Authorization, Cookie (se necessario), header di business personalizzati. Gli header superflui non solo rendono il codice brutto, ma possono causare comportamenti anomali (ad esempio impostando esplicitamente Accept-Encoding ma il client non decomprime automaticamente).

È compatibile con il parametro di proxy HTTPS (-x/--proxy)?

Attualmente il parametro di proxy HTTP (-x/--proxy) non viene ancora convertito automaticamente. La configurazione del proxy varia molto tra i linguaggi (JS fetch non ha supporto proxy nativo richiede Agent, Python usa il parametro proxies=, Go tramite Transport.Proxy, PHP usa CURLOPT_PROXY, C# usa WebProxy, Java usa OkHttpClient.Builder().proxy()). Gli header del proxy (autenticazione del proxy stesso) richiedono anche un'elaborazione separata. Nella versione corrente i parametri relativi al proxy vengono ignorati, puoi aggiungere manualmente la configurazione del proxy sulla base del codice generato, le versioni future miglioreranno il supporto al proxy.

Quali differenze ci sono con strumenti online come curlconverter.com?

Rispetto a strumenti noti come curlconverter.com, i vantaggi di curl-to-code di GeekFormat:①Elaborazione completamente locale (la logica di elaborazione di curlconverter è sul server o sul client), non carica dati, più sicuro;②Interfaccia e spiegazioni in cinese, intuitiva per gli sviluppatori cinesi;③Il codice generato si adatta meglio all'uso di produzione reale (ad esempio Python requests usa il parametro json= per il body JSON invece di data=, comportamento predefinito di Go allineato a curl, C# elabora Content-Type correttamente senza codificare rigidamente application/json);④Documentazione completa, FAQ, tabelle di confronto, risoluzione dei problemi, non solo genera codice ma ti aiuta a capire perché è scritto così;⑤Gratuito senza pubblicità, non richiede registrazione o accesso, non necessita di nessuna richiesta di rete per essere utilizzato.

术语表

cURL / curl
Strumento da riga di comando open source e libreria libcurl, per inviare richieste di protocolli come HTTP/HTTPS/FTP da riga di comando tramite URL, è lo strumento più utilizzato dagli sviluppatori per eseguire il debug delle API.
Metodo HTTP
Azione di richiesta HTTP, i più comuni sono GET (leggere), POST (creare), PUT (aggiornamento completo), PATCH (aggiornamento parziale), DELETE (eliminare), HEAD (ottenere header), OPTIONS (consultare le capacità del server).
Header
Coppie chiave-valore di metadati nella richiesta HTTP, come Content-Type, Authorization, User-Agent, Cookie, Accept, ecc., specificati in curl tramite -H/--header.
Body
Parte dati della richiesta HTTP, comune in POST/PUT/PATCH, specificata in curl tramite -d/--data/--data-binary/-F, i formati comuni sono JSON, form-urlencoded, multipart/form-data.
Content-Type
Header di richiesta/risposta che indica il tipo di media del body. application/json indica JSON, application/x-www-form-urlencoded indica form codificato URL, multipart/form-data indica form di upload file.
Autenticazione Basic
Autenticazione HTTP di base, trasmette nome utente e password tramite l'header Authorization: Basic base64(user:pass), specificata in curl con -u user:pass.
Bearer Token
Metodo di autenticazione basato su token, trasmesso tramite l'header Authorization: Bearer <token>, comune in JWT/OAuth2.
User-Agent
Header di richiesta che identifica il tipo di client (browser/crawler/script), curl invia per impostazione predefinita "curl/numero versione", molti siti web bloccano UA non browser, comunemente specificato con -A.
Cookie
Coppie chiave-valore inviate dal server tramite Set-Cookie e restituite dal browser nelle richieste successive tramite l'header Cookie, per mantenere le sessioni. curl -b invia Cookie, -c salva Cookie.
Referer
Header di richiesta che indica l'URL della pagina di origine della richiesta corrente, alcuni controlli anti-hotlink/CSRF lo verificano. Impostato in curl con -e.
Reindirizzamento (3xx)
Quando il server restituisce codici di stato 301/302/303/307/308, indica al browser di saltare a un nuovo URL. curl per impostazione predefinita non segue, aggiungi -L/--location per seguire.
--compressed
Opzione di curl, aggiunge automaticamente l'header Accept-Encoding: deflate, gzip e decomprime automaticamente la risposta. Senza impostarlo, la risposta potrebbe essere dati compressi illeggibili.
-k/--insecure
Opzione di curl, ignora la verifica del certificato HTTPS, solo per ambienti di test con certificati autofirmati, proibita in produzione.
fetch API
API di richieste HTTP JavaScript nativa del browser, restituisce Promise, compatibile con i browser moderni.
Axios
Libreria client HTTP popolare basata su Promise, compatibile con browser e Node.js, serializzazione JSON automatica, intercettori, annullamento per timeout.
OkHttp
Libreria client HTTP Java/Android di Square, alte prestazioni, supporto HTTP/2, pool di connessioni, GZIP trasparente.
HttpClient (.NET)
Client HTTP consigliato per C#/.NET, namespace System.Net.Http, API standard di .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet di richiesta HTTP integrato in PowerShell 3.0+, analizza automaticamente le risposte JSON/XML come oggetti PowerShell.

Tabella di confronto delle opzioni comuni di cURL con 11 linguaggi target

Valori comuni di Content-Type e utilizzo con curl

Confronto di tre formati di Copy as cURL in Chrome DevTools

Troubleshooting