logo
GeekFormat

Générateur de code cURL

Entrée cURL

Collez une commande cURL pour analyser automatiquement l'URL, la méthode, les en-têtes et le corps de la requête.

Requête analysée

https://api.example.com/items1 en-tête(s)Corps : 15 caractèrescurlToCode.flag.followRedirects

Code généré

curlToCode.target.fetch

Collez la commande curl et obtenez du code de requête HTTP exécutable en 11 langages en quelques secondes.

Recommandations connexes

Cas d'utilisation

  • Après avoir fait un clic droit sur une requête dans le panneau Network de Chrome DevTools et sélectionné « Copy as cURL », collez-la dans cet outil pour la convertir directement dans le code du langage utilisé par votre projet, 10 fois plus rapide que d'écrire la requête à la main
  • Lors du débogage d'APIs tierces quand la documentation fournit des exemples curl, convertissez-les rapidement en code Python requests/Java OkHttp/C# HttpClient pour les intégrer dans votre projet
  • Lors du débogage d'interfaces d'environnement de production, copiez des commandes curl depuis des outils de capture (Charles/mitmproxy/Wireshark) et convertissez-les en code de test unitaire pour vérifier directement
  • Lors de la rédaction de documentation d'API, basculez rapidement entre des exemples de plusieurs langages, fournissant des exemples de code prêts à exécuter aux lecteurs de différentes piles technologiques
  • Lors de la résolution de problèmes de requêtes en production, utilisez curl pour reproduire le problème puis convertissez-le en code pour l'envoyer à des collègues ou créer un Issue, facilitant la reproduction directe par d'autres
  • En développement multilingue (par exemple, passer d'un projet Python à Go), convertissez rapidement les requêtes curl existantes en code client HTTP du nouveau langage, économisant le temps de consultation de la documentation
  • Dans des scripts Shell convertissez des commandes curl en PowerShell Invoke-RestMethod pour des collègues opérations Windows, ou vice versa
  • Apprenez le protocole HTTP : en comparant le code qui implémente la même requête dans différents langages, comprenez les différences d'API des bibliothèques client HTTP
  • Convertissez rapidement curl -X POST -d 'json' en code avec Content-Type correct et sérialisation JSON, évitant les erreurs de concaténation de chaînes à la main
  • Quand vous avez besoin d'appeler des APIs dans des scripts CI/CD, convertissez des commandes curl déboguées localement en code du langage de script correspondant pour l'intégrer au pipeline

Fonctionnalités

  • 11 langages/bibliothèques cibles : couvre frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), ligne de commande (wget), toutes les piles technologiques principales
  • Analyse intelligente des commandes curl : reconnaît automatiquement l'URL, la méthode HTTP, les en-têtes, le corps, prend en charge guillemets simples/doubles, échappement par barre oblique inverse, commandes multilignes (barre oblique inverse en fin de ligne)
  • Support complet des paramètres curl courants : -X/--request méthode, -H/--header en-tête, -d/--data/-F formulaire/corps JSON, -u/--user authentification Basic, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location suivre redirections, --compressed décompression automatique, -k/--insecure ignorer vérification certificat, -I/--head requête HEAD
  • Reconnaissance intelligente du corps JSON : détecte Content-Type application/json et sérialise automatiquement avec JSON.parse/JSON.stringify/requests(json=)/json=, générant du code utilisant directement des objets plutôt que des chaînes, plus idiomatique
  • Conversion automatique de l'authentification Basic : en détectant -u user:pass génère automatiquement l'en-tête Authorization: Basic <base64>, utilisant les mécanismes d'authentification natifs de chaque langage (Python auth=, OkHttp credentials, C# credentials, etc.)
  • Badges d'indicateurs de sécurité : détecte automatiquement les paramètres comme --compressed/-L/-k/-u, les affichant avec des badges visibles dans les résultats de l'analyse
  • Changement manuel de méthode HTTP : après avoir analysé automatiquement la méthode curl, permet de changer manuellement la méthode dans le menu déroulant (GET/POST/PUT, etc. 7 types), voyant le code correspondant instantanément
  • Échappement de chaînes sécurisé : lors de la génération de code pour chaque langage utilise des littéraux de chaîne natifs (guillemets triples/barre oblique inverse en Python, backticks en Go, @"" en C#, guillemets simples en PHP, guillemets doubles échappés en Java), évitant les erreurs de syntaxe
  • Avertissements d'erreur d'analyse : quand une commande curl invalide est saisie (URL manquante, ne commence pas par curl, POST sans body, etc.) affiche un avertissement orange indiquant le problème spécifique
  • 3 exemples en un clic : fournit 3 exemples typiques : GET+authentification Token, POST+JSON, authentification Basic+suivre redirections, pour voir rapidement la capacité de l'outil
  • Effacer l'entrée en un clic : le bouton Clear réinitialise rapidement, sans résidus lors du collage de nouvelles commandes
  • Traitement 100% local : les commandes curl et le contenu des requêtes sont analysés et convertis entièrement dans le navigateur, ne sont envoyés à aucun serveur, les tokens/mots de passe sensibles ne fuient pas
  • Copier le code en un clic : après avoir généré le code cliquez sur le bouton Copy pour copier dans le presse-papiers, collez directement dans votre projet et exécutez
  • Adaptation du mode non sécurisé HTTPS : le paramètre -k/--insecure génère la configuration correspondante d'ignorance de vérification de certificat TLS dans Node/Go/Python/PHP/C#/PowerShell (wget utilise --no-check-certificate, C# affiche un avertissement ServicePointManager, Node définit NODE_TLS_REJECT_UNAUTHORIZED)

Comment utiliser

  1. Obtenez la commande curl : dans le panneau Network de DevTools du navigateur faites un clic droit sur la requête → Copy → Copy as cURL (bash); ou exportez cURL depuis des outils de capture comme Postman/Charles/mitmproxy; ou écrivez la commande curl à la main
  2. Collez dans la zone de saisie : collez la commande curl dans la zone de saisie supérieure, prend en charge les commandes d'une ou plusieurs lignes (avec barre oblique inverse de continuation), supprimant automatiquement les sauts de ligne
  3. Cliquez sur les boutons d'exemple pour référence : si vous n'êtes pas familier avec le format vous pouvez cliquer sur « Exemple 1/2/3 » pour charger des commandes curl prédéfinies et voir l'effet
  4. Consultez les résultats de l'analyse : la zone de résultats affichera l'URL, le nombre d'en-têtes, les caractères du corps, et des badges de compression/redirection/ignorer certificat/authentification Basic, affichant des avertissements oranges s'il y a des problèmes
  5. Ajustez la méthode si nécessaire : si la méthode reconnue automatiquement est incorrecte (par exemple, curl n'a pas -X POST mais devrait être POST), changez manuellement la méthode HTTP dans le menu déroulant
  6. Sélectionnez le langage cible : dans la zone de code cible cliquez sur le bouton du langage correspondant (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, etc.)
  7. Copiez le code : cliquez sur le bouton « Copier le code », collez dans votre projet/terminal et exécutez

FAQ

À quoi sert l'outil de conversion cURL en code ? Pourquoi ne pas utiliser directement la commande curl ?

Appeler directement des commandes curl dans le code (comme shell_exec, subprocess.run) nécessite de lancer des sous-processus, est insécurisé et difficile de gérer les erreurs, obtenir les en-têtes de réponse, faire des conversions de types. Le code de production devrait utiliser des clients HTTP natifs du langage de programmation (Python requests, Java OkHttp, JS fetch, etc.). La valeur de curl-to-code est de traduire automatiquement les commandes curl que vous copiez depuis DevTools/outils de capture en code client HTTP du langage correspondant, vous épargnant le travail mécanique de consulter la documentation d'API, échapper les guillemets manuellement, traiter JSON/l'authentification, etc., copiez-collez pour exécuter.

Quels langages/bibliothèques cibles sont pris en charge ?

Actuellement 11 cibles sont prises en charge : JavaScript fetch (natif du navigateur), Axios (bibliothèque HTTP universelle Node/navigateur), Node.js node-fetch, Python requests (bibliothèque HTTP la plus populaire de Python), Python httpx (bibliothèque HTTP nouvelle génération compatible HTTP/2 et asynchrone), Go net/http (bibliothèque standard de Go), extension PHP cURL, Java OkHttp (bibliothèque haute performance universelle Android/backend), C# HttpClient (client HTTP standard de .NET), PowerShell Invoke-RestMethod (courant dans scripts d'automatisation Windows), wget (outil de téléchargement en ligne de commande). Si le langage dont vous avez besoin n'est pas dans la liste (comme Ruby, Rust reqwest, Dart http, Swift URLSession, etc.), vous pouvez envoyer des commentaires sur la page, nous l'ajouterons selon la demande.

Comment copier la commande curl depuis Chrome DevTools ?

Étapes : 1. Ouvrez Chrome/Edge, appuyez sur F12 pour ouvrir DevTools ; 2. Basculez vers le panneau Network ; 3. Actualisez la page ou déclenchez la requête cible ; 4. Trouvez la requête cible dans la liste des requêtes (vous pouvez filtrer par XHR/JS) ; 5. Faites un clic droit sur la requête → Copy → sélectionnez « Copy as cURL (bash) » (version bash recommandée, meilleure compatibilité) ; 6. Collez dans la zone de saisie de cet outil. Attention à ne pas sélectionner Copy as fetch (c'est du code JS pas curl). Firefox/Safari fonctionnent de manière similaire, tous ont l'option Copy as cURL.

La gestion des guillemets dans les commandes curl est compliquée, quels formats sont pris en charge ?

L'outil reconnaît les guillemets simples, guillemets doubles, échappement par barre oblique inverse style bash ; guillemets doubles+échappement ^ de Windows cmd ; échappement par backtick de PowerShell essentiellement. Il est recommandé d'utiliser le format bash (enveloppé dans des guillemets simples). Les commandes multilignes (avec barre oblique inverse \ de continuation) prennent également en charge le collage, l'outil supprime automatiquement les sauts de ligne et caractères de continuation. Si votre commande curl est particulièrement complexe (contient des variables shell, substitution de commande $(...), pipes |, etc.), il est recommandé d'exécuter d'abord la commande echo dans le terminal pour imprimer le curl réel développé puis de copier, ou de simplifier manuellement d'abord (substituer les variables par des valeurs réelles).

Pourquoi lors de l'envoi de JSON avec -d dans curl le serveur reçoit des données illisibles/400 ?

C'est l'une des erreurs les plus courantes de curl. L'option -d/--data de curl a Content-Type par défaut application/x-www-form-urlencoded (format formulaire), pas application/json. Si vous faites directement curl -d '{"name":"demo"}' url, le serveur l'analysera comme formulaire (échec d'analyse ou données vides). Vous devez ajouter explicitement l'en-tête -H "Content-Type: application/json" pour envoyer du JSON correctement. Cet outil affiche un avertissement orange quand il détecte un corps mais sans Content-Type.

Le code généré peut-il être copié et exécuté directement ? Quelles dépendances dois-je installer ?

Le code de la plupart des langages peut être exécuté directement en utilisant des bibliothèques standard (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget sont intégrés), ne nécessite pas d'installation supplémentaire. D'autres nécessitent des bibliothèques tierces : Axios (nécessite npm install axios), node-fetch (nécessite npm install node-fetch, Node 18+ a fetch intégré sans installation), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (nécessite d'importer la dépendance okhttp3 avec Maven/Gradle). Le code par défaut imprime le code de statut et le texte de la réponse, vous pouvez modifier la logique de traitement selon vos besoins.

Est-ce compatible avec l'upload de fichiers multipart/form-data (paramètre -F) ?

Support basique : le paramètre -F est reconnu comme corps de requête (body), mais le code généré traite actuellement @file comme une chaîne littérale au lieu d'un upload de fichiers réel. L'upload de fichiers nécessite de lire le contenu du fichier local, les méthodes de traitement varient beaucoup entre les langages (JS utilise FormData/FormData.append, Python utilise le paramètre files=, Go utilise multipart.Writer). Il est recommandé, sur la base du code généré par l'outil, de consulter la documentation d'upload de fichiers de la bibliothèque correspondante pour faire des ajustements. Des versions ultérieures amélioreront le support de multipart.

Mes commandes curl et données sensibles seront-elles envoyées ?

Absolument pas. Tout le processus d'analyse et de génération de code est complété 100% localement dans votre navigateur (JavaScript purement frontend), les commandes curl, Tokens/Cookies/mots de passe dans les en-têtes, données dans le corps de la requête ne sont envoyés à aucun serveur. Vous pouvez utiliser cet outil hors ligne, ne vous inquiétez pas de fuite d'informations sensibles.

Comment -k/--insecure pour ignorer la vérification de certificat est-il traité dans le code de chaque langage ?

En détectant le paramètre -k, cet outil génère la configuration correspondante d'ignorance de vérification de certificat pour chaque langage cible : Python requests/httpx utilise verify=False ; Node.js définit process.env.NODE_TLS_REJECT_UNAUTHORIZED='0' ; Go crée tls.Config{InsecureSkipVerify: true} personnalisé ; PHP définit CURLOPT_SSL_VERIFYPEER=false et CURLOPT_SSL_VERIFYHOST=0 ; Java OkHttp nécessite TrustManager personnalisé (un avertissement est ajouté en commentaire dans le code, car le code est long) ; C# peut personnaliser ServerCertificateCustomValidationCallback ; PowerShell utilise -SkipCertificateCheck (PS6+) ; wget utilise --no-check-certificate ; fetch du navigateur ne peut pas ignorer les certificats (restriction de sécurité du navigateur, un commentaire explicatif est ajouté dans le code). Note : ces configurations sont uniquement pour les tests de développement local, ne désactivez jamais la vérification de certificats en production.

Pourquoi le code Go généré ne suit-il pas les redirections ? Avec -L il devrait les suivre ?

Le comportement par défaut de net/http de Go est de ne pas suivre les redirections (coïncide avec le comportement par défaut de curl, curl doit ajouter explicitement -L pour suivre). L'outil, en détectant le paramètre -L, génère un client vide (http.Client{} avec CheckRedirect nil par défaut, c'est-à-dire suit 10 redirections) ; sans -L génère un client avec CheckRedirect retournant http.ErrUseLastResponse, ne suit pas les redirections (coïncide avec le comportement de curl sans -L). Si vous voulez que Go suive toujours les redirections, vous pouvez utiliser directement http.DefaultClient dans le code ou personnaliser Client{Timeout: ...}.

Comment gérer les requêtes qui nécessitent une connexion/avec Cookies ?

Il y a deux façons :①Copier curl directement depuis DevTools du navigateur avec session ouverte (recommandé) : clic droit sur la requête→Copy as cURL, ainsi cookies/en-têtes sont inclus automatiquement, collez et convertissez pour exécuter directement ;②Dans curl spécifiez manuellement la valeur du Cookie avec -b/--cookie (-b 'sessionid=abc; token=xyz'), spécifiez l'authentification Basic avec -u/--user, spécifiez Bearer Token avec -H "Authorization: Bearer xxx", l'outil convertit ces en-têtes tels quels. Note : les Cookies copiés depuis le navigateur ont une durée de validité, peuvent expirer après quelques heures et nécessiter d'être recopiés.

Pourquoi le corps JSON dans Python requests utilise-t-il le paramètre json= au lieu de data= ?

Le paramètre data de la bibliothèque Python requests code dict comme application/x-www-form-urlencoded, envoie string tel quel, tandis que le paramètre json sérialise automatiquement dict/liste comme chaîne JSON et définit automatiquement l'en-tête Content-Type: application/json (si vous ne l'avez pas défini manuellement). Cet outil, en détectant que Content-Type contient application/json et que le body est du JSON valide, analyse automatiquement le JSON comme dict Python et utilise le paramètre json=, ainsi le code est plus concis, vous n'avez pas besoin de json.dumps manuellement, et n'oubliez pas l'en-tête Content-Type. Les body non JSON (formulaire/XML/texte brut) utilisent le paramètre data= pour envoyer la chaîne originale.

La commande curl est très longue avec beaucoup d'en-têtes, que faire si le code généré a tous les en-têtes ?

La commande curl copiée depuis DevTools inclura beaucoup d'en-têtes ajoutés automatiquement par le navigateur (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, etc.), la plupart de ces en-têtes n'ont pas besoin d'être configurés explicitement dans le code (les clients HTTP ajouteront automatiquement des valeurs par défaut raisonnables, comme Accept-Encoding, Connection, Host, Content-Length, etc.). Il est recommandé, après avoir copié le code généré, de supprimer manuellement les en-têtes inutiles, en conservant au moins : Content-Type, Authorization, Cookie (si nécessaire), en-têtes métier personnalisés. Les en-têtes superflus rendent non seulement le code laid, mais peuvent causer des comportements anormaux (par exemple définir Accept-Encoding explicitement mais le client ne décomprime pas automatiquement).

Est-ce compatible avec le paramètre de proxy HTTPS (-x/--proxy) ?

Actuellement le paramètre de proxy HTTP (-x/--proxy) n'est pas encore converti automatiquement. La configuration de proxy varie beaucoup entre les langages (JS fetch n'a pas de support de proxy natif nécessite Agent, Python utilise le paramètre proxies=, Go via Transport.Proxy, PHP utilise CURLOPT_PROXY, C# utilise WebProxy, Java utilise OkHttpClient.Builder().proxy()). Les en-têtes de proxy (authentification du proxy lui-même) nécessitent également un traitement séparé. Dans la version actuelle les paramètres liés au proxy sont ignorés, vous pouvez ajouter manuellement la configuration de proxy sur la base du code généré, des versions ultérieures amélioreront le support du proxy.

Quelles différences y a-t-il avec des outils en ligne comme curlconverter.com ?

Par rapport à des outils connus comme curlconverter.com, les avantages de curl-to-code de GeekFormat :①Traitement entièrement local (la logique de traitement de curlconverter est sur le serveur ou client), n'envoie pas de données plus sûr ;②Interface et explications en chinois, convivial pour les développeurs chinois ;③Le code généré s'adapte mieux à l'usage de production réel (par exemple Python requests utilise le paramètre json= pour le body JSON au lieu de data=, comportement par défaut de Go aligné sur curl, C# traite Content-Type correctement sans coder en dur application/json) ;④Documentation complète, FAQ, tableaux de comparaison, dépannage, non seulement génère du code mais vous aide à comprendre pourquoi c'est écrit ainsi ;⑤Gratuit sans publicité, ne nécessite pas d'inscription ni de connexion, n'a besoin d'aucune requête réseau pour être utilisé.

术语表

cURL / curl
Outil en ligne de commande open source et bibliothèque libcurl, pour envoyer des requêtes de protocoles comme HTTP/HTTPS/FTP en ligne de commande via URL, c'est l'outil le plus utilisé par les développeurs pour déboguer les APIs.
Méthode HTTP
Action de requête HTTP, les plus courantes sont GET (lire), POST (créer), PUT (mise à jour complète), PATCH (mise à jour partielle), DELETE (supprimer), HEAD (obtenir en-têtes), OPTIONS (consulter les capacités du serveur).
En-tête (Header)
Paires clé-valeur de métadonnées dans la requête HTTP, comme Content-Type, Authorization, User-Agent, Cookie, Accept, etc., spécifiées dans curl via -H/--header.
Corps (Body)
Partie données de la requête HTTP, courante dans POST/PUT/PATCH, spécifiée dans curl via -d/--data/--data-binary/-F, les formats courants sont JSON, form-urlencoded, multipart/form-data.
Content-Type
En-tête de requête/réponse indiquant le type de média du body. application/json indique JSON, application/x-www-form-urlencoded indique formulaire codé URL, multipart/form-data indique formulaire d'upload de fichiers.
Authentification Basic
Authentification HTTP de base, transmet utilisateur et mot de passe via l'en-tête Authorization: Basic base64(user:pass), spécifiée dans curl avec -u user:pass.
Bearer Token
Méthode d'authentification basée sur des tokens, transmise via l'en-tête Authorization: Bearer <token>, courante en JWT/OAuth2.
User-Agent
En-tête de requête identifiant le type de client (navigateur/robot/script), curl envoie par défaut "curl/numéro de version", de nombreux sites web bloquent les UA non navigateur, couramment spécifié avec -A.
Cookie
Paires clé-valeur envoyées par le serveur via Set-Cookie et renvoyées par le navigateur dans les requêtes ultérieures via l'en-tête Cookie, pour maintenir les sessions. curl -b envoie Cookie, -c sauvegarde Cookie.
Referer
En-tête de requête indiquant l'URL de la page d'origine de la requête actuelle, certaines vérifications anti-hotlink/CSRF la vérifient. Défini dans curl avec -e.
Redirection (3xx)
Quand le serveur retourne des codes de statut 301/302/303/307/308, indique au navigateur de sauter vers une nouvelle URL. curl par défaut ne suit pas, ajoutez -L/--location pour suivre.
--compressed
Option de curl, ajoute automatiquement l'en-tête Accept-Encoding: deflate, gzip et décomprime automatiquement la réponse. Sans définir, la réponse peut être des données compressées illisibles.
-k/--insecure
Option de curl, ignore la vérification de certificat HTTPS, uniquement pour les environnements de test avec certificats auto-signés, interdite en production.
fetch API
API de requêtes HTTP JavaScript native du navigateur, retourne Promise, compatible avec les navigateurs modernes.
Axios
Bibliothèque client HTTP populaire basée sur Promise, compatible avec navigateur et Node.js, sérialisation JSON automatique, intercepteurs, annulation par délai.
OkHttp
Bibliothèque cliente HTTP Java/Android de Square, haute performance, compatible HTTP/2, pool de connexions, GZIP transparent.
HttpClient (.NET)
Client HTTP recommandé pour C#/.NET, espace de noms System.Net.Http, API standard de .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet de requête HTTP intégré à PowerShell 3.0+, analyse automatiquement les réponses JSON/XML comme objets PowerShell.

Tableau de comparaison des options courantes de cURL avec 11 langages cibles

Valeurs courantes de Content-Type et utilisation avec curl

Comparaison de trois formats de Copy as cURL dans Chrome DevTools

Troubleshooting