curl est un outil de transfert de données en ligne de commandes et terminal pour Linux ou Windows.
Il prend en charge les protocoles pris en charge (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET et TFTP).
curl offre une multitude d’astuces utiles telles que la prise en charge du proxy, l’authentification des utilisateurs, le téléchargement FTP, la publication HTTP, les connexions SSL, les cookies, la reprise du transfert de fichiers, Metalink, etc.
Elle est une commande pratique pour télécharger des fichiers, interroger un serveur WEB.
On peut l’utiliser autant pour récupérer des ressources que pour débugueur la configuration d’un serveur WEB.
Dans ce tutoriel, vous trouverez 16 exemples d’utilisation de la commande curl.

Table des matières
- 1 16 exemples d’utilisation de la commande Curl
- 1.1 Télécharger un fichier
- 1.2 Télécharger plusieurs fichiers
- 1.3 Télécharger des fichiers à partir d’un fichier list
- 1.4 Reprendre un téléchargement
- 1.5 Limiter la vitesse de téléchargement
- 1.6 Effectuer une requête HTTP GET
- 1.7 Obtenir l’en-tête d’une URL
- 1.8 Inspecter tous les détails de la demande et de la réponse
- 1.9 Suivre les redirections
- 1.10 Faire un POST
- 1.11 Effectuer une requête HTTP POST en envoyant JSON
- 1.12 Changer le user agent
- 1.13 Enregistrer ou envoyer des cookies
- 1.14 Utilisation de l’authentification HTTP
- 1.15 Utiliser un proxy
- 1.16 Envoyer un fichier par FTP
- 2 Les principales options de la commande Curl
- 3 Liens
16 exemples d’utilisation de la commande Curl
Télécharger un fichier
Voici comment utiliser curl pour télécharger un fichier.
On utilise l’option -o pour spécifier le nom du fichier, on peut tout à fait spécifier un chemin complet.
curl –o monfichier.iso https://lesupersite.com/telecharger/fichier.iso
L’option -O donne la possibilité d’écrire la sortie dans un fichier local nommé comme le fichier distant que nous obtenons.
Le fichier sera enregistré dans le répertoire de travail actuel. Si vous voulez que le fichier soit enregistré dans un répertoire différent, assurez-vous de changer le répertoire de travail actuel avant d’appeler curl avec cette option.
curl -O https://lesupersite.com/telecharger/fichier.iso
Il existe beaucoup d’autres commandes sur Linux pour télécharger des fichiers depuis un terminal :
Télécharger plusieurs fichiers
Si vous spécifiez plusieurs URL de fichiers à télécharger, curl va les télécharger successivement.
Cela permet de télécharger plusieurs fichiers à la suite.
curl -O https://lesupersite.com/download/fichier.iso -O http://autresupersite.com/download/autrefichier.iso
Télécharger des fichiers à partir d’un fichier list
La commande xargs permet de parser un fichier contenant une liste d’URL pour télécharger chaque fichier avec curl.
Voici la syntaxe à utiliser :
xargs -n 1 curl -O < /tmp/liste-url.txt
On peut aussi le faire avec la boucle for comme ceci :
for url in `cat /tmp/liste-url.txt`; do curl $url ; done
Reprendre un téléchargement
Si un téléchargement a été interrompu pour une raison quelconque (par exemple, en utilisant Ctrl + c), vous pouvez reprendre le télécahrgement très facilement. L’utilisation de -C indique à curl de reprendre le téléchargement en commençant là où il s’était arrêté.
curl –c –o monfichier.iso https://lesupersite.com/telecharger/fichier.iso
Limiter la vitesse de téléchargement
L’option –limit-rate vous permet de limiter le taux de transfert de données.
La valeur peut être exprimée en octets, en kilo-octets avec le suffixe k, en mégaoctets avec le suffixe m et en gigaoctets avec le suffixe g.
Dans l’exemple suivant, curl téléchargera le binaire Go et limitera la vitesse de téléchargement à 1 Mo:
curl --limit-rate 1m -O https://www.malekal.com/superiso.iso
Effectuer une requête HTTP GET
Il suffit d’utiliser la commande sans aucune option spécifique comme ceci :
curl https://www.malekal.com
Obtenir l’en-tête d’une URL
Par défaut, les en-têtes de réponse sont masqués dans la sortie de curl. Pour les montrer, utilisez l’option -i:
curl -i https://www.malekal.com
Pour afficher seulement l’en-tête :
curl -I https://www.malekal.com
Inspecter tous les détails de la demande et de la réponse
Pour obtenir la réponse complète du serveur WEB avec son en-tête, utilisez l’option –verbose :
curl --verbose -I https://www.malekal.com
Suivre les redirections
Par défaut, lorque curl contacte un serveur WEB qui retourne un code 3XX ou un en-tête Location:, il ne suit pas ce dernier.
Pour forcer à suivre les redirections, vous devez utiliser l’option -L :
curl -L https://www.malekal.com
Faire un POST
L’option X vous permet de modifier la méthode HTTP utilisée. Par défaut, GET est utilisé, et c’est la même chose que l’écriture :
curl -X GET https://www.malekal.com
Vous pouvez effectuer une requête POST en passant des données URL encodées avec le paramètre -d.
Saisissez ensuite les données à envoyer via la méthode POST.
curl -d "option=valeur&champs=autrevaleur" -X POST https://www.malekal.com
Effectuer une requête HTTP POST en envoyant JSON
Au lieu de publier des données encodées en URL, comme dans l’exemple ci-dessus, vous souhaiterez peut-être envoyer du JSON.
Dans ce cas, vous devez définir explicitement l’en-tête Content-Type, en utilisant l’option -H :
curl -d '{"option": "value", "queqluechose": "autrevaleur"}' -H "Content-Type: application/json" -X POST https://www.malekal.com
Vous pouvez également envoyer un fichier JSON depuis votre disque:
curl -d "@my-file.json" -X POST https://www.malekal.com
Changer le user agent
L’agent utilisateur indique au serveur quel client exécute la demande. Par défaut, curl envoie l’agent utilisateur curl / , comme: curl / 7.54.0.
Vous pouvez spécifier un agent utilisateur différent à l’aide de l’option –user-agent ou -A :
curl --user-agent "Le user agent" https://www.malekal.com
Par exemple pour utiliser le user-agent de Google Chrome de Windows 7 :
curl -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" https://www.malekal.com
Vous souhaitez voir quels cookies sont téléchargés sur votre ordinateur lorsque vous naviguez sur https://www.malekal.com
Utilisez la commande suivante pour enregistrer le cookie dans monfichiercookie.txt.
Vous pouvez ensuite utiliser la commande cat pour afficher le fichier.
curl --cookie-jar monfichiercookie.txt https://www.malekal.com -O
Pour envoyer un cookie avec curl, vous devez créer ou récupérer le fichier cookie.
Ensuite, on utilise l’option –cookie ou -b pour le spécifier.
curl --cookie monfichiercookie.txt https://www.malekal.com
Utilisation de l’authentification HTTP
Si une ressource nécessite une authentification HTTP de base, vous pouvez utiliser l’option u pour transmettre les valeurs utilisateur: motdepasse :
curl -u utilisateur:motdepasse https://www.malekal.com
Utiliser un proxy
Voici comment se connecter derrière un serveur proxy avec curl.
Par exemple pour se cacher derrière un proxy écoutant sur le port 8080 à proxy.votredomaine.com :
curl -x proxy.votredomaine.com:8080 -U utilisateur:motdepasse -O https://www.malekal.com
- -x : pour spéficier l'(adresse du serveur proxy avec le port
- -U : pour s’authentifier sur le serveur proxy
Envoyer un fichier par FTP
Curl gère sans problème le protocole FTP.
Ainsi, il est possible d’envoyer un fichier par FTP :
- -u : pour spécifier les identifiants avec le couple utilisateur et mot de passe comme sous la forme utilisateur:motdepasse
- -T : le nom du fichier à uploader
Par exemple pour envoyer le fichier fichier.iso par FTP avec curl :
curl -u utilisateur:motdepasse -T fichier.iso ftp://yourftpserver
Les principales options de la commande Curl
Options | Descriptions |
-A, –user-agent | Spécifier un user-agent |
-b, –cookie | Transmettez les données au serveur HTTP dans l’en-tête Cookie. Ce sont supposément les données précédemment reçues du serveur dans une ligne “Set-Cookie:”. Les données doivent être au format “NAME1 = VALUE1; NAME2 = VALUE2”. |
–connect-timeout | Spécifier un timeout (délai de connexion) |
-C, –continue-at | Résumer un téléchargement |
-F, –form | Émuler un formulaire rempli dans lequel un utilisateur a appuyé sur le bouton d’envoi. |
-H, –headers | En-tête supplémentaire à inclure dans la requête lors de l’envoi de HTTP à un serveur. |
-i, –include | Incluez les en-têtes de réponse HTTP dans la sortie. Les en-têtes de réponse HTTP peuvent inclure des éléments tels que le nom du serveur, les cookies, la date du document, la version HTTP et plus encore … |
-I, –head | Récupérez uniquement les en-têtes! Les serveurs HTTP comportent la commande HEAD que celle-ci utilise pour n’obtenir que l’en-tête d’un document. Lorsqu’il est utilisé sur un fichier FTP ou FILE, curl affiche la taille du fichier et le dernier mod‐ temps de ification seulement. |
-L, –location | Suit l-en-tête Location et un code de réponse 3XX |
-X, –request | Spécifie une méthode de demande personnalisée à utiliser lors de la communication avec le serveur HTTP (POST, PUT, DELETE, …). |
-Y, –speed-limit | Arrête les transferts plus lentement que cela |
Liens
- SSH : comment ça marche
- Comment se connecter en SSH à un serveur distant
- Copier des fichiers ou répertoire dans un terminal sur Linux
- rsync : synchroniser, copier des fichiers à distance ou locaux
- Copier des fichiers ou répertoire dans un terminal sur Linux
- Mesurer le débit et lister les connexions réseaux
- Comment configurer une adresse IP sur Ubuntu
- Comment configurer le réseau sur Linux
- Comment changer la configuration des serveurs DNS sur Linux
- Comment changer la passerelle par défaut sur Linux
- Netstat sur Linux : utilisations et exemples
- Comment utiliser la commande ss sur Linux avec des exemples
- 15 commandes ifconfig pour configurer une interface réseau sous Linux
- 10 commandes “IP” utiles pour configurer les interfaces réseau sur Linux
- 6 outils pour tester la vitesse de la connexion internet sur Linux en ligne de commandes
- Nmap : exemples et utilisations
- TCPDump : capturer et analyser le trafic réseau sur Linux
- 25+ exemples de la commande Hping3
- iperf : tester la vitesse et bande passante entre deux hôtes
- Comment utiliser la commande traceroute sur Linux avec des exemples
- Comment utiliser wget avec 14 exemples
- 16 exemples de la commande CURL
- 6 commandes pour télécharger des fichiers en ligne de commandes sur Linux
- Les commandes Linux réseaux
- Unix socket : fonctionnement et utilisations
- Liste de toutes les commandes Linux