Si vous suivez les instructions d’installation axées sur les terminaux pour les applications Linux depuis un certain temps, vous avez probablement rencontré le curl
commande à un moment ou à un autre. cURL est un outil en ligne de commande pour transférer des données avec des URL. L’une des utilisations les plus simples est de télécharger un fichier via la ligne de commande. C’est cependant trompeur, car cURL est un outil incroyablement puissant qui peut faire bien plus.
Qu’est-ce que cURL ?
Initialement écrit par Daniel Sternberg en 1996 pour récupérer les données financières des serveurs Web et les diffuser sur les canaux IRC, cURL a évolué pour devenir un outil puissant pour obtenir des données sans avoir à utiliser un navigateur. Si vous utilisez toujours le terminal, ce sera l’un des outils les plus importants de votre arsenal.
Dans la plupart des distributions Linux, cURL est préinstallé dans le système et vous pouvez l’utiliser immédiatement. Même s’il n’est pas installé, il se trouve également dans la plupart des référentiels, vous pouvez donc l’installer facilement à l’aide du Centre logiciel.
Pour Windows, il n’a pas de commande “curl-like”, et macOS a cURL préinstallé mais n’offre pas autant de drapeaux comme la version Linux.
Installation
Avant d’aller plus loin, nous devons nous assurer que cURL est déjà installé sur notre système.
Linux
Dans les distributions basées sur Debian/Ubuntu, utilisez la commande suivante pour installer cURL :
sudo apt install curl
Dans les distributions basées sur Arch :
sudo pacman -S curl
Dans Fedora/CentOS/RHEL :
sudo dnf install curl
macOS
Pour macOS, il est déjà préinstallé, vous n’avez donc rien à faire.
les fenêtres
- Pour Windows 7/10/11, rendez-vous sur le page de téléchargement de cURL et choisissez parmi les packages 64 bits ou 32 bits, selon l’architecture que vous exécutez. Si vous ne connaissez pas votre architecture, le 64 bits est une valeur sûre, car la grande majorité du matériel fabriqué après 2006 est dessus.
- Créez un dossier directement sur le lecteur système ou dans “C:Program Files” et appelez-le “cURL”.
- Revenez au fichier zip que vous avez téléchargé, ouvrez-le et recherchez “curl.exe” dans le dossier “bin”. Copiez-le dans le dossier cURL que vous avez créé. L’EXE que vous avez copié est complètement autonome et capable d’exécuter toutes les permutations que vous pouvez exécuter sur Linux.
- Pour rendre cette commande réellement utile, nous devons l’ajouter à la variable PATH dans Windows afin qu’elle puisse s’exécuter à partir de l’invite de commande n’importe où.
- Cliquez sur votre menu Démarrer, tapez
environment
, et appuyez sur Entrer. - Cliquez sur « Variables d’environnement… » Vous devriez maintenant être dans les paramètres de vos variables d’environnement.

- Sélectionnez la variable d’environnement « Chemin », puis cliquez sur « Modifier … »
- Une fois dans la fenêtre de dialogue d’édition de chemin, cliquez sur “Nouveau” et tapez le répertoire où se trouve votre “curl.exe” – par exemple, “C:Program FilescURL”.

- Cliquez sur « OK » dans les fenêtres de dialogue que vous avez ouvertes au cours de ce processus et profitez d’avoir cURL dans votre terminal !
Chaque indicateur dans cURL qui est utilisable sous Linux devrait fonctionner dans la version Windows.
Parole au sage : rappelez-vous que l’invite de commande ne doit jamais être confondue avec le terminal Windows. Le terminal Windows est livré avec sa propre version de cURL incluse dans PowerShell qui offre des fonctionnalités similaires mais fonctionne de manière totalement différente.
Utiliser cURL
Pour commencer, tapez simplement curl maketecheasier.com
dans votre terminal et appuyez sur Entrer.
Si vous n’obtenez aucune sortie, c’est parce que le serveur de ce site n’est pas configuré pour répondre aux demandes de connexion aléatoires vers son domaine non-www. Si vous avez interrogé un serveur qui n’existe pas ou n’est pas en ligne, vous obtiendrez un message d’erreur indiquant que cURL n’a pas pu résoudre l’hôte.

Pour que cURL fasse quelque chose de réellement utile, nous devrons spécifier un protocole. Dans notre exemple, nous utilisons le protocole HTTPS pour interroger la page d’accueil de ce site. Taper curl https://www.maketecheasier.com
.

Si tout se passe bien, vous devriez être en train de regarder un gigantesque mur de données. Pour rendre ces données un peu plus utilisables, nous pouvons dire à cURL de les mettre dans un fichier HTML :
curl https://www.maketecheasier.com > ~/Downloads/mte.html

Cette commande place le contenu de la sortie de notre site dans un fichier HTML dans votre dossier Téléchargements. Accédez au dossier avec votre gestionnaire de fichiers préféré et double-cliquez sur le fichier que vous venez de créer. Il devrait ouvrir un instantané de la sortie HTML de la page d’accueil de ce site.

De même, vous pouvez utiliser le -o
flag pour obtenir le même résultat :
curl -o ~/Downloads/mte.html https://www.maketecheasier.com
Suivre les redirections
La plupart des sites redirigent automatiquement le trafic du protocole « http » vers « https ». Dans cURL, vous pouvez obtenir la même chose avec le -L
drapeau. Cela suivra automatiquement les redirections 301 jusqu’à ce qu’il atteigne une page ou un fichier lisible.
curl -L http://google.com.

Reprendre un téléchargement
Lors du téléchargement de fichiers volumineux, en fonction de votre vitesse Internet, les interruptions peuvent être extrêmement irritantes. Heureusement, cURL a une fonction de reprise. Passer le -C
flag s’occupera de ce problème en un tournemain.
Pour montrer un exemple concret, j’ai volontairement interrompu un téléchargement de la version de test ISO de Debian en appuyant sur Ctrl et C en train de le saisir.

Pour notre prochaine commande, attachez le -C
drapeau. Par exemple,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso

Le téléchargement a démarré avec succès là où il s’était arrêté.
Téléchargement de plusieurs fichiers
Parce que cURL n’a pas le moyen le plus intuitif de télécharger plusieurs fichiers, il existe deux méthodes, chacune avec son propre compromis.
Si les fichiers que vous téléchargez sont énumérés (par exemple, fichier1, fichier2, etc.), vous pouvez utiliser des crochets pour obtenir la gamme complète de fichiers et « # » dans la sortie que vous spécifiez avec le -o
drapeau. Pour rendre cela un peu moins confus, voici un exemple :
curl "http://example.com/file[1-5].zip" -o "#1_#2"
Une façon plus simple de le faire est avec -O
(--remote-name
). Ce drapeau permet à cURL de télécharger le fichier distant sur un fichier local du même nom. Comme vous n’avez pas besoin de spécifier de sortie, vous devez utiliser cette commande lorsque le terminal est ouvert dans le répertoire dans lequel vous souhaitez télécharger les fichiers.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"
Si vous avez une grande quantité de fichiers énumérés à télécharger, --remote-name-all
est un meilleur indicateur pour cela :
curl --remote-name-all "https://example.com/file[1-5].zip"
Vous pouvez même spécifier des fichiers non énumérés provenant du même site sans avoir à retaper l’URL à l’aide de crochets :
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"
Téléchargement avec authentification
Téléchargez des fichiers qui nécessitent une authentification (par exemple, lors de la récupération à partir d’un serveur FTP privé) avec le -u
drapeau. Chaque demande d’authentification doit être effectuée avec le nom d’utilisateur en premier et le mot de passe en second, avec deux points séparant les deux. Voici un exemple pour simplifier les choses :
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip
Cela authentifiera notre ami bonobo_bob sur le serveur FTP et téléchargera le fichier dans le dossier Téléchargements.
Fractionnement et fusion de fichiers
Si, pour une raison quelconque, vous souhaitez télécharger un fichier volumineux et le diviser en morceaux, vous pouvez le faire avec cURL’s --range
drapeau. Avec --range
, vous devez spécifier l’octet par lequel vous souhaitez commencer jusqu’à celui auquel vous souhaitez terminer. Si vous ne spécifiez pas de fin de plage, il ne fera que télécharger le reste du fichier.
Dans la commande ci-dessous, cURL téléchargera les 100 premiers Mo de l’image d’installation d’Arch Linux :
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
Pour les 100 Mo suivants, utilisez --range 100000000-199999999
, etc. Vous pouvez enchaîner ces commandes en utilisant le &&
opérande :
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso
Si vous avez suivi la structure de commande ci-dessus à la lettre, huit fichiers devraient apparaître là où vous avez demandé à cURL de les télécharger.

Pour réunir ces fichiers, vous devrez utiliser le cat
commande si vous êtes sous Linux ou macOS comme ceci :
cat arch.part? > arch.iso
Pour Windows, vous devrez utiliser le copy
commande comme ceci :
copy /b arch.part* arch.iso
Autres fonctionnalités utiles
Il existe de nombreux indicateurs et utilisations pour cURL :
-#
– Utilise une barre de progression pour indiquer à quel point vous en êtes dans ce que vous saisissez. Exemple:curl -# https://asite.com/somefile.zip > ~/somefile.zip
.-a
– Demande à cURL d’ajouter à un fichier plutôt que de l’écraser. Exemple:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x
.--head
– Ne saisit que l’en-tête de réponse du serveur sans les données de sortie. Ceci est utile lorsque vous déboguez un site Web ou que vous jetez un œil aux réponses programmées du serveur aux clients. Exemple:curl --head https://example-url.com
.--limit-rate
– Commande un téléchargement avec une bande passante limitée. C’est utile dans les situations où vous ne voulez pas que cURL monopolise toute la bande passante disponible dans votre système. Un nombre simple sera interprété en octets par seconde. K représente les kilo-octets par seconde ; M représente des mégaoctets par seconde. Exemple:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip
.-o
– Comme mentionné précédemment, détermine un fichier de sortie à utiliser par cURL. Exemple:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip
.--proxy
– Si vous voulez travailler avec un proxy, c’est la façon de le faire. Exemple:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip
.
cURL contre Wget
Tous deux sortis la même année (1996), cURL et Wget sont à peu près des programmes frères de l’observateur occasionnel. Plongez un peu plus profondément, cependant, et vous pouvez voir que ces deux sœurs ont des objectifs différents.
Wget
- Il est entièrement conçu pour récupérer des données sur Internet.
- N’a pas besoin du
-L
ou-o
des indicateurs comme cURL ; il suffit de taperwget [url]
et aller! - Peut télécharger de manière récursive pour tout récupérer dans un répertoire avec le
-r
drapeau. - Possède toutes les fonctions dont un utilisateur a besoin pour une utilisation quotidienne et répond aux tâches quotidiennes d’administration système.
- (Sous Linux) N’a pas besoin de beaucoup de dépendances ; tous devraient être disponibles hors de la boîte.
boucle
- Répertoire étendu d’indicateurs et de fonctions utiles pour la récupération à distance.
- Prend en charge les réseaux locaux (LDAP) et les imprimantes réseau (Samba).
- Fonctionne bien avec les bibliothèques de compression gzip.
- Dépend de libcurl, qui permet aux développeurs d’écrire des logiciels ou des scripts bash qui incluent la fonctionnalité de cURL.
En bref, Wget est la « boîte à outils de tout le monde » pour récupérer des éléments sur Internet, tandis que cURL étend cela avec un contrôle plus granulaire pour les utilisateurs expérimentés et les administrateurs système.
Questions fréquemment posées
1. J’ai une erreur de certificat sous Linux. Comment je le répare?
Si vous obtenez une erreur qui dit quelque chose comme « l’émetteur du certificat de l’homologue a été marqué comme non approuvé », le moyen le plus simple de résoudre ce problème consiste à réinstaller le package de certificats communs dans votre distribution.
Pour les systèmes basés sur Debian/Ubuntu :
sudo apt reinstall ca-certificates
Pour Fedora/CentOS/RHEL :
dnf reinstall ca-certificates
Pour les systèmes basés sur Arch :
pacman -S ca-certificates
Notez que dans Arch, vous souhaiterez peut-être vider le cache de vos packages en utilisant pacman -Scc
avant de réinstaller le package de certificats.
Si vous obtenez toujours cette erreur, il se peut qu’il y ait un problème du côté du serveur.
2. Est-il sûr d’exécuter les commandes cURL et bash ensemble ?
Bien qu’il ne s’agisse pas du moyen le plus courant d’installer des applications Linux, il existe un certain nombre de développeurs (comme les personnes derrière NodeJS) qui ne vous donnent pas d’autre choix que d’utiliser curl
à côté d’une commande d’accès racine qui passe par bash (par exemple, curl [argument] | sudo -E bash -
) pour installer le logiciel.
Cela peut sembler un peu effrayant, mais si les personnes derrière l’application sont dignes de confiance, il est très peu probable que vous cassiez quelque chose. Les acteurs malveillants sont partout et peuvent infiltrer des référentiels comme Arch’s AUR, donc l’installation en utilisant curl
en combinaison avec des commandes d’accès root n’est généralement pas plus dangereux que de le faire via votre gestionnaire de packages.
3. Puis-je utiliser cURL avec Tor ?
Oui! Démarrez le navigateur Tor (ou un service tor autonome) et utilisez le --proxy
drapeau. Tor vous donne un proxy local que vous pouvez utiliser pour masquer votre IP dans d’autres applications. Voici un exemple de cURL utilisé avec Tor :
curl --proxy localhost:9050 http://example.com
Les services Tor autonomes utiliseront 9050 comme port d’écoute, tandis que le navigateur Tor utilisera le port 9150.
Emballer
cURL a fait ses preuves dans le tissu changeant du monde Linux, gardant sa position d’outil important dans l’arsenal de l’utilisateur de terminal.
Si vous êtes nouveau sur la ligne de commande, découvrez certaines des commandes Linux les plus utiles. Si vous souhaitez simplement rechercher sur le Web au lieu de télécharger des données à partir d’Internet, vous pouvez également naviguer sur le terminal.