Convertir curl en code
Transformez une commande curl copiée depuis le navigateur ou une documentation d'API en code PHP, Python (requests) ou JavaScript (fetch)
Vos données restent chez vous. La conversion se fait dans le navigateur ; rien n'est envoyé à un serveur.
Cet outil a-t-il fait le travail ?
Merci, votre retour nous est bien parvenu.
Comment ça marche
Les documentations d'API et la fonction « Copier en tant que cURL » du navigateur donnent les requêtes sous forme de commande curl ; cet outil transforme cette commande en code à coller dans votre programme. Prenons curl -X POST https://api.example.com/v1/orders avec l'en-tête -H "Content-Type: application/json" et le corps -d '{"produit": "cahier", "quantite": 2}' : en Python vous obtenez les variables url, headers et data et l'appel requests.post(url, headers=headers, data=data) ; en PHP, la même requête devient CURLOPT_HTTPHEADER et CURLOPT_POSTFIELDS dans curl_setopt_array. Les barres obliques inverses (\) de fin de ligne, les guillemets simples et doubles, les chaînes $'…' et les échappements ^ du format cmd de Windows sont décodés à partir de la commande elle-même ; inutile de la nettoyer. -u utilisateur:mot de passe devient l'authentification, les champs -F un formulaire multipart, -G place les données dans l'adresse, -k désactive la vérification du certificat et -m fixe un délai maximal. Les options sans effet sur la requête, comme -s, -v ou -o, sont ignorées et citées dans la note. La conversion se fait dans votre navigateur : les mots de passe, cookies et jetons de la commande ne partent vers aucun serveur.
Cet outil est aussi connu sous le nom de convertir curl en php, convertir curl en python, curl to php, curl to python, convertir curl en fetch, convertisseur curl en ligne, copier en tant que curl.
Qu'est-ce que cURL ?
cURL est un programme gratuit en ligne de commande qui envoie des requêtes à des adresses web ; son nom vient de « client URL ». Il est installé d'office sous Windows 10, macOS et Linux. Les documentations d'API donnent leurs exemples sous forme de commande curl, car une seule ligne montre l'adresse, la méthode, les en-têtes et les données. L'extension cURL de PHP repose sur la même bibliothèque libcurl.
Qu'est-ce que En-tête HTTP ?
Un en-tête HTTP est une ligne nom-valeur envoyée à côté du corps de la requête : Content-Type indique le format du corps, Authorization les identifiants, Accept le type de réponse attendu. Dans une commande curl, chaque en-tête s'écrit -H "Nom: valeur". Dans le code, il devient une entrée de tableau en PHP, une clé de dictionnaire en Python et une propriété de l'objet headers avec fetch.
Trois choses que curl fait sans le dire : d'où viennent les lignes en plus
curl fait certaines choses que la commande n'écrit pas. Avec -d, il passe la méthode en POST et, sans en-tête Content-Type, ajoute Content-Type: application/x-www-form-urlencoded. Python requests et fetch ne le font pas : requests envoie un corps texte sans type, fetch l'étiquette text/plain. Le serveur peut alors lire la même requête autrement. L'outil écrit donc cet en-tête dans le code, et la note indique le nombre d'en-têtes pour que la ligne supplémentaire ne vous surprenne pas.
La deuxième différence concerne les redirections. Sans -L, curl ne suit pas une réponse 301 ou 302 ; requests et fetch la suivent par défaut. Une commande copiée depuis le navigateur n'a généralement pas -L, alors que le navigateur a bien suivi la redirection : le code Python et JavaScript ne reçoit donc aucun réglage, et le code PHP ne reçoit CURLOPT_FOLLOWLOCATION qu'en présence de -L. La troisième touche les données lues dans un fichier : -d @donnees.txt supprime les retours à la ligne, --data-binary @donnees.txt les garde, et l'outil reporte cette nuance dans le code.
fetch dans un navigateur a une limite de plus : le navigateur gère lui-même les en-têtes Cookie, Referer et User-Agent et ignore les valeurs fixées par le code. Le même code les envoie sous Node.js 18 et plus. Si votre commande contient un tel en-tête, la note vous prévient.
Quel langage choisir, où copier la commande ?
Choisissez le langage de votre projet ; les trois sorties envoient la même requête. La bibliothèque Python requests s'installe avec pip install requests ; la sortie PHP utilise l'extension cURL de PHP, active chez la plupart des hébergeurs ; fetch ne demande aucune installation dans le navigateur ni à partir de Node.js 18.
Pour reproduire une requête d'un site web, ouvrez les outils de développement avec F12 dans Chrome, Edge ou Firefox, faites un clic droit sur la requête dans l'onglet Réseau et choisissez « Copier en tant que cURL ». Sous Windows, deux entrées apparaissent, « (bash) » et « (cmd) » ; l'outil lit les deux. La commande copiée contient votre cookie de session et votre jeton d'accès : effacez ces valeurs avant de partager le code.
- Site PHP côté serveur, extension WordPress → PHP (cURL)
- Script, collecte de données, automatisation → Python (requests)
- Page web ou application Node.js → JavaScript (fetch)
Questions fréquentes
Comment convertir une commande curl en Python ?
Collez la commande dans la zone et choisissez Python. Les en-têtes vont dans le dictionnaire headers, le corps dans la variable data, les identifiants -u dans le paramètre auth, et la requête part avec requests.post ou requests.get. Installez d'abord la bibliothèque avec pip install requests.
Comment convertir curl en PHP ?
Choisissez PHP. Le code utilise curl_init et curl_setopt_array : l'adresse devient CURLOPT_URL, les en-têtes CURLOPT_HTTPHEADER et le corps CURLOPT_POSTFIELDS. Les fichiers envoyés avec -F deviennent new CURLFile(…).
Une commande « Copier en tant que cURL (cmd) » fonctionne-t-elle ?
Oui. Les échappements ^" et les ^ de fin de ligne du format cmd de Windows sont décodés, puis la commande est lue comme au format bash. « Copier en tant que PowerShell » produit Invoke-WebRequest, qui n'est pas curl ; l'outil ne le lit pas.
Les mots de passe et cookies de ma commande sont-ils envoyés quelque part ?
Non. La conversion se fait entièrement dans votre navigateur ; la commande et les mots de passe, cookies et jetons qu'elle contient n'atteignent aucun serveur. Si vous partagez le code obtenu, retirez vous-même ces valeurs.
Que signifie la note « options inconnues » ?
L'outil traduit les options de curl qui modifient la requête. S'il rencontre une option qu'il ne connaît pas, il l'ignore et la nomme dans la note ; ajoutez alors vous-même son équivalent dans le code. Les options qui ne changent que l'affichage de curl (-s, -v, -o) sont également ignorées.