Utilisation de curl
et wget
pour télécharger des fichiers
1. Introduction à curl
Tu as déjà été dans une situation où, lors d’un entretien, on te demande de télécharger un fichier depuis Internet via le terminal, et tu regardes l’écran d’un air hésitant, réalisant que tu as oublié comment faire ? Aujourd’hui, on va apprendre à utiliser curl
et wget
, qui deviendront tes compagnons fidèles pour travailler avec les données réseau.
Ces outils te permettent de télécharger des pages web, de récupérer des fichiers, d’envoyer des requêtes HTTP, de bosser avec des API et même d’automatiser des scripts. On va explorer leur fonctionnement, leurs avantages et leurs usages typiques.
curl
— c’est un outil de ligne de commande pour transférer des données via des protocoles réseau. La vraie puissance de curl
, c’est sa flexibilité : il supporte plus de 20 protocoles (HTTP, HTTPS, FTP, SCP et même SMTP). Selon les développeurs, c’est un excellent "couteau suisse" pour bosser avec Internet.
Syntaxe de base de curl
curl [options] URL
En gros, tu tapes la commande curl
, tu précises l’adresse nécessaire — et voilà le résultat sous tes yeux. Allez, décomposons ça pour comprendre comment ça marche.
Télécharger une page web
Disons que tu veux télécharger la page d’accueil de Google. Tu fais ça comme suit :
curl http://www.google.com
Sur l’écran, tu verras le code HTML de la page. Plutôt pratique si tu veux explorer la structure d’un site ou automatiser quelque chose en rapport avec lui.
Sauvegarde du contenu dans un fichier
Si tout ce flux textuel te dérange, tu peux enregistrer le résultat dans un fichier :
curl -o google.html http://www.google.com
Le flag -o
(output) dit à curl
qu’on veut rediriger la sortie dans un fichier. Maintenant, le code HTML de la page est sauvegardé dans google.html
. Veux-tu rire ? Donne ce fichier à un ami en disant que tu as "téléchargé tout Internet".
Télécharger un fichier
Imagine que tu dois télécharger un fichier depuis Internet (genre un .zip
). Là-dessus, curl
est super fort :
curl -O http://example.com/file.zip
Différent de -o
, le flag -O
sauvegarde le fichier avec son nom d’origine, indiqué dans l’URL. C’est utile si tu télécharges beaucoup de fichiers depuis une même source.
Authentification HTTP
Parfois, l’accès à un fichier ou un ressource API est protégé par un login et un mot de passe. Dans ce cas, utilise curl
avec le flag -u
:
curl -u username:password http://example.com/private-data
C’est particulièrement utile pour bosser avec des API privées, comme GitHub ou Docker Registry.
Téléchargement via API
Une des fonctionnalités les plus cool de curl
— bosser avec des API. Disons que tu dois envoyer une requête à un serveur qui retourne des données au format JSON :
curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"
Ici, le flag -X
indique la méthode de requête HTTP (GET, POST, DELETE, etc.). Pour automatiser l’intégration avec des services externes, c’est juste top.
2. Qu'est-ce que wget
?
Si curl
est un couteau suisse, alors wget
est un bulldozer. Sa tâche principale est de télécharger des fichiers. La principale différence avec curl
, c'est que wget
est spécialement conçu pour le téléchargement fiable de gros fichiers et prend en charge la reprise de téléchargement, ce qui est super pratique avec une connexion instable.
Syntaxe de base de wget
wget [options] URL
Télécharger un fichier simple
wget http://example.com/file.zip
Cette commande téléchargera le fichier et le sauvegardera avec son nom original dans le répertoire actuel. Simple et efficace.
Sauvegarder avec un autre nom
Si vous n'aimez pas le nom original du fichier, vous pouvez en définir un autre :
wget -O newfile.zip http://example.com/file.zip
Reprise de téléchargement
Supposons que vous téléchargiez un gros fichier et que la connexion soit coupée. Pas de souci : utilisez simplement l'option -c
(continue) :
wget -c http://example.com/largefile.iso
wget
reprendra le téléchargement là où il s'est arrêté. Cela fonctionne même après plusieurs jours, si le serveur prend en charge ce mode.
Télécharger un site entier
Oui, avec wget
, vous pouvez télécharger un site entier (ou une copie). Utilisez simplement l'option --mirror
:
wget --mirror http://example.com
Cette commande téléchargera le site en conservant la structure des répertoires. Maintenant, vous avez un "miroir" du site pour une utilisation hors ligne.
3. Comparaison entre curl
et wget
Fonction | curl | wget |
---|---|---|
Support d'un grand nombre de protocoles | Oui | Seulement HTTP/HTTPS et FTP |
Reprise automatique du téléchargement | Non (peut être scripté) | Oui |
Travail avec les API | Oui | Non |
Facilité de gestion des fichiers | Moyenne | Excellente |
Téléchargement de sites entiers | Non | Oui |
En gros, si t'as besoin de bosser avec des API ou des trucs spécifiques, utilise curl
. Mais si ton but est de télécharger des fichiers, wget
sera le meilleur choix.
4. Application pratique
Téléchargement et traitement d'un fichier
On combine wget
et nos compétences en manipulation de texte :
wget -O data.txt http://example.com/data.txt
cat data.txt | grep "mot-clé" | awk '{print $2, $4}'
Ici, on a téléchargé un fichier, filtré les lignes par mot-clé et extrait les colonnes nécessaires.
Travailler avec une API
On télécharge les taux de change avec curl
et on cherche la devise nécessaire :
curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"
C'est utile si tu veux construire un système automatisé de conversion de devises.
Automatisation des mises à jour
Imagine que tu dois télécharger une mise à jour de fichier tous les jours. Voici un exemple de script simple :
#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates
On sauvegarde le script et on l’ajoute dans cron
. Maintenant, il sera exécuté automatiquement — chouette, non ?
5. Erreurs typiques et particularités
Erreur 403 (Forbidden) :
Ça arrive si le serveur demande des headers supplémentaires (par ex., User-Agent). Pour corriger :
curl -A "Mozilla/5.0" http://example.com
Redirections :
Si le serveur te renvoie vers une autre URL, ajoute le flag -L
dans curl
:
curl -L http://example.com
Erreurs SSL :
Parfois, wget
ou curl
peuvent râler à propos du SSL. Tu peux désactiver la vérification du certificat (mais c’est pas secure !) :
wget --no-check-certificate https://example.com
curl -k https://example.com
Avec cet arsenal puissant, tu es prêt à conquérir le web depuis ton terminal. Plus aucun fichier ou API ne pourra t’échapper — il est temps de télécharger, traiter et automatiser !
GO TO FULL VERSION