logo
GeekFormat

Convertidor cURL a codi

Entrada de la comanda cURL

Enganxeu una comanda cURL, analitza automàticament l'URL, el mètode, les capçaleres i el cos, i genera codi executable en 11 llenguatges/biblioteques (JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget)

Sol·licitud analitzada

https://api.example.com/items1 capçalera(es)Body 15 caràcterscurlToCode.flag.followRedirects

Codi generat

curlToCode.target.fetch

Enganxa una comanda curl, obtén codi de sol·licitud HTTP executable per a 11 llenguatges en un instant.

Relacionats

Casos d'ús

  • Al panell Network de Chrome DevTools, fes clic dret a la sol·licitud i selecciona「Copy as cURL」, després enganxa-la a aquesta eina per convertir-la directament al codi del llenguatge del projecte, 10 cops més ràpid que escriure la sol·licitud manualment
  • En cridar APIs de tercers, la documentació proporciona exemples curl, converteix-los ràpidament a codi Python requests/Java OkHttp/C# HttpClient per integrar-los al projecte
  • En depurar interfícies de l'entorn de producció, copia la comanda curl d'eines de captura de paquets (Charles/mitmproxy/Wireshark), converteix-la a codi de proves unitàries per provar directament
  • En escriure documentació d'API, canvia ràpidament entre exemples multillenguatge, proporciona exemples de codi executables per a lectors de diferents stacks tecnològics
  • En resoldre problemes de sol·licituds en línia, utilitza curl per reproduir el problema i després converteix-lo a forma de codi per enviar a companys o crear un Issue, facilitant que altres ho reprodueixin directament
  • En desenvolupament entre llenguatges (per exemple, passant de Python a un projecte Go), converteix ràpidament les sol·licituds curl existents a codi de crida HTTP client del nou llenguatge, estalviant temps llegint documentació
  • En scripts Shell, converteix comandes curl a PowerShell Invoke-RestMethod per a companys d'operacions Windows, o viceversa
  • Aprendre protocol HTTP: Comparant el codi que fa la mateixa sol·licitud en diferents llenguatges, entendre les diferències d'API de les biblioteques HTTP client
  • Converteix ràpidament curl -X POST -d 'json' a codi amb Content-Type i serialització JSON correctes, evitant errors de concatenació manual de cadenes
  • Quan cal cridar APIs en scripts CI/CD, converteix les comandes curl depurades localment a codi del llenguatge de script adequat per integrar-lo al pipeline

Característiques

  • 11 llenguatges/biblioteques objectiu: Inclou frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), línia de comandes (wget), cobreix tots els principals stacks tecnològics
  • Anàlisi intel·ligent de comandes curl: Reconeix automàticament URL, mètode HTTP, capçaleres, cos de la sol·licitud, admet cometes simples/dobles, escapament amb barra invertida, continuació de comandes multibarra (backslash line continuation)
  • Suport complet per a paràmetres curl comuns: -X/--request especifica mètode, -H/--header capçaleres, -d/--data/-F cosos formulari/JSON, -u/--user Basic Auth, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location segueix redireccions, --compressed descompressió automàtica, -k/--insecure salta verificació de certificats, -I/--head sol·licitud HEAD
  • Reconeixement intel·ligent de cos JSON: Quan detecta que Content-Type és application/json, utilitza automàticament JSON.parse/JSON.stringify/requests(json=)/json= per a serialització, el codi generat utilitza objectes directament en lloc de cadenes, més adequat a les convencions de cada llenguatge
  • Conversió automàtica de Basic Auth: En reconèixer -u user:pass, crea automàticament la capçalera Authorization: Basic <base64>, utilitza el mecanisme d'autenticació natiu del llenguatge objectiu (Python auth=, OkHttp credentials, C# credentials, etc.)
  • Insígnies de banderes de seguretat: Detecta automàticament els paràmetres --compressed/-L/-k/-u, es mostren amb insígnies visibles en els resultats de l'anàlisi
  • Mètode HTTP modificable manualment: Després d'analitzar el mètode de curl, permet a l'usuari canviar manualment el mètode al desplegable (7 tipus com GET/POST/PUT) i veure el codi relacionat a l'instant
  • Escapament de cadenes segur: En generar codi per a cada llenguatge, utilitza literals de cadena natius del llenguatge (cometes triples/barra invertida Python, cadena literal backtick Go, C# @"", PHP cometes simples, Java escapament de cometes dobles) per evitar errors de sintaxi en executar el codi
  • Avisos d'error d'anàlisi: Quan s'introdueix una comanda curl no vàlida (com URL mancant, no comença per curl, POST sense cos, etc.), mostra una insígnia d'advertència taronja amb detalls del problema
  • Carrega 3 exemples amb un clic: Proporciona 3 exemples típics: GET+Token Auth, POST+JSON, Basic Auth+seguir redireccions, per veure ràpidament les capacitats de l'eina
  • Neteja l'entrada amb un clic: El botó Clear restableix ràpidament, enganxa una nova comanda sense dades residuals antigues
  • Processament completament local: Les comandes curl i els cosos de sol·licitud s'analitzen i converteixen completament al navegador local, no s'envien a cap servidor, els Tokens/contrasenyes sensibles no es filtraran
  • Copia el codi amb un clic: Un cop generat el codi, fes clic al botó Copy per copiar-lo al porta-retalls, enganxa'l al projecte i es pot executar directament
  • Suport per a mode HTTPS insegur: El paràmetre -k/--insecure genera la configuració adequada per saltar la verificació de certificats TLS a cada llenguatge com Node/Go/Python/PHP/C#/PowerShell (wget utilitza --no-check-certificate, C# deixa indicacions de ServicePointManager, Node estableix NODE_TLS_REJECT_UNAUTHORIZED)

Com usar-ho

  1. Obté la comanda curl: Al panell DevTools Network del navegador, fes clic dret a la sol·licitud → Copy → Copy as cURL (bash); o exporta cURL des d'eines de captura com Postman/Charles/mitmproxy; o escriu la teva pròpia comanda curl
  2. Enganxa al camp d'entrada: Enganxa la comanda curl a l'àrea d'entrada de dalt, admet comandes d'una línia/multibarra (backslash line continuation), elimina automàticament els salts de línia
  3. Fes clic als botons d'exemple per referència: Si no estàs familiaritzat amb el format, pots fer clic a「Exemple 1/2/3」per carregar comandes curl predefinides i veure els resultats
  4. Visualitza els resultats de l'anàlisi: L'àrea de resultats mostrarà l'URL, nombre de capçaleres, nombre de caràcters del cos, i insígnies com compressió/redirecció/salt de certificat/Basic Auth, si hi ha problemes mostrarà una advertència taronja
  5. Ajusta el mètode si cal: Si el mètode reconegut automàticament no és correcte (per exemple curl no ha afegit -X POST però hauria de ser POST), canvia manualment el mètode HTTP al desplegable
  6. Selecciona el llenguatge objectiu: A l'àrea de codi objectiu, fes clic al botó del llenguatge corresponent (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, etc.)
  7. Copia el codi: Fes clic al botó「Copia codi」, enganxa'l al teu projecte/terminal i executa'l

Preguntes freqients

Per a què serveix l'eina convertidora de cURL a codi?Per què no utilitzar directament la comanda curl?

Cridar comandes curl directament des del codi (com shell_exec, subprocess.run) requereix iniciar un subprocés, no és segur i és difícil manejar errors, obtenir capçaleres de resposta, conversions de tipus. El codi de producció ha d'utilitzar HTTP clients natius del llenguatge de programació (Python requests, Java OkHttp, JS fetch, etc.). El valor de curl-to-code és traduir automàticament les comandes curl que copies de DevTools/eines de captura de paquets a codi HTTP client del llenguatge corresponent, estalviant treball mecànic com llegir documentació d'API, escapament manual de cometes, manejar JSON/autenticació, etc., només cal copiar i enganxar i es pot executar.

Quins llenguatges/biblioteques objectiu admet?

Actualment admet 11 objectius: JavaScript fetch (natiu del navegador), Axios (biblioteca HTTP versàtil Node/navegador), Node.js node-fetch, Python requests (biblioteca HTTP més popular de Python), Python httpx (biblioteca HTTP de nova generació que admet HTTP/2 i async), Go net/http (biblioteca estàndard de Go), extensió PHP cURL, Java OkHttp (biblioteca d'alt rendiment versàtil Android/backend), C# HttpClient (client HTTP estàndard de .NET), PowerShell Invoke-RestMethod (sovint utilitzat en scripts d'automatització Windows), wget (eina de descàrrega per línia de comandes). Si el llenguatge que necessites no és a la llista (com Ruby, Rust reqwest, Dart http, Swift URLSession, etc.), pots enviar comentaris a la pàgina, considerarem afegir-lo segons la demanda.

Com copiar una comanda curl des de Chrome DevTools?

Passos: 1. Obre Chrome/Edge, prem F12 per obrir DevTools; 2. Canvia al panell Network; 3. Refresca la pàgina o activa la sol·licitud objectiu; 4. Cerca la sol·licitud objectiu a la llista de sol·licituds (es pot filtrar per XHR/JS); 5. Fes clic dret a la sol·licitud → Copy → selecciona「Copy as cURL (bash)」(es recomana la versió bash, la millor compatibilitat); 6. Enganxa al camp d'entrada d'aquesta eina. Compte de no seleccionar Copy as fetch (això és codi JS no curl). El funcionament a Firefox/Safari és similar, tots tenen l'opció Copy as cURL.

El maneig de cometes en comandes curl és molt complicat, quins formats admet?

L'eina admet cometes simples, cometes dobles, escapament amb barra invertida en format bash; cometes dobles+escapament ^ de Windows cmd; escapament amb accent greu de PowerShell gairebé tots es poden reconèixer. Es recomana utilitzar format bash (embolicat amb cometes simples). Les comandes multibarra (barra invertida \ que continua la línia) també admeten enganxar, l'eina elimina automàticament els salts de línia i els caràcters de continuació. Si la teva comanda curl és molt complexa (conté variables de shell, substitució de comandes $(...), canonades |, etc.), es recomana executar la comanda echo al terminal per imprimir el curl real després de l'expansió i després copiar-lo, o simplificar-lo primer tu mateix (substitueix les variables pels seus valors reals).

Per què en utilitzar -d per enviar JSON amb curl, el servidor rep dades aleatòries/400?

Aquest és un dels errors més comuns de curl. L'opció -d/--data de curl té Content-Type per defecte application/x-www-form-urlencoded (format de formulari), no application/json. Si utilitzes directament curl -d '{"name":"demo"}' url, el servidor l'analitzarà com a formulari (l'anàlisi falla o rep dades buides). Cal afegir explícitament la capçalera -H "Content-Type: application/json" per poder enviar JSON correctament. Aquesta eina donarà una advertència taronja quan detecti que hi ha un cos però no hi ha Content-Type.

El codi generat es pot copiar i executar directament?Cal instal·lar alguna dependència?

El codi de la majoria de llenguatges es pot executar directament utilitzant biblioteques estàndard (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget són tots integrats), no cal instal·lació addicional. Altres requereixen biblioteques de tercers: Axios (cal npm install axios), node-fetch (cal npm install node-fetch, Node 18+ ja té fetch integrat no cal instal·lació), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (cal afegir la dependència okhttp3 amb Maven/Gradle). El codi per defecte imprimeix el codi d'estat i el text de la resposta, pots canviar la lògica de processament segons les teves necessitats.

Admet la càrrega de fitxers multipart/form-data (paràmetre -F)?

Suport bàsic: El paràmetre -F es reconeixerà com a cos de la sol·licitud (body), però el codi generat actualment processa @fitxer com a literal de cadena en lloc de càrrega real de fitxers. La càrrega de fitxers requereix llegir el contingut del fitxer local, el maneig és molt diferent per a cada llenguatge (JS utilitza FormData/FormData.append, Python utilitza el paràmetre files=, Go utilitza multipart.Writer). Es recomana consultar la documentació de càrrega de fitxers de la biblioteca corresponent per adaptar-la basant-te en el codi generat per l'eina. Versions futures milloraran el suport multipart.

S'enviaran les meves comandes curl i dades sensibles?

En absolut. Tot el procés d'anàlisi i generació de codi es completa 100% al navegador local (JavaScript pur del costat client), les comandes curl, els Tokens/Cookies/contrasenyes a les capçaleres de sol·licitud, les dades del cos de la sol·licitud no s'enviaran a cap servidor. Pots desconnectar la xarxa per utilitzar aquesta eina, no cal preocupar-se per fuites d'informació sensible.

Com manejar -k/--insecure per saltar la verificació de certificats en el codi de diferents llenguatges?

En detectar el paràmetre -k, aquesta eina crearà la configuració adequada per saltar la verificació de certificats per a cada llenguatge objectiu: Python requests/httpx utilitza verify=False; Node.js estableix process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go crea un tls.Config personalitzat {InsecureSkipVerify: true}; PHP estableix CURLOPT_SSL_VERIFYPEER=false i CURLOPT_SSL_VERIFYHOST=0; Java OkHttp necessita un TrustManager personalitzat (hi ha comentaris d'advertència al codi, perquè el codi és força llarg); C# pot personalitzar ServerCertificateCustomValidationCallback; PowerShell utilitza -SkipCertificateCheck (PS6+); wget utilitza --no-check-certificate; fetch del navegador no pot saltar certificats (limitació de seguretat del navegador, hi ha un comentari explicatiu al codi). Nota: Aquesta configuració només és per a proves de desenvolupament local, mai desactiveu la verificació de certificats en entorns de producció.

Per què el codi Go generat no segueix redireccions?He afegit -L hauria de seguir, oi?

El comportament per defecte de net/http de Go és no seguir redireccions (d'acord amb el comportament per defecte de curl, és a dir, curl cal afegir -L explícitament per seguir). Quan l'eina detecta el paràmetre -L crearà un client buit (http.Client{} té CheckRedirect per defecte nil, és a dir, segueix 10 redireccions); si no s'afegeix -L crearà un client amb CheckRedirect que retorna http.ErrUseLastResponse, és a dir, no segueix redireccions (d'acord amb el comportament quan curl no afegeix -L). Si vols que Go segueixi sempre les redireccions, pots utilitzar directament http.DefaultClient o personalitzar el Client{Timeout: ...} tu mateix en el codi.

Com manejar sol·licituds que requereixen iniciar sessió/tenir Cookie?

Hi ha dues maneres: ①Copiar curl directament des de DevTools del navegador on ja has iniciat sessió (recomanat): Fes clic dret a la sol·licitud→Copy as cURL, d'aquesta manera les cookies/capçaleres s'inclouen automàticament, enganxa i converteix i es pot executar directament; ②Especifica el valor de Cookie manualment a curl amb -b/--cookie (-b 'sessionid=abc; token=xyz'), especifica Basic Auth amb -u/--user, especifica Bearer Token amb -H "Authorization: Bearer xxx", l'eina convertirà aquestes capçaleres tal qual. Nota: Les Cookies copiades del navegador tenen data de caducitat, poden expirar després d'unes hores i cal tornar-les a copiar.

Per què el cos JSON a Python requests utilitza el paràmetre json= en lloc de data=?

El paràmetre data de la biblioteca Python requests codificarà els diccionaris segons application/x-www-form-urlencoded, enviant la cadena tal qual, mentre que el paràmetre json serialitzarà automàticament els diccionaris/llistes a cadenes JSON, i establirà automàticament la capçalera Content-Type: application/json (si no l'estableixes tu mateix). Quan aquesta eina detecta que Content-Type conté application/json i el cos és JSON vàlid, analitzarà automàticament el JSON a un diccionari Python i utilitzarà el paràmetre json=, fent el codi més concís, sense necessitat de json.dumps manual, i sense oblidar la capçalera Content-Type. Els cossos no JSON (formulari/XML/text pla) utilitzen el paràmetre data= per enviar cadenes crues.

La comanda curl és llarga i té moltes capçaleres, què fer quan el codi generat porta totes les capçaleres?

Les comandes curl copiades de DevTools contindran moltes capçaleres que el navegador afegeix automàticament (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, etc.), la majoria d'aquestes capçaleres no cal establir-les explícitament al codi (els HTTP clients afegiran automàticament valors per defecte raonables, com Accept-Encoding, Connection, Host, Content-Length, etc.). Es recomana que després de copiar el codi generat, eliminis manualment les capçaleres innecessàries, mantenint almenys: Content-Type, Authorization, Cookie (si cal), capçaleres de negoci personalitzades. Les capçaleres excessives no només fan que el codi es vegi desordenat, sinó que també poden causar comportaments anòmals (per exemple establir Accept-Encoding explícitament però el client no descomprimirà automàticament).

Admet el paràmetre de proxy HTTPS (-x/--proxy)?

Actualment el paràmetre de proxy HTTP (-x/--proxy) encara no es converteix automàticament. La configuració de proxy és molt diferent en cada llenguatge (JS fetch no té suport de proxy natiu cal Agent, Python utilitza el paràmetre proxies=, Go mitjançant Transport.Proxy, PHP utilitza CURLOPT_PROXY, C# utilitza WebProxy, Java utilitza OkHttpClient.Builder().proxy()). Les capçaleres de proxy (autenticació del proxy en si mateixa) també cal manejar-les per separat. Els paràmetres relacionats amb proxy en la versió actual s'ignoren, pots afegir la configuració de proxy tu mateix basant-te en el codi generat, versions futures milloraran el suport de proxy.

Comparat amb eines en línia com curlconverter.com quina diferència hi ha?

Comparat amb eines conegudes com curlconverter.com, els avantatges de curl-to-code de GeekFormat són: ①Processament completament local (la lògica de processament de curlconverter és al servidor o client), no envia dades per tant és més segur; ②Interfície i explicacions en català, amigable per a desenvolupadors catalans; ③El codi generat s'ajusta més a l'ús real de producció (per exemple Python requests utilitza el paràmetre json= per a cossos JSON en lloc de data=, el comportament per defecte de Go coincideix amb curl, C# maneja Content-Type correctament sense hardcode application/json); ④Inclou documentació profunda, FAQ, taules de comparació, resolució de problemes, no només genera codi sinó que també t'ajuda a entendre per què s'escriu així; ⑤Gratuït sense anuncis, no cal registrar-se ni iniciar sessió, no requereix cap sol·licitud de xarxa per utilitzar-lo.

术语表

cURL / curl
Eina de línia de comandes de codi obert i biblioteca libcurl, utilitzada per enviar sol·licituds de protocols HTTP/HTTPS/FTP etc. mitjançant URL a la línia de comandes, és l'eina més utilitzada pels desenvolupadors per depurar APIs.
Mètode HTTP
Acció d'una sol·licitud HTTP, les comunes inclouen GET (llegir), POST (crear), PUT (actualització completa), PATCH (actualització parcial), DELETE (esborrar), HEAD (obtenir capçaleres), OPTIONS (consultar capacitats del servidor).
Capçalera de sol·licitud
Parella clau-valor de metadades en una sol·licitud HTTP, com Content-Type, Authorization, User-Agent, Cookie, Accept, etc., s'especifiquen en curl amb -H/--header.
Cos de la sol·licitud (Body)
Part de dades d'una sol·licitud HTTP, s'utilitza sovint en POST/PUT/PATCH, s'especifica en curl amb -d/--data/--data-binary/-F, els formats comuns inclouen JSON, form-urlencoded, multipart/form-data.
Content-Type
Capçalera de sol·licitud/resposta, indica el tipus de mitjà del cos. application/json significa JSON, application/x-www-form-urlencoded significa formulari codificat per URL, multipart/form-data significa formulari de càrrega de fitxers.
Basic Auth
Autenticació bàsica HTTP, envia nom d'usuari i contrasenya mitjançant la capçalera Authorization: Basic base64(user:pass), s'especifica en curl amb -u user:pass.
Bearer Token
Mètode d'autenticació basat en testimoni, es passa mitjançant la capçalera Authorization: Bearer <token>, s'utilitza sovint en JWT/OAuth2.
User-Agent
Capçalera de sol·licitud, identifica el tipus de client (navegador/rastrejador/script), curl per defecte envia "curl/nomversió", molts llocs bloquegen UA no navegador, sovint s'utilitza -A per especificar.
Cookie
Parella clau-valor que el servidor envia mitjançant Set-Cookie i el navegador retorna mitjançant la capçalera Cookie en sol·licituds posteriors, s'utilitza per mantenir sessions. curl -b envia Cookie, -c desa Cookie.
Referer
Capçalera de sol·licitud, indica l'URL de la pàgina d'origen de la sol·licitud actual, algunes comprovacions anti-hotlink/CSRF la comproven. S'estableix amb curl -e.
Redirecció (3xx)
Quan el servidor retorna un codi d'estat 301/302/303/307/308, indica al navegador que redirigeixi a una nova URL. curl no segueix per defecte, afegeix -L/--location per seguir.
--compressed
Opció curl, afegeix automàticament la capçalera Accept-Encoding: deflate, gzip i descomprimeix automàticament la resposta. Si no s'estableix, la resposta pot ser dades comprimides il·legibles.
-k/--insecure
Opció curl, salta la verificació de certificats HTTPS, només s'utilitza per a entorns de prova amb certificats autofirmats, prohibit utilitzar en entorns de producció.
fetch API
API de sol·licituds HTTP JavaScript nativa del navegador, retorna Promise, compatible amb tots els navegadors moderns.
Axios
Biblioteca HTTP client popular basada en Promise, es pot utilitzar tant al navegador com a Node.js, serialitza JSON automàticament, interceptors, cancel·lació amb temps d'espera.
OkHttp
Biblioteca HTTP client Java/Android de l'empresa Square, alt rendiment, admet HTTP/2, connexions agrupades, GZIP transparent.
HttpClient (.NET)
Client HTTP recomanat per a C#/.NET, dins l'espai de noms System.Net.Http, és l'API estàndard de .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet de sol·licituds HTTP integrat a PowerShell 3.0+, analitza automàticament respostes JSON/XML a objectes PowerShell.

Taula de comparació d'opcions curl comunes amb 11 llenguatges objectiu

Valors Content-Type comuns i com utilitzar-los amb curl

Comparació dels tres formats de Copy as cURL de Chrome DevTools

Troubleshooting