Convertisseur curl en code — Python, JavaScript, Go, PHP et plus
Collez une commande curl, y compris un « Copy as cURL » de Chrome, et obtenez la même requête en Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget ou HTTPie.
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)
Tout se passe dans votre navigateur. La commande est seulement analysée, jamais exécutée ni envoyée : les jetons et cookies qu’elle contient restent sur votre machine. Parcourir tous les outils gratuits.
Un problème, ou quelque chose à améliorer ? Nous lisons chaque message et corrigeons vite.
Ce convertisseur curl en code gratuit prend une commande curl et écrit la même requête HTTP en Python (requests), JavaScript (fetch ou Axios), Node.js, Go, PHP, Ruby, Java, C#, wget ou HTTPie. Le scénario habituel : repérez une requête dans les DevTools de votre navigateur, choisissez Copy as cURL, collez-la ici et obtenez du code fonctionnel sans retaper les en-têtes ni échapper un corps JSON à la main.
L’analyseur suit les règles de curl lui-même : les options courtes peuvent être combinées (-sSL) ou accolées (-XPOST), l’URL peut apparaître n’importe où, -d implique POST avec un type de contenu formulaire, -G déplace les données dans la chaîne de requête, et --data-urlencode encode comme le fait curl. Il comprend les guillemets bash, y compris les chaînes $'…' que produit Chrome, et les guillemets de Windows cmd avec les échappements ^. Tout ce qu’un langage cible ne peut pas exprimer, comme ignorer la vérification TLS dans un navigateur, est signalé dans un commentaire au lieu d’être supprimé en silence.
Mode d’emploi
- Dans les DevTools de Chrome ou d’Edge, ouvrez l’onglet Network (Réseau), faites un clic droit sur une requête et choisissez Copy → Copy as cURL (bash ou cmd). Dans Firefox, choisissez Copy Value → Copy as cURL. Ou écrivez votre propre commande curl.
- Collez-la dans la zone. La méthode, l’URL, le nombre d’en-têtes et le type de corps s’affichent au-dessus du résultat pour vérifier que la commande a été bien lue.
- Choisissez le langage cible. Le code se met à jour instantanément.
- Lisez les éventuelles notes de l’encadré jaune : elles listent les options ignorées ou qui demandent votre attention.
- Copiez le code ou téléchargez-le. Remplacez les jetons et cookies avant de le committer où que ce soit.
Questions fréquentes
Comment copier une requête en cURL depuis Chrome ?
Ouvrez les DevTools (F12 ou Cmd+Option+I), allez dans l’onglet Network (Réseau) et rechargez la page si la liste est vide. Faites un clic droit sur la requête voulue, choisissez Copy, puis Copy as cURL (bash) sur macOS et Linux ou Copy as cURL (cmd) sous Windows. Les deux formats fonctionnent ici. La commande copiée contient vos cookies et en-têtes d’autorisation : traitez-la comme un mot de passe.
Pourquoi certains en-têtes manquent-ils dans le code fetch pour navigateur ?
Les navigateurs ne laissent pas JavaScript définir certains en-têtes de requête : Cookie, Host, Origin, Referer, User-Agent en pratique, Content-Length, Accept-Encoding, Connection et tout ce qui commence par Sec- ou Proxy-. La norme Fetch les appelle forbidden request headers (en-têtes de requête interdits) et le navigateur les remplit lui-même. La sortie fetch pour navigateur les omet et le signale dans un commentaire ; la sortie Node.js fetch les conserve, car Node n’a pas cette restriction.
Quelle est la différence entre -d, --data-raw et --data-binary ?
-d (--data) envoie le texte comme corps, mais une valeur commençant par @ est lue depuis un fichier, en supprimant retours chariot et sauts de ligne. --data-raw fait la même chose sans le comportement @fichier, c’est pourquoi les navigateurs l’utilisent. --data-binary lit aussi les @fichiers mais conserve les octets à l’identique. Les trois définissent Content-Type: application/x-www-form-urlencoded sauf si vous passez votre propre en-tête, et plusieurs options -d sont jointes par &.
curl suit-il les redirections ?
Pas par défaut ; il renvoie la réponse 3xx sauf si vous ajoutez -L (--location). La plupart des bibliothèques HTTP font l’inverse : fetch, Python requests, Go net/http, Axios sous Node et .NET HttpClient suivent automatiquement les redirections. Java HttpClient, PHP cURL et Ruby Net::HTTP ne le font pas : quand votre commande contient -L, le code généré active le suivi pour eux (Ruby reçoit une note, car Net::HTTP n’a pas d’option pour cela).
Que fait --compressed, et en ai-je besoin dans le code ?
Il fait envoyer à curl un en-tête Accept-Encoding (gzip, deflate, br et zstd, selon la compilation de curl) et décompresser la réponse. Les navigateurs, Python requests, Go et Node fetch demandent et décodent déjà les réponses compressées sans qu’on le leur dise. Le code généré ne l’ajoute que là où la bibliothèque a besoin qu’on l’active : CURLOPT_ENCODING en PHP, AutomaticDecompression en C#, --compression=auto dans wget.
Ma commande curl est-elle envoyée quelque part ?
Non. La commande est analysée et convertie par du JavaScript dans cette page. Elle n’est jamais exécutée ni envoyée à un serveur : les jetons et cookies de session d’une requête copiée depuis les DevTools restent sur votre machine.
Les options curl et ce qu’elles deviennent
• -X / --request définit la méthode. Sans elle, la méthode est GET, POST en présence de -d, --json ou -F, HEAD avec -I et PUT avec -T.
• -H / --header ajoute un en-tête. "Name:" sans rien après supprime un en-tête, et "Name;" en envoie un vide.
• --json body envoie du JSON et définit à la fois Content-Type et Accept à application/json (curl 7.82 et versions ultérieures).
• -F name=value et -F file=@photo.jpg;type=image/jpeg construisent un corps multipart/form-data ; le code utilise FormData, files=, CURLFile ou MultipartFormDataContent selon le cas.
• -u user:password devient une authentification Basic ; -b "a=1; b=2" devient un en-tête Cookie (ou un dictionnaire cookies en Python).
• -A et -e définissent User-Agent et Referer. -k / --insecure désactive la vérification des certificats ; c’est signalé par un avertissement quand c’est possible, car cela ne devrait jamais arriver en production.
• -G / --get ajoute toutes les valeurs -d et --data-urlencode à l’URL sous forme de chaîne de requête et envoie un GET.
• -s, -S, -v, -i, -o et les options de progression ne concernent que l’affichage de curl : elles n’ont pas d’équivalent dans le code et sont ignorées.
Guillemets bash et Windows, en bref
En bash, le texte entre 'guillemets simples' est littéral ; les "guillemets doubles" autorisent les échappements \" et \$ ; les chaînes $'…' comprennent les échappements \n, \t, \' et \xHH. Une barre oblique inverse en fin de ligne poursuit la commande sur la ligne suivante. Chrome utilise $'…' dès qu’un en-tête ou un corps contient un guillemet simple ou un caractère non ASCII.
Dans Windows cmd, ^ est le caractère d’échappement et sert aussi à continuer une ligne. Le « Copy as cURL (cmd) » de Chrome entoure chaque valeur de ^"…^" et échappe les caractères comme &, %, { et } avec ^. PowerShell est encore différent : dans Windows PowerShell 5, curl est un alias d’Invoke-WebRequest, donc lancez explicitement curl.exe. Ce convertisseur lit les formes bash et cmd ; la syntaxe propre à PowerShell, comme les continuations par accent grave, n’est pas prise en charge.
Outils gratuits similaires
- JSON en TypeScript — Collez un exemple JSON et obtenez des interfaces TypeScript, un schéma Zod, un JSON Schema ou des types pour Go, Python, Java, C#, Kotlin, Swift et Rust.
- Formateur JSON — Indentez, minifiez et validez du JSON, avec les erreurs d’analyse localisées par ligne et colonne. Dans votre navigateur, sans envoi.
- Décodeur JWT — Décodez l’en-tête et la charge utile d’un JWT, lisez l’expiration en clair, vérifiez les signatures HS, RS, PS et ES ou signez un nouveau jeton. Rien ne quitte votre navigateur.
- Encodeur / décodeur Base64 — Encodez du texte ou des fichiers en Base64, transformez des images en data URI avec extraits CSS et <img>, et décodez du Base64 en fichier avec aperçu. Rien ne quitte votre navigateur.
- Décodeur de certificat SSL — Collez un certificat PEM, une chaîne ou une CSR, ou importez un fichier .crt, pour voir les SAN, l’expiration, l’émetteur, le type de clé et les empreintes. Décodé dans votre navigateur.