Cookie Questo sito conserva solo ciò che serve per funzionare. Al momento non ci sono né statistiche né pubblicità, e nulla di quanto trovi qui ti segue su altri siti. Leggi l’informativa sulla privacy

Scegli cosa consentire
+92 312 8299940Preventivo gratuito
Strumento gratis, nessun account

Convertitore curl
Trasforma un comando in codice

Questo convertitore curl trasforma un comando in codice che gira. Scegli PHP, Python, JavaScript, Go, Ruby, Java, C# o HTTP grezzo. Quindi incolli una volta, poi smetti di ribattere le intestazioni a mano. Il lavoro avviene nel tuo browser, e non carichiamo nulla.

  • GratisPrezzo
  • TrediciLingue
  • NessunaRegistrazione
  • NessunaCaricamenti

curl Converter

Trasforma un comando curl in PHP, Python, JavaScript, Go, Ruby, Java, C# o HTTP grezzo

Pronto. Incolla un comando curl o premi Prova un esempio.

Qui il browser fa tutto il lavoro, in questa scheda. Non carichiamo nulla, non salviamo nulla e non registriamo nulla.
La versione breve

Cosa fa un convertitore curl

Un comando curl scrive una richiesta come riga di comando. Questo convertitore curl trasforma quella riga in codice che puoi mettere in un progetto. Perciò l’intestazione copiata da devtools conserva il suo valore esatto, e smetti di ribatterla.

Da un incolla tornano quattro cose. Prima la richiesta stessa: metodo, indirizzo, intestazioni e corpo, riletti così puoi controllarli. Poi il codice nella lingua scelta. Dopo, le opzioni che curl avrebbe applicato, come il seguito dei reindirizzamenti o un timeout. Infine un elenco di tutto ciò che il lettore ha dovuto decidere da sé.

Quest’ultimo elenco conta più di quanto sembri. Una supposizione silenziosa nel codice generato è un bug che trovi in produzione. Quindi la pagina stampa ogni decisione accanto al codice.

Non installi nulla e non invii nulla. Quindi incolli un comando, leggi il codice e chiudi la scheda quando ti conviene.

Come un convertitore curl legge un comando

Il lavoro si divide in tre passate. Prima la pagina spezza il comando in parole come farebbe una shell. Poi legge ogni parola come opzione, valore o indirizzo. Infine consegna la richiesta a uno scrittore per la lingua scelta.

Diagramma delle tre passate di un convertitore curl: a sinistra un comando curl con tre intestazioni e un corpo JSON, al centro tre passi numerati che leggono spezzare le parole come farebbe una shell, segnare ogni parola come opzione, valore o indirizzo, e consegnare la richiesta a uno scrittore, e a destra la stessa richiesta come script PHP con indirizzo, intestazioni e corpo già riempiti
Spezza le parole, leggi le opzioni e scrivi la richiesta.

Lo spezzamento segue le regole della shell per le virgolette, perché un comando incollato da devtools si appoggia a esse. Un corpo tra virgolette singole è una sola parola anche quando contiene spazi. Una barra rovesciata a fine riga la unisce alla successiva.

Leggere le opzioni è dove un convertitore si guadagna il pane. Poiché curl elenca oltre duecento opzioni, solo alcune meritano di essere portate. Quelle che contano cambiano ciò che vede un server. Sono il metodo, le intestazioni, il corpo, i cookie, i reindirizzamenti e il timeout. La pagina segnala il resto invece di indovinarlo.

Gli scrittori non toccano mai la rete. Quindi la pagina funziona offline. Funziona anche su una macchina senza curl installato. Un comando può puntare a un indirizzo che il tuo browser non raggiunge, e la pagina lo converte lo stesso.

Perché le virgolette sono la parte difficile

Un convertitore che spezza solo sugli spazi sbaglia quasi tutti i comandi. Poiché il valore di un’intestazione spesso contiene uno spazio, uno spezzamento ingenuo lo divide in due. Allora il codice porta mezzo token e la richiesta fallisce con un 401.

Quindi il lettore segue lo stato delle virgolette mentre percorre la riga. Una virgoletta doppia raggruppa una serie di parole in una, e una singola fa lo stesso senza alcun escape dentro. Conta solo una virgoletta che apre e chiude nei punti giusti.

La barra rovesciata è il terzo caso. Fuori dalle virgolette fa escape del carattere successivo, e prima di un a capo rimuove l’a capo stesso. Per questo un comando incollato su venti righe si legge ancora come un solo comando.

Quali lingue scrive

Tredici destinazioni coprono il lavoro che quasi tutti portano qui. Per PHP ci sono cURL semplice e il client Guzzle. Per Python c’è requests. Per JavaScript ci sono fetch, axios e il modulo http di Node.js. Go, Ruby, Java e C# ne ricevono uno ciascuno. Poi vengono HTTP grezzo, una riga curl pulita e JSON.

Schermata del riquadro del codice generato con la destinazione Python requests scelta: l’esempio scritto come script che importa requests, mantiene intatto l’indirizzo degli ordini, costruisce un dizionario di tre intestazioni con il token bearer al suo posto, passa il payload JSON come una sola stringa, poi chiama post con verify e allow_redirects entrambi true e un timeout di venti secondi, e stampa stato e corpo
La stessa richiesta in Python, con le intestazioni e il corpo byte per byte.

Ogni scrittore è una piccola funzione sullo stesso oggetto richiesta. Per questo ogni destinazione vede byte identici. Il corpo inviato dall’esempio PHP è il corpo inviato da quello Go. Niente taglia un’intestazione per lingua né riformatta il payload in silenzio.

Gli scrittori PHP e Python puntano a codice eseguibile così com’è. Quindi quello PHP apre con il tag, imposta le opzioni e chiude l’handle. Quello Python importa requests, costruisce le intestazioni e stampa sia lo stato sia il corpo.

JavaScript si divide in tre di proposito. Fetch è nel browser. Axios porta le sue comodità, e il modulo http di Node.js si adatta a uno script senza dipendenze. Quindi tutti e tre meritano un posto.

Due destinazioni servono a leggere più che a eseguire. HTTP grezzo stampa il messaggio come andrebbe sul filo. È il modo più rapido per vedere se un’intestazione c’è davvero. JSON stampa la stessa richiesta come dati, pronta per un fixture di test.

Cosa mostra il pannello di rilettura

Prima che compaia qualsiasi codice, la pagina stampa la richiesta che ha capito. Nove fatti ricevono una riga ciascuno. Coprono il metodo, l’indirizzo, il numero di intestazioni, la dimensione del corpo e il tipo di contenuto. Seguono autorizzazione, cookie, opzioni e timeout.

Schermata del pannello di rilettura sotto il generatore: nove fatti in una griglia che leggono metodo POST, l’indirizzo degli ordini con una query status, tre intestazioni, un corpo di richiesta di cinquantatré byte, tipo di contenuto application slash json, autorizzazione impostata da un’intestazione, nessun cookie, l’opzione follow e un timeout di venti secondi, con l’elenco delle intestazioni sotto che mostra accept, content type e authorization una per riga, l’ultima con un token bearer mascherato
La richiesta viene riletta prima che il codice sia scritto, quindi un’intestazione persa compare qui.

Gli indirizzi non sono la parte interessante. Piuttosto, il punto è il controllo. Un’intestazione sparita compare qui prima che incolli qualsiasi cosa. Anche un corpo arrivato come form invece che come JSON. Una password nel posto sbagliato compare pure.

La pagina stampa l’elenco completo delle intestazioni sotto, una per riga. Perciò confronti ciò che invierebbe curl con ciò che si aspetta il tuo server. Allora la differenza è visibile invece che supposta.

Il pannello nomina le opzioni con parole semplici. Chi legge il codice non dovrebbe sapere che -L significa seguire i reindirizzamenti. Il pannello dice follow, insecure, compressed o silent al suo posto.

Da devtools a uno script in un incolla

La via abituale è il browser. Ogni browser grande può copiare una richiesta come curl. Quindi apri il pannello rete, fai clic destro sulla chiamata che è fallita, copiala e incollala qui. Il comando arriva con le intestazioni reali, il corpo reale e i cookie reali.

Schermata delle note di decisione sotto un comando convertito: una riga spiega che un corpo multipart è costruito qui e inviato come byte grezzi, e che una parte file è un segnaposto perché la pagina non può leggere il tuo disco
Tutto ciò che il lettore ha dovuto decidere è stampato accanto al codice, non nascosto dentro.

È anche il modo abituale di fare debug di una chiamata privata. Quindi riproduci una richiesta fallita come codice. Poi aggiungi un print e guardi cosa dice il server, invece di indovinare da un pannello rete.

Gli a capo non contano. Perciò la pagina legge un comando copiato su venti righe come ne legge una. L’indentazione nemmeno.

Passo dopo passo

Come usare il convertitore curl

Quattro passi, e nessuno richiede un account.

  • 1

    Copia il comando

    Quindi apri devtools, fai clic destro sulla richiesta e scegli Copia come curl. Da un documento o un README, seleziona il comando intero, comprese le barre rovesciate a fine riga.

  • 2

    Incollalo nel riquadro a sinistra

    Poi incolla tutto. Il riquadro prende il comando esattamente come l’hai copiato. Quindi non serve unire le righe né sistemare l’indentazione prima.

  • 3

    Controlla il pannello di rilettura

    Poi confronta i fatti con ciò che ti aspetti. Un’intestazione mancante si nota meglio qui che nel codice sotto. E anche un corpo arrivato come form.

  • 4

    Scegli una lingua e porta via il codice

    Infine scegli una destinazione, poi copiala o scaricala. Leggi anche le note di decisione: la pagina elenca di proposito tutto ciò che il lettore ha indovinato.

Perché questa pagina

Perché usare questo convertitore curl

Quattro ragioni, e ognuna riguarda la richiesta più che il codice.

  • Un incolla, tredici destinazioni

    Quindi confronti due lingue fianco a fianco e chiudi la discussione su quale intestazione manca. Poiché la stessa richiesta alimenta ogni scrittore, gli esempi concordano tra loro per costruzione.

  • Niente esce dal browser

    Perciò un token bearer o un cookie di sessione restano sulla tua macchina. Non ci sono caricamento, log né account. Questo conta quando un comando porta un segreto vivo.

  • La pagina stampa ogni supposizione

    Poiché una supposizione silenziosa nel codice generato è un bug che trovi dopo, la pagina elenca ogni decisione accanto al codice, con l’opzione da cui viene.

  • Ogni esempio PHP passa prima php -l

    Poi la build scrive ogni esempio PHP in un file. Ne passa ognuno per php -l prima che la pagina vada online. Quindi gli errori di virgolette si prendono qui invece che nel tuo editor.

Regole che segue

Le regole che questo convertitore mantiene

Sei regole, e sono ciò che rende l’output affidabile invece che solo plausibile.

  • Il metodo viene dal comando Un -X esplicito vince. Altrimenti valgono le regole di curl. Un corpo lo rende POST, un’opzione HEAD lo rende HEAD, e il resto resta GET.
  • Un tipo di contenuto dichiarato batte un default Devtools invia sempre l’intestazione. Quindi il codice porta il valore che hai copiato, anche quando curl avrebbe indovinato altro.
  • Le parti di corpo ripetute si uniscono con una e commerciale Quindi tre opzioni -d diventano un corpo di form, esattamente come le invia curl. La pagina dice che le ha unite, così lo sai.
  • L’autenticazione base è costruita, non copiata Allora utente e password da -u diventano un’intestazione Authorization. Quindi il codice invia gli stessi byte senza che curl debba farlo.
  • Niente viene inviato da nessuna parte La lettura e la scrittura girano entrambe nel tuo browser. Quindi un comando che punta a un host interno converte lo stesso, e non viene mai fatta alcuna richiesta.
  • Un rifiuto è un risultato Quindi la pagina segnala un’opzione senza equivalente nella lingua di destinazione. Non scarta mai quell’opzione in silenzio. Poi decidi cosa fare, con l’opzione nominata.
Attenzione qui

Errori da evitare con richieste generate

Sei cose che la gente sbaglia, e come schivare ognuna.

  • Incollare un comando con virgolette rotte

    Attento quando una shell o una finestra di chat ha tolto le virgolette esterne. Poiché una virgoletta non chiusa si mangia il resto della riga, controlla il segno di chiusura prima di dare la colpa al convertitore.

  • Lasciare un token reale nell’esempio

    Perciò sostituisci un token bearer vivo con un segnaposto prima di salvare il file. Il convertitore conserva il valore che gli hai dato, quindi il riordino tocca a te.

  • Fidarsi di un’intestazione letta da un file

    Un’opzione -H @file significa che l’intestazione vive sul disco. Poiché questa pagina non può aprire il tuo disco, l’intestazione manca nel codice, e la nota lo dice.

  • Dimenticare che i reindirizzamenti differiscono per default

    Quindi curl non segue un reindirizzamento senza -L. Diversi client HTTP seguono per default, e quella differenza morde. Il pannello nomina la scelta fatta dal comando.

  • Incollare un corpo multipart e aspettarsi un file vero

    Questa pagina non può leggere il file che hai nominato. Quindi il corpo porta un segnaposto, e poi ci metti il percorso reale. La tua libreria client può costruire da sé il form multipart.

  • Supporre che ogni lingua usi le stesse virgolette

    Un corpo con un apostrofo rompe una stringa PHP trascurata e una stringa Python trascurata in punti diversi. Perciò ogni scrittore fa escape per la propria lingua, e la build passa le versioni PHP per php -l.

Domande

Domande sul convertitore curl

Questo convertitore curl è gratis?

Sì. Non ci sono account, limiti né piano a pagamento. Quindi converti tutti i comandi che vuoi.

Manda il mio comando da qualche parte?

No. Poiché la lettura e la scrittura girano nel tuo browser, il comando non lascia mai la tua macchina. Perciò una richiesta con un token vivo resta privata.

Esegue la richiesta?

No. Legge solo il comando e scrive codice. Quindi niente va all’indirizzo nel comando, ed è proprio questo che rende sicuro incollare un host interno.

Quali lingue può scrivere?

Tredici destinazioni. Per PHP ce ne sono due: cURL semplice e il client Guzzle. Python riceve requests, e JavaScript riceve fetch, axios e il modulo http di Node.js. Go, Ruby, Java e C# ne ricevono uno ciascuno. Gli ultimi tre sono HTTP grezzo, una riga curl pulita e JSON.

Può leggere un comando copiato da devtools di Chrome o Firefox?

Sì. È la via principale. Poi il comando copiato arriva con le sue virgolette e le sue barre rovesciate, e il lettore gestisce entrambe.

E un comando scritto su una sola riga molto lunga?

Lo legge uguale. Il separatore lavora su spazi e virgolette, non sulle righe. Quindi una riga lunga e venti corte danno la stessa richiesta.

Capisce --data-raw, --data-binary e --data-urlencode?

Sì, e ognuno mantiene il suo significato. Quindi una parte urlencoded resta codificata, e una parte binaria passa così com’è.

Cosa succede con i caricamenti file -F?

La pagina costruisce da sé il corpo multipart e lo invia come byte grezzi. Poiché non può leggere il tuo disco, una parte file porta un segnaposto, e la nota dice quale.

Segue i reindirizzamenti come curl?

Segue il comando. Quindi curl non segue un reindirizzamento senza -L, e il codice segue solo se il comando lo ha fatto.

Come gestisce -u utente:password?

Costruisce da sé l’intestazione Authorization dalle due parti. Di conseguenza il codice generato invia la stessa intestazione Basic senza bisogno di un’opzione curl.

Perché un’opzione compare nelle note di decisione?

Perché il lettore ha dovuto scegliere per te o lasciare qualcosa fuori. Allora la nota nomina l’opzione, così puoi controllarla a mano.

Posso convertire un comando curl senza indirizzo?

In parte. Allora la pagina legge e segnala le opzioni, ma non c’è una richiesta da scrivere. Chiede invece un indirizzo.

Posso eseguire il PHP generato così com’è?

Sì. Apre con il tag, imposta le opzioni, esegue e chiude l’handle. Inoltre passa per php -l prima che questa pagina vada online, quindi le virgolette tengono.

E il Python generato?

Importa requests, costruisce le intestazioni, invia la chiamata con il metodo giusto e stampa stato e corpo. Quindi lo incolli in un file e lo esegui.

Perché fetch ha bisogno di un’impostazione sui reindirizzamenti?

Perché il valore predefinito del browser è diverso da quello di curl. Quindi il codice nomina follow o manual, ed entrambi corrispondono a ciò che chiedeva il comando.

Mantiene l’ordine delle intestazioni?

Sì. Il codice scrive le intestazioni nell’ordine in cui comparivano nel comando. Quindi un diff contro la riga originale si legge bene.

Può leggere un file di cookie?

La pagina segnala il percorso, ma non apre il file. Poiché un browser non può leggere il tuo disco in silenzio, non inventa alcuna intestazione Cookie da lì.

Cosa fa la destinazione curl pulito?

Riscrive la stessa richiesta come una riga curl più ordinata, con un’opzione per riga. Quindi puoi incollarla in uno script o in un ticket e vedere ogni parte.

A cosa serve la destinazione JSON?

Stampa la richiesta come dati. Poi la metti in un fixture di test e confronti ciò che invia il tuo codice con ciò che ha inviato curl.

Gestisce --json?

Sì. Quell’opzione imposta sia il tipo di contenuto sia l’intestazione accept, e il pannello mostra entrambe. Quando si mescola una parte di corpo normale, la pagina dice che la combinazione è ambigua.

Quante intestazioni può accettare?

Centinaia. Il lettore è una sola passata sulle parole. Quindi un comando con trecento intestazioni converte nello stesso istante di uno con tre.

Funziona su un telefono?

Sì. I riquadri si impilano e l’esempio resta leggibile a larghezza ridotta. Quindi puoi convertire un comando quando sei lontano da una scrivania.

Posso usare l’output in un progetto commerciale?

Sì. Non c’è licenza sul codice generato, perché il codice generato è tuo e nessuno chiede attribuzione.

Perché il codice a volte porta un commento?

Perché la lingua di destinazione ha un posto per spiegarsi. Quindi il codice chiarisce un’opzione dal significato sorprendente dove chi legge il file la troverà.

E se il convertitore legge un’opzione che non ho mai visto?

La pagina la segnala come opzione sconosciuta e la salta. Soprattutto, non inventa nulla al suo posto, e questo tiene onesto il resto della richiesta.

C’è un’API?

No, e non serve, perché il lavoro avviene già nel tuo browser. Per questo niente raggiunge un log del server.

Vai avanti

Strumenti che vanno con questo

Quattro pagine a cui di solito porta lo stesso lavoro.

  • Formattatore JSON

    Poi formatta il corpo della richiesta prima di incollarlo in un fixture. Poiché un payload di una riga nasconde una chiave sbagliata, questo la rende evidente.

    Apri lo strumento →
  • Codificatore e decodificatore URL

    Controlla anche un valore di query passato per --data-urlencode. Allora vedi se i segni di percentuale sono giusti prima che un server li rifiuti.

    Apri lo strumento →
  • Codificatore e decodificatore di entità HTML

    Per un corpo di richiesta con markup, questo mostra cosa leggerà davvero il server. Quindi una e commerciale con escape smette di essere una supposizione.

    Apri lo strumento →
  • Minificatore JavaScript

    Dopo aver incollato l’esempio fetch in un progetto, questo lo riduce per la build del browser. Allora il file che esce resta piccolo.

    Apri lo strumento →

Converti ora un comando curl

Incolla il comando, controlla la richiesta che ritorna e porta via il codice nella lingua che ti serve. Niente esce dal tuo browser, quindi un token resta tuo. Tutto il lavoro sta in un incolla.