Cookies Ce site ne conserve que ce dont il a besoin pour fonctionner. Il n’y a aujourd’hui ni mesure d’audience ni publicité, et rien ici ne vous suit sur d’autres sites. Lire la politique de confidentialité

Choisir ce que j’autorise
+92 312 8299940Devis gratuit
Outil gratuit, sans compte

Convertisseur curl
Transformer une commande en code

Ce convertisseur curl transforme une commande en code qui tourne. Choisissez PHP, Python, JavaScript, Go, Ruby, Java, C# ou HTTP brut. Donc vous collez une fois, puis vous arrêtez de retaper les en-têtes à la main. Le travail se fait dans votre navigateur, et nous ne téléversons rien.

  • GratuitPrix
  • TreizeLangues
  • AucuneInscription
  • AucuneEnvois

curl Converter

Transformer une commande curl en PHP, Python, JavaScript, Go, Ruby, Java, C# ou HTTP brut

Prêt. Collez une commande curl ou appuyez sur Essayer un exemple.

Votre navigateur fait tout le travail ici, dans cet onglet. Nous n’envoyons rien, ne stockons rien et n’enregistrons rien.
La version courte

Ce que fait un convertisseur curl

Une commande curl écrit une requête sous forme de ligne de commande. Ce convertisseur curl transforme cette ligne en code que vous pouvez poser dans un projet. C’est pourquoi l’en-tête copié depuis devtools garde sa valeur exacte, et vous arrêtez de le retaper.

Quatre choses reviennent d’un seul collage. D’abord la requête elle-même : méthode, adresse, en-têtes et corps, relus pour que vous puissiez les vérifier. Ensuite le code dans la langue choisie. Après cela, les interrupteurs que curl aurait appliqués, comme le suivi des redirections ou un délai. Enfin, une liste de tout ce que le lecteur a dû décider seul.

Cette dernière liste compte plus qu’elle n’en a l’air. Une supposition silencieuse dans du code généré est un bug que vous trouvez en production. Donc la page affiche chaque décision à côté du code.

Vous n’installez rien et vous n’envoyez rien. Donc vous collez une commande, vous lisez le code et vous fermez l’onglet quand cela vous arrange.

Comment un convertisseur curl lit une commande

Le travail se divise en trois passes. D’abord, la page découpe la commande en mots comme le ferait un shell. Ensuite elle lit chaque mot comme un interrupteur, une valeur ou l’adresse. Enfin elle remet la requête à un écrivain pour la langue choisie.

Schéma des trois passes d’un convertisseur curl : à gauche une commande curl avec trois en-têtes et un corps JSON, au milieu trois étapes numérotées qui lisent découper les mots comme le ferait un shell, marquer chaque mot comme interrupteur, valeur ou adresse, puis remettre la requête à un écrivain, et à droite la même requête en script PHP avec l’adresse, les en-têtes et le corps déjà remplis
Découpez les mots, lisez les interrupteurs, puis écrivez la requête.

Le découpage suit les règles du shell pour le guillemétage, car une commande collée depuis devtools s’appuie dessus. Un corps entre guillemets simples est un seul mot même s’il contient des espaces. Une barre oblique inverse en fin de ligne la joint à la suivante.

Lire les interrupteurs est ce qui fait la valeur d’un convertisseur. Comme curl liste plus de deux cents options, seules certaines méritent d’être reprises. Celles qui comptent changent ce qu’un serveur voit. Ce sont la méthode, les en-têtes, le corps, les cookies, les redirections et le délai. La page signale le reste au lieu de le deviner.

Les écrivains ne touchent jamais au réseau. Donc la page fonctionne hors ligne. Elle fonctionne aussi sur une machine sans curl installé. Une commande peut viser une adresse que votre navigateur n’atteint pas, et la page la convertit quand même.

Pourquoi le guillemétage est la partie difficile

Un convertisseur qui coupe aux seuls espaces se trompe sur la plupart des commandes. Comme une valeur d’en-tête contient souvent un espace, un découpage naïf la coupe en deux. Alors le code porte la moitié d’un jeton et la requête échoue avec un 401.

Donc le lecteur suit l’état des guillemets pendant qu’il parcourt la ligne. Un guillemet double regroupe une suite de mots en un seul, et un guillemet simple fait de même sans aucune échappement à l’intérieur. Seul un guillemet qui ouvre et ferme aux bons endroits compte.

La barre oblique inverse est le troisième cas. Hors guillemets elle échappe le caractère suivant, et devant un saut de ligne elle supprime le saut lui-même. C’est pourquoi une commande collée sur vingt lignes se lit toujours comme une seule commande.

Quelles langues il écrit

Treize cibles couvrent le travail que presque tous apportent ici. Pour PHP il y a cURL simple et le client Guzzle. Pour Python il y a requests. Pour JavaScript il y a fetch, axios et le module http de Node.js. Go, Ruby, Java et C# en reçoivent un chacun. Puis viennent le HTTP brut, une ligne curl nettoyée et le JSON.

Capture du cadre de code généré avec la cible Python requests choisie : l’exemple écrit comme un script qui importe requests, garde l’adresse de commandes intacte, construit un dictionnaire de trois en-têtes avec le jeton bearer en place, passe la charge JSON comme une seule chaîne, puis appelle post avec verify et allow_redirects tous deux à true et un délai de vingt secondes, et affiche le statut et le corps
La même requête en Python, avec les en-têtes et le corps octet pour octet.

Chaque écrivain est une petite fonction sur le même objet de requête. À cause de cela, chaque cible voit des octets identiques. Le corps envoyé par l’exemple PHP est le corps envoyé par l’exemple Go. Rien ne rogne un en-tête par langue ni ne reformate la charge en silence.

Les écrivains PHP et Python visent du code exécutable tel quel. Donc celui de PHP ouvre avec la balise, règle les options et ferme le descripteur. Celui de Python importe requests, construit les en-têtes et affiche à la fois le statut et le corps.

JavaScript se divise en trois exprès. Fetch est livré dans le navigateur. Axios apporte ses propres commodités, et le module http de Node.js convient à un script sans dépendances. Donc les trois méritent une place.

Deux cibles servent à lire plutôt qu’à exécuter. Le HTTP brut affiche le message tel qu’il passerait sur le fil. C’est le moyen le plus rapide de voir si un en-tête est vraiment là. Le JSON affiche la même requête comme données, prête pour une fixture de test.

Ce que montre le panneau de relecture

Avant que le moindre code apparaisse, la page affiche la requête qu’elle a comprise. Neuf faits reçoivent chacun une ligne. Ils couvrent la méthode, l’adresse, le nombre d’en-têtes, la taille du corps et le type de contenu. L’autorisation, les cookies, les interrupteurs et le délai suivent.

Capture du panneau de relecture sous le générateur : neuf faits dans une grille lisant méthode POST, l’adresse de commandes avec une requête status, trois en-têtes, un corps de requête de cinquante-trois octets, type de contenu application slash json, autorisation définie par un en-tête, aucun cookie, l’interrupteur follow et un délai de vingt secondes, avec la liste des en-têtes en dessous montrant accept, content type et authorization un par ligne, le dernier portant un jeton bearer masqué
La requête est relue avant que le code soit écrit, donc un en-tête perdu apparaît ici.

Les adresses ne sont pas la partie intéressante. Plutôt, le point est la vérification. Un en-tête disparu apparaît ici avant que vous ne colliez quoi que ce soit. Un corps arrivé en formulaire au lieu de JSON aussi. Un mot de passe au mauvais endroit apparaît aussi.

La page affiche la liste complète des en-têtes en dessous, un par ligne. Par conséquent vous comparez ce que curl enverrait avec ce que votre serveur attend. Alors la différence est visible au lieu d’être supposée.

Le panneau nomme les interrupteurs en mots simples. Un lecteur du code ne devrait pas avoir à savoir que -L veut dire suivre les redirections. Le panneau dit follow, insecure, compressed ou silent à la place.

De devtools à un script en un collage

La voie habituelle est le navigateur. Tout grand navigateur peut copier une requête en curl. Donc ouvrez le panneau réseau, faites un clic droit sur l’appel qui a échoué, copiez-le et collez-le ici. La commande arrive avec les vrais en-têtes, le vrai corps et les vrais cookies.

Capture des notes de décision sous une commande convertie : une ligne explique qu’un corps multipart est construit ici et envoyé en octets bruts, et qu’une partie fichier est un texte de remplacement car la page ne peut pas lire votre disque
Tout ce que le lecteur a dû décider est affiché à côté du code, pas caché dedans.

C’est aussi la façon habituelle de déboguer un appel privé. Donc vous reproduisez une requête échouée en code. Puis vous ajoutez un print et regardez ce que dit le serveur, au lieu de deviner depuis un panneau réseau.

Les sauts de ligne n’ont pas d’importance. Par conséquent la page lit une commande copiée sur vingt lignes comme une seule. L’indentation non plus.

Pas à pas

Comment utiliser le convertisseur curl

Quatre étapes, et aucune n’a besoin d’un compte.

  • 1

    Copiez la commande

    Donc ouvrez devtools, faites un clic droit sur la requête et choisissez Copier en tant que curl. Depuis un document ou un README, sélectionnez la commande entière, y compris les barres obliques inverses en fin de ligne.

  • 2

    Collez-la dans le cadre de gauche

    Puis collez le tout. Le cadre prend la commande exactement comme vous l’avez copiée. Donc pas besoin de joindre les lignes ni de ranger l’indentation avant.

  • 3

    Vérifiez le panneau de relecture

    Ensuite, comparez les faits avec ce que vous attendez. Un en-tête manquant se repère mieux ici que dans le code en dessous. Un corps arrivé en formulaire aussi.

  • 4

    Choisissez une langue et prenez le code

    Enfin, choisissez une cible, puis copiez-la ou téléchargez-la. Lisez aussi les notes de décision : la page liste exprès tout ce que le lecteur a deviné.

Pourquoi cette page

Pourquoi utiliser ce convertisseur curl

Quatre raisons, et chacune porte sur la requête plutôt que sur le code.

  • Un collage, treize cibles

    Donc vous comparez deux langues côte à côte et vous tranchez la dispute sur l’en-tête manquant. Comme la même requête alimente chaque écrivain, les exemples s’accordent entre eux par construction.

  • Rien ne quitte le navigateur

    Par conséquent un jeton bearer ou un cookie de session reste sur votre machine. Il n’y a ni envoi, ni journal, ni compte. Cela compte quand une commande porte un secret vivant.

  • La page affiche chaque supposition

    Comme une supposition silencieuse dans du code généré est un bug que vous trouvez plus tard, la page liste chaque décision à côté du code, avec l’interrupteur d’où elle vient.

  • Chaque exemple PHP passe php -l d’abord

    Ensuite la compilation écrit chaque exemple PHP dans un fichier. Elle passe chacun par php -l avant que la page ne soit en ligne. Donc les erreurs de guillemétage se font prendre ici plutôt que dans votre éditeur.

Règles qu’il suit

Les règles que tient ce convertisseur

Six règles, et ce sont elles qui rendent la sortie fiable plutôt que seulement plausible.

  • La méthode vient de la commande Un -X explicite gagne. Sinon les règles de curl s’appliquent. Un corps en fait un POST, un interrupteur HEAD en fait un HEAD, et le reste reste GET.
  • Un type de contenu déclaré bat un défaut Devtools envoie toujours l’en-tête. Donc le code porte la valeur que vous avez copiée, même quand curl aurait deviné autre chose.
  • Les parties de corps répétées se joignent avec une perluète Donc trois interrupteurs -d deviennent un corps de formulaire, exactement comme curl les envoie. La page dit qu’elle les a joints, pour que vous le sachiez.
  • L’authentification basique est construite, pas copiée Alors le nom d’utilisateur et le mot de passe de -u deviennent un en-tête Authorization. Donc le code envoie les mêmes octets sans avoir besoin de curl pour le faire.
  • Rien n’est envoyé nulle part La lecture et l’écriture tournent toutes deux dans votre navigateur. Donc une commande visant un hôte interne se convertit quand même, et aucune requête n’est jamais faite.
  • Un refus est un résultat Donc la page signale un interrupteur sans équivalent dans la langue cible. Elle ne lâche jamais cet interrupteur en silence. Ensuite vous décidez quoi faire, l’interrupteur étant nommé.
Attention ici

Erreurs à éviter avec des requêtes générées

Six choses que les gens ratent, et comment esquiver chacune.

  • Coller une commande aux guillemets cassés

    Attention quand un shell ou une fenêtre de chat a retiré les guillemets extérieurs. Comme un guillemet non fermé avale le reste de la ligne, vérifiez la marque de fermeture avant de blâmer le convertisseur.

  • Laisser un jeton réel dans l’exemple

    Par conséquent remplacez un jeton bearer vivant par un texte de remplacement avant de valider le fichier. Le convertisseur garde la valeur que vous lui avez donnée, donc le rangement vous revient.

  • Faire confiance à un en-tête lu depuis un fichier

    Un interrupteur -H @file signifie que l’en-tête vit sur le disque. Comme cette page ne peut pas ouvrir votre disque, l’en-tête manque dans le code, et la note le dit.

  • Oublier que les redirections diffèrent par défaut

    Donc curl ne suit pas une redirection sans -L. Plusieurs clients HTTP suivent par défaut, et cette différence mord. Le panneau nomme le choix qu’a fait la commande.

  • Coller un corps multipart et attendre un vrai fichier

    Cette page ne peut pas lire le fichier que vous avez nommé. Donc le corps porte un texte de remplacement, et vous mettez le vrai chemin plus tard. Votre bibliothèque cliente peut construire elle-même le formulaire multipart.

  • Supposer que toutes les langues guillemettent pareil

    Un corps tenant une apostrophe casse une chaîne PHP négligée et une chaîne Python négligée à des endroits différents. Par conséquent chaque écrivain échappe pour sa propre langue, et la compilation passe les versions PHP par php -l.

Questions

Questions sur le convertisseur curl

Ce convertisseur curl est-il gratuit ?

Oui. Il n’y a ni compte, ni limite, ni offre payante. Donc vous convertissez autant de commandes que vous voulez.

Envoie-t-il ma commande quelque part ?

Non. Comme la lecture et l’écriture tournent dans votre navigateur, la commande ne quitte jamais votre machine. C’est pourquoi une requête portant un jeton vivant reste privée.

Exécute-t-il la requête ?

Non. Il lit seulement la commande et écrit du code. Donc rien ne part vers l’adresse de la commande, et c’est ce qui rend un hôte interne sûr à coller.

Quelles langues peut-il écrire ?

Treize cibles. Pour PHP il y en a deux : cURL simple et le client Guzzle. Python reçoit requests, et JavaScript reçoit fetch, axios et le module http de Node.js. Go, Ruby, Java et C# en reçoivent un chacun. Les trois derniers sont le HTTP brut, une ligne curl nettoyée et le JSON.

Peut-il lire une commande copiée depuis devtools de Chrome ou Firefox ?

Oui. C’est la voie principale. Ensuite la commande copiée arrive avec ses guillemets et ses barres obliques inverses, et le lecteur gère les deux.

Et une commande écrite sur une seule ligne très longue ?

Il la lit pareil. Le séparateur travaille sur les espaces et les guillemets, pas sur les lignes. Donc une longue ligne et vingt courtes donnent la même requête.

Comprend-il --data-raw, --data-binary et --data-urlencode ?

Oui, et chacun garde son sens. Donc une partie urlencodée reste encodée, et une partie binaire passe telle quelle.

Que se passe-t-il avec les envois de fichier -F ?

La page construit elle-même le corps multipart et l’envoie en octets bruts. Comme elle ne peut pas lire votre disque, une partie fichier porte un texte de remplacement, et la note le dit.

Suit-il les redirections comme curl ?

Il suit la commande. Donc curl ne suit pas une redirection sans -L, et le code ne suit que si la commande l’a fait.

Comment gère-t-il -u utilisateur:motdepasse ?

Il construit lui-même l’en-tête Authorization à partir des deux parties. Par conséquent le code généré envoie le même en-tête Basic sans avoir besoin d’une option curl.

Pourquoi un interrupteur apparaît-il dans les notes de décision ?

Parce que le lecteur a dû choisir pour vous ou laisser quelque chose de côté. Alors la note nomme l’interrupteur, pour que vous puissiez le vérifier à la main.

Puis-je convertir une commande curl sans adresse ?

En partie. Alors la page lit et signale les interrupteurs, mais il n’y a pas de requête à écrire. Elle demande une adresse à la place.

Puis-je exécuter le PHP généré tel quel ?

Oui. Il ouvre avec la balise, règle les options, exécute et ferme le descripteur. De plus il passe par php -l avant que cette page ne soit en ligne, donc le guillemétage tient.

Et le Python généré ?

Il importe requests, construit les en-têtes, envoie l’appel avec la bonne méthode et affiche le statut et le corps. Donc vous le collez dans un fichier et vous le lancez.

Pourquoi fetch a-t-il besoin d’un réglage de redirection ?

Parce que le défaut du navigateur diffère de celui de curl. Donc le code nomme follow ou manual, et les deux correspondent à ce que la commande demandait.

Garde-t-il l’ordre des en-têtes ?

Oui. Le code écrit les en-têtes dans l’ordre où ils apparaissaient dans la commande. Donc un diff contre la ligne d’origine reste lisible.

Peut-il lire un fichier de cookies ?

La page signale le chemin, mais elle n’ouvre pas le fichier. Comme un navigateur ne peut pas lire votre disque en silence, il n’invente aucun en-tête Cookie à partir de là.

Que fait la cible curl nettoyé ?

Elle réécrit la même requête comme une ligne curl plus propre, avec un interrupteur par ligne. Donc vous pouvez la coller dans un script ou un ticket et voir chaque partie.

À quoi sert la cible JSON ?

Elle affiche la requête comme données. Ensuite vous la posez dans une fixture de test et vous comparez ce que votre code envoie avec ce que curl a envoyé.

Gère-t-il --json ?

Oui. Cet interrupteur règle à la fois le type de contenu et l’en-tête accept, et le panneau montre les deux. Quand une partie de corps normale s’y mélange, la page signale que la combinaison est ambiguë.

Combien d’en-têtes peut-il prendre ?

Des centaines. Le lecteur est une seule passe sur les mots. Donc une commande avec trois cents en-têtes se convertit à l’instant même qu’une avec trois.

Fonctionne-t-il sur un téléphone ?

Oui. Les cadres s’empilent et l’exemple reste lisible sur une largeur étroite. Donc vous pouvez convertir une commande loin d’un bureau.

Puis-je utiliser la sortie dans un projet commercial ?

Oui. Il n’y a pas de licence sur le code généré, car le code généré vous appartient, et personne ne demande d’attribution.

Pourquoi le code porte-t-il parfois un commentaire ?

Parce que la langue cible a un endroit pour s’expliquer. Donc le code détaille un interrupteur au sens surprenant là où le lecteur du fichier le trouvera.

Et si le convertisseur lit un interrupteur que je n’ai jamais vu ?

La page le signale comme interrupteur inconnu et l’ignore. Surtout, elle n’invente rien à sa place, ce qui garde le reste de la requête honnête.

Y a-t-il une API ?

Non, et il n’y en a pas besoin, car le travail se fait déjà dans votre navigateur. C’est aussi pourquoi rien n’atteint un journal de serveur.

Pour continuer

Outils qui vont avec celui-ci

Quatre pages vers lesquelles le même travail mène souvent.

  • Formateur JSON

    Ensuite, mettez en forme le corps de la requête avant de le coller dans une fixture. Comme une charge d’une seule ligne cache une mauvaise clé, ceci la rend évidente.

    Ouvrir l’outil →
  • Encodeur et décodeur d’URL

    Vérifiez aussi une valeur de requête passée par --data-urlencode. Alors vous voyez si les signes de pourcentage sont bons avant qu’un serveur ne les refuse.

    Ouvrir l’outil →
  • Encodeur et décodeur d’entités HTML

    Pour un corps de requête portant du balisage, ceci montre ce que le serveur lira vraiment. Donc une perluète échappée cesse d’être une supposition.

    Ouvrir l’outil →
  • Minificateur JavaScript

    Après avoir collé l’exemple fetch dans un projet, ceci le réduit pour la compilation navigateur. Alors le fichier livré reste petit.

    Ouvrir l’outil →

Convertissez maintenant une commande curl

Collez la commande, vérifiez la requête qui revient et repartez avec le code dans la langue qu’il vous faut. Rien ne sort de votre navigateur, donc un jeton reste le vôtre. De plus, tout le travail tient en un collage.