Comment utiliser cURL pour le transfert de données en ligne de commande et plus

Si vous avez suivi des instructions d’installation axées sur le terminal pour des applications Linux pendant un certain temps, vous êtes probablement tombé sur la commande curl à un moment ou un autre. cURL est un outil en ligne de commande pour transférer des données via des URL. L’une des utilisations les plus simples est de télécharger un fichier via la ligne de commande. Cela peut être trompeur, car cURL est un outil extrêmement puissant qui peut faire beaucoup plus.
Table des matières
- Qu’est-ce que cURL ?
- Installation
- Utilisation de cURL
- Suivre les redirections
- Reprendre un téléchargement
- Télécharger plus d’un fichier
- Télécharger avec authentification
- Diviser et fusionner des fichiers
- Autres fonctionnalités utiles
- cURL vs. Wget
- Questions fréquentes
- Conclusion
À lire également : Comment copier et coller du texte, des fichiers et des dossiers dans le terminal Linux
Qu’est-ce que cURL ?
Écrit à l’origine par Daniel Sternberg en 1996 pour récupérer des données financières à partir de serveurs web et les diffuser sur des canaux IRC, cURL a évolué pour devenir un outil puissant pour obtenir des données sans avoir besoin d’utiliser un navigateur. Si vous utilisez toujours le terminal, cela 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 dans la plupart des dépôts, vous pouvez donc facilement l’installer en utilisant le Centre logiciel.
Pour Windows, il n’a pas de commande “comme curl”, et macOS a cURL préinstallé mais n’offre pas autant de drapeaux que la version Linux.
À lire également : Comment utiliser la commande dd dans Linux
Installation
Avant de poursuivre, 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 curlDans les distributions basées sur Arch :
sudo pacman -S curlDans Fedora/CentOS/RHEL :
sudo dnf install curlmacOS
Pour macOS, il est déjà préinstallé, donc vous n’avez rien besoin de faire.
À lire également : Comment lancer le terminal dans le dossier actuel sur Mac
Windows
- Pour Windows 7/10/11, rendez-vous sur la page de téléchargement de cURL et choisissez soit le paquet 64 bits soit 32 bits, selon l’architecture que vous utilisez. Si vous ne connaissez pas votre architecture, 64 bits est un choix sûr, car la grande majorité du matériel fabriqué après 2006 est en 64 bits.
- Créez un dossier directement sur le disque système ou dans “C:\Program Files\” et nommez-le “cURL.”

- Retournez au fichier zip que vous avez téléchargé, ouvrez-le et trouvez “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 depuis l’invite de commande partout.
- Cliquez sur votre menu Démarrer, tapez
environment, et appuyez sur Entrée. - Cliquez sur “Variables d’environnement … “ Vous devez maintenant être dans vos paramètres de variables d’environnement.

Sélectionnez la variable d’environnement “Path”, 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 “curl.exe” – par exemple, “C:\Program Files\cURL”.
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 drapeau de cURL utilisable sous Linux devrait fonctionner dans la version Windows.
Conseil avisé : n’oubliez pas que l’invite de commande ne doit jamais être confondue avec Windows Terminal. Windows Terminal est livré avec sa propre version de cURL incluse dans PowerShell qui offre une fonctionnalité similaire mais fonctionne de manière totalement différente.
À lire également : Comment utiliser la commande Rm dans Linux
Utiliser cURL
Pour commencer, tapez simplement curl maketecheasier.com dans votre terminal et appuyez sur Entrée.
Si vous ne recevez aucune sortie, c’est parce que le serveur de ce site n’est pas configuré pour répondre à des demandes de connexion aléatoires à son domaine non-www. Si vous interrogez un serveur qui n’existe pas ou qui 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. Tapez curl https://www.maketecheasier.com.

Si tout se passe bien, vous devriez voir un énorme mur de données. Pour rendre ces données un peu plus utilisables, nous pouvons demander à cURL de les mettre dans un fichier HTML :
curl https://www.maketecheasier.com > ~/Downloads/mte.htmlCette commande place le contenu de la sortie de notre site dans un fichier HTML dans votre dossier de 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 aperçu de la sortie HTML de la page d’accueil de ce site.
De même, vous pouvez utiliser le drapeau -o pour obtenir le même résultat :
curl -o ~/Downloads/mte.html https://www.maketecheasier.comSuivre les redirections
La plupart des sites redirigent automatiquement le trafic du protocole “http” vers le protocole “https”. Dans cURL, vous pouvez obtenir le même résultat avec le drapeau -L. 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 immensément irritantes. Heureusement, cURL a une fonction de reprise. Passer le drapeau -C résoudra ce problème rapidement.
Pour montrer un exemple réel, j’ai interrompu un téléchargement de l’ISO de la version de test de Debian en appuyant délibérément sur Ctrl et C au milieu du téléchargement.

Pour notre prochaine commande, nous ajoutons le drapeau -C. 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 commencé avec succès là où il s’était arrêté.
Télécharger plus d’un fichier
Parce que cURL n’a pas la méthode la plus intuitive pour télécharger plusieurs fichiers, il y a deux méthodes, chacune avec son propre compromis.
Si les fichiers que vous téléchargez sont numérotés (par exemple, fichier1, fichier2, etc.), vous pouvez utiliser des crochets pour obtenir la plage complète de fichiers et “#” dans la sortie que vous spécifiez avec le drapeau -o. Pour rendre cela un peu moins déroutant, voici un exemple :
curl "http://example.com/file[1-5].zip"-o"#1_#2"Une façon plus simple de faire cela est d’utiliser -O ( --remote-name). Ce drapeau permet à cURL de télécharger le fichier distant dans un fichier local portant le même nom. Comme vous n’avez pas à spécifier une sortie, vous devriez utiliser cette commande lorsque le terminal est ouvert dans le répertoire où vous souhaitez télécharger des fichiers.
curl -O"https://example.com/file1.zip"-O"https://example.com/file2.zip"Si vous avez un grand nombre de fichiers numérotés à télécharger, --remote-name-all est un meilleur drapeau pour cela :
curl --remote-name-all"https://example.com/file[1-5].zip"Vous pouvez même spécifier des fichiers non numérotés provenant du même site sans avoir à retaper l’URL en utilisant des crochets :
curl --remote-name-all"https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"Télécharger avec authentification
Téléchargez des fichiers qui nécessitent une authentification (par exemple, lorsque vous téléchargez depuis un serveur FTP privé) avec le drapeau -u. Chaque demande d’authentification doit être faite avec le nom d’utilisateur en premier et le mot de passe en second, séparés par deux-points. Voici un exemple pour simplifier les choses :
curl -u nom_utilisateur:mot_de_passe -o ~/Downloads/file.zip ftp://example.com/file.zipCela authentifiera notre ami bonobo_bob sur le serveur FTP et téléchargera le fichier dans le dossier de téléchargements.
Diviser et fusionner des fichiers
Si pour une raison quelconque vous souhaitez télécharger un fichier volumineux et le diviser en morceaux, vous pouvez le faire avec le drapeau --range de cURL. Avec --range, vous devez spécifier le byte à partir duquel vous souhaitez commencer jusqu’à celui où vous souhaitez finir. Si vous ne spécifiez pas de fin à la plage, il téléchargera simplement 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 --range0-99999999-o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.isoPour les 100 Mo suivants, utilisez --range 100000000-199999999, etc. Vous pouvez enchaîner ces commandes en utilisant l’opérande && :
curl --range0-99999999-o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range100000000-199999999-o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range200000000-299999999-o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range300000000-399999999-o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range400000000-499999999-o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range500000000-599999999-o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range600000000-699999999-o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.isoSi 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 la commande cat si vous êtes sur Linux ou macOS comme ceci :
cat arch.part? > arch.isoPour Windows, vous devrez utiliser la commande copy comme ceci :
copy/b arch.part* arch.isoAutres fonctionnalités utiles
Il existe de nombreux drapeaux et utilisations pour cURL :
-#– Utilise une barre de progression pour indiquer où vous en êtes dans ce que vous téléchargez. Exemple :curl -# https://asite.com/somefile.zip > ~/somefile.zip.-a– Demande à cURL d’ajouter à un fichier plutôt que de le remplacer. Exemple :curl -ao ~/collab-full.x https://example-url.com/collab-part26.x.--head– Récupère uniquement 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– Ordre d’un téléchargement avec une bande passante limitée. Il est utile dans les situations où vous ne voulez pas que cURL monopolise toute la bande passante disponible sur votre système. Un simple nombre sera interprété comme des octets par seconde. K représente des kilooctets 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é plus haut, détermine un fichier de sortie que cURL doit utiliser. Exemple :curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip.--proxy– Si vous souhaitez travailler avec un proxy, c’est la méthode à suivre. Exemple :curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip.
cURL vs. Wget
Tous deux publiés la même année (1996), cURL et Wget sont à peu près des programmes sœurs pour l’observateur occasionnel. Plongez un peu plus profondément, cependant, et vous pourrez voir que ces deux sœurs ont des objectifs différents.
Wget
- Il est entièrement construit depuis le début pour récupérer des données d’Internet.
- N’a pas besoin des drapeaux
-Lou-ocomme cURL ; tapez simplementwget [url]et c’est parti ! - Peut télécharger de manière récursive pour récupérer tout ce qui se trouve dans un répertoire avec le drapeau
-r. - A toutes les fonctions dont un utilisateur a besoin pour un usage quotidien et s’adresse aux tâches courantes d’administrateur système.
- (Sous Linux) N’a pas besoin de nombreuses dépendances ; toutes devraient être disponibles d’emblée.
À lire également : Comment installer et utiliser wget sur Mac
cURL
- Répertoire extensif de drapeaux et de fonctions utiles pour la récupération à distance.
- Prend en charge la mise en réseau locale (LDAP) et les imprimantes réseau (Samba).
- Fonctionne bien avec les bibliothèques de compression gzip.
- Dépend de libcurl, ce 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 choses sur Internet, tandis que cURL développe cela avec un contrôle plus granulaire pour les utilisateurs avancés et les administrateurs système.
Questions fréquentes
1. J’ai reçu une erreur de certificat sous Linux. Comment puis-je le réparer ?
Si vous avez reçu une erreur disant quelque chose comme “l’émetteur du certificat de l’homologue a été marqué comme non fiable”, le moyen le plus simple de corriger cela est de réinstaller le paquet de certificats communs dans votre distribution.
Pour les systèmes basés sur Debian/Ubuntu :
sudo apt reinstall ca-certificatesPour Fedora/CentOS/RHEL :
dnf reinstall ca-certificatesPour les systèmes basés sur Arch :
pacman -S ca-certificatesNotez qu’avec Arch, vous pouvez vouloir vider votre cache de paquets en utilisant pacman -Scc avant de réinstaller le paquet de certificats.
Si vous obtenez toujours cette erreur, il peut y avoir quelque chose qui ne va pas du côté du serveur.
2. Est-il sûr d’exécuter des commandes cURL et bash ensemble ?
Bien que ce ne soit pas la manière la plus courante d’installer des applications Linux, il y a un certain nombre de développeurs (comme ceux derrière NodeJS) qui vous obligent à utiliser curl avec une commande d’accès root qui s’exécute via 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 de confiance, il est très probable que vous ne causiez pas de problèmes. Les acteurs malveillants sont partout et peuvent infiltrer des dépôts comme l’AUR d’Arch, donc l’installation en utilisant curl en combinaison avec des commandes d’accès root n’est généralement pas plus unsafe que de le faire via votre gestionnaire de paquets.
3. Puis-je utiliser cURL avec Tor ?
Oui ! Démarrez Tor Browser (ou un service Tor autonome) et utilisez le drapeau --proxy. Tor vous fournit 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.comLes services Tor autonomes utiliseront 9050 comme port d’écoute, tandis que Tor Browser utilise le port 9150.
Conclusion
cURL a prouvé sa résilience au milieu du tissu changeant du monde Linux, conservant sa position en tant qu’outil important dans l’arsenal de l’utilisateur de terminal.
Si vous êtes nouveau dans la ligne de commande, consultez certaines des commandes Linux les plus utiles. Si vous souhaitez simplement naviguer sur le Web au lieu de télécharger des données sur Internet, vous pouvez également naviguer dans le terminal.