cURL ou Client URL est un outil développé pour récupérer des fichiers, s'interfacer avec des API et même tester des ressources web. Il est également disponible pour les systèmes d'exploitation Windows, Mac et Linux, ce qui permet à tout utilisateur de cURL de télécharger facilement des fichiers. Client URL convient au simple téléchargement de fichiers ainsi qu'à des tâches plus avancées impliquant la manipulation de données et même l'intégration de scripts.
Dans cet article, nous verrons comment télécharger des fichiers à l'aide de cURL, en abordant quelques commandes cURL utiles pour le téléchargement, la spécification de noms, de dossiers, et la gestion des redirections, des limitations de vitesse, et bien d'autres choses encore. Nous aborderons également les commandes spécifiques à cURL sur les systèmes Windows, Linux et Mac.
Il est essentiel de choisir le nom de fichier correct lors de l'enregistrement du document téléchargé. cURL n'enregistre pas les données mais les affiche sur le terminal. Par conséquent, si l'utilisateur ne choisit pas d'emplacement pour enregistrer le fichier, celui-ci ne sera pas trouvé dans le système de fichiers.
Toutes les commandes avec cURL sont effectuées sur la ligne de commande: en utilisant Windows - cmd ou PowerShell et Linux ou macOS - terminal.
Pour nommer manuellement les fichiers, l'utilisateur doit utiliser la commande "-o" ou, pour son format verbeux, "-output".
Prenons l'exemple suivant:
curl -o test.html https://example.com
Cette commande va chercher la page sur exemple.com et l'enregistrer sous test.html dans le répertoire de travail actuel.
Par défaut, cURL enregistre le fichier dans le même répertoire que le fichier exécutable, sauf indication contraire.
Comment utiliser cURL pour enregistrer un fichier en spécifiant le répertoire dans lequel le fichier doit être stocké:
curl -o ~/Downloads/test.html https://example.com
Cette option place le fichier dans le sous-dossier Téléchargements du répertoire personnel de l'utilisateur.
Dans cette configuration, si un fichier existe déjà, le nouveau fichier remplacera l'ancien sans avertissement. Pour contourner ce problème, il faut utiliser cURL -O afin que le fichier puisse être enregistré sous le nom fourni dans l'URL:
curl -O https://example.com/file.txt
Si le file.txt correspond à ce qui est indiqué dans l'URL, il sera automatiquement stocké sous ce nom. Si un tel fichier existe déjà, il sera remplacé.
Pour s'assurer qu'il n'y a pas de perte de données, il est possible de définir une demande de vérification avant le téléchargement:
if [ -f file.txt ]; then
echo "File already exists!"
else
curl -O https://example.com/file.txt
fi
This script first scans to see if the file is already present, only downloading the file if it is not.
Certains fichiers ne sont pas enregistrés dans des emplacements spécifiques, mais sont obtenus par le biais d'une redirection. Par exemple, un utilisateur de cURL qui tente de télécharger un fichier volumineux peut découvrir que le navigateur le dirige vers une autre page avant de commencer le téléchargement. cURL ne suit pas les redirections par défaut, mais cela peut être modifié.
Pour permettre à cURL de suivre automatiquement les redirections, ajoutez l'option -L:
curl -L -o test.zip https://example.com/download
Si le serveur redirige d'abord l'utilisateur, cURL effectuera d'abord la nouvelle demande et ce n'est qu'ensuite que le fichier sera téléchargé à partir de l'URL.
Pourquoi c'est important:
La méthode de cURL traite chaque redirection dans l'ordre, en suivant chaque lien qui mène à une autre URL dans l'ordre jusqu'à ce qu'il atteigne le lien cible. Si le serveur se retrouve coincé dans une boucle sans fin de redirections, il sera pris au piège. cURL dispose d'une commande qui peut être utilisée pour gérer le nombre de redirections, à savoir '--max-redirs'.
curl -L --max-redirs 5 -o file.zip https://example.com/download
Ce paramètre impose une restriction à cURL, qui interrompt le processus de téléchargement si un trop grand nombre de redirections sont traitées et dépassent la limite spécifiée.
Voici un exemple donné par cURL lorsque les limites de redirection sont dépassées:
curl: (47) Maximum redirection limit reached
En utilisant cURL, vous pouvez télécharger plusieurs fichiers simultanément, et certaines commandes fonctionneront sur plusieurs systèmes d'exploitation, tandis que d'autres seront spécifiques à Windows ou Linux/macOS.
curl -O https://example.com/file1.zip -O https://example.com/file2.zip
curl -O https://example.com/file{1,2,3}.zip
Get-Content urls.txt | ForEach-Object { curl -O $_ }
For ($i=1; $i -le 3; $i++) { curl -O "https://example.com/file$i.zip" }
Pour commencer, créez un fichier urls.txt contenant une liste de liens:
https://example.com/file1.zip
https://example.com/file2.zip
https://example.com/file3.zip
Exécutez ensuite la commande:
xargs -n 1 curl -O < urls.txt
Dans le cas où les fichiers sont numérotés, il est pratique d'utiliser pour:
for i in {1..5}; do
curl -O https://example.com/file$i.zip
done
Lorsqu'il est nécessaire de télécharger un fichier volumineux à l'aide de cURL et que l'on s'attend à un trafic à faible bande passante, l'option --limit-rate est disponible. Elle permet de fixer une limite à la vitesse de téléchargement en (k) kilo-octets par seconde, (m) méga-octets par seconde ou (g) giga-octets par seconde.
Pour les utilisateurs de cURL, la structure des commandes est la même sur tous les systèmes d'exploitation:
curl --limit-rate 500k -O https://example.com/archive.zip
Dans ce cas, 500k signifie que la vitesse de téléchargement ne doit pas dépasser 500 KB/s.
Autres notes:
Voici un exemple de script pour télécharger archive1.zip, archive2.zip et archive3.zip à une vitesse de téléchargement de 500 KB/s.
Windows (PowerShell):
1..3 | ForEach-Object { curl --limit-rate 500k -O https://example.com/archive$_.zip }
Linux/macOS (Bash):
for i in {1..3}; do
curl --limit-rate 500k -O https://example.com/archive$i.zip
done
L'option --limit-rate est efficace dans les conditions d'une connexion réseau soutenue, car elle réduit les risques d'interruption du réseau. Cela est utile lorsque plusieurs fichiers sont téléchargés en même temps, ou si d'autres activités sont effectuées sur le réseau. En outre, l'option --limit-rate permet de réduire les risques d'être bloqué par un serveur qui impose des restrictions aux téléchargements. Lorsque le téléchargement est effectué via un proxy, le paramètre permet de réduire la charge et de minimiser les risques de coupure. Cette commande permet également de gérer le trafic lors de l'utilisation de l'internet mobile ou de tarifs avec un volume de données limité.
Dans cURL, la progression d'un téléchargement, ainsi que sa vitesse, est affichée par défaut dans une fenêtre de terminal. C'est utile pour certains utilisateurs de cURL, mais cela peut être supprimé pour les scripts ou les processus automatisés. Dans ce cas, l'option -s ou --silent peut être activée.
Exemple d'utilisation de la ligne de commande cURL en mode "silencieux" pour télécharger des fichiers:
curl -s -O https://example.com/file.zip
Comme le suggère la commande, tous les fichiers doivent être téléchargés avec cURL sans qu'aucune information ne soit affichée à l'écran. S'il est nécessaire de n'afficher que les erreurs et de mettre tous les autres messages en sourdine, la commande -S (--show-error) peut être utilisée et combinée avec les arguments susmentionnés:
curl -s -S -O https://example.com/file.zip
Le téléchargement de certains fichiers et l'utilisation de certaines API nécessitent une autorisation. L'architecture de cURL prend en charge un grand nombre de procédures d'authentification telles que celles qui utilisent un nom d'utilisateur et un mot de passe, ou même des jetons d'accès.
Si l'accès nécessite un nom d'utilisateur et un mot de passe, ceux-ci peuvent être envoyés en tant qu'argument unique avec l'option -u:
curl -u username:password -O https://example.com/protected-file.zip
Si le mot de passe comporte des éléments spéciaux tels que @, #, &, etc., il est conseillé de le mettre entre guillemets:
curl -u username:"your@password#123" -O https://example.com/protected-file.zip
Si seul le nom d'utilisateur est envoyé, cURL demande le mot de passe.
Une autre méthode d'authentification au système d'un émetteur peut être réalisée à l'aide d'un jeton d'accès. Dans ce cas, le jeton est inclus dans l'en-tête de la requête avec le code suivant:
curl -H "Authorization: Bearer your_token_here" -O https://api.example.com/data.json
Certains services peuvent exiger que le jeton soit inclus directement dans l'URL. Dans ce cas, la commande ressemblera à ceci:
curl -O https://api.example.com/data.json?access_token=your_token_here
Dans tous les cas, l'insertion du jeton dans l'URL peut être problématique car le chemin d'accès de l'utilisateur peut être stocké dans l'historique du navigateur ou dans les journaux du serveur.
Ces méthodes d'authentification fonctionnent bien lorsqu'il s'agit de récupérer des données dans les fichiers d'un serveur protégé, de demander des données à des API ou d'accéder à des données au sein d'un environnement d'entreprise.
Les proxys sont particulièrement utiles pour cURL et son utilisation courante est l'accès à distance aux fichiers, car cURL prend en charge la transmission de données par le biais de la plupart des protocoles.
La définition d'un proxy se fait avec -x (ou -proxy).
La forme générale de la commande est la suivante:
curl -x [scheme://]proxy-server[:port] -o output.file URL
Exemple: téléchargement d'un fichier via un proxy HTTP:
curl -x http://proxy.testnet.com:80 -o file.zip https://example.com/archive.zip
Où:
Lorsqu'un nom d'utilisateur et un mot de passe sont requis pour les serveurs proxy, ils peuvent être utilisés comme suit:
curl -x http://proxy.example.com:80 -U user:password -o archive.zip https://example.com/archive.zip
Une approche différente: l'authentification via l'URL:
curl -x http://user:password@proxy.example.com:80 -o archive.zip https://example.com/archive.zip
Pour travailler avec SOCKS5 ou SOCKS4, définissez le paramètre --proxy avec le type, par exemple:
curl --proxy socks5h://proxy.example.com:1080 -o archive.zip https://example.com/archive.zip
Nuance importante:
Le proxy assure l'anonymat puisque l'adresse IP d'origine n'est pas accessible aux sites visités par l'utilisateur. En outre, les ressources bloquées dans certaines régions peuvent être contournées si l'on y accède depuis un autre pays. En utilisant un proxy pour télécharger des fichiers, les utilisateurs de réseaux d'entreprise peuvent accéder à des ressources fermées et améliorer les vitesses de chargement grâce aux restrictions imposées par le fournisseur ou à la mise en cache des données.
Il est conseillé de rester vigilant afin de superviser correctement le processus de téléchargement de fichiers à l'aide de cURL, en particulier lorsqu'il s'agit de fichiers volumineux. Pour ce faire, il est possible d'utiliser les fonctionnalités intégrées qui comprennent l'affichage de la progression, comme une barre de téléchargement interactive, ainsi que des informations détaillées sur les fichiers téléchargés.
L'option -# ou --progress-bar remplace l'indicateur de téléchargement en pourcentage par une barre mobile. Cette option est utile si l'on souhaite mesurer les performances du système sous une forme plus compacte et graphique.
curl -# -o file.zip https://example.com/file.zip
Une barre avec un indicateur de remplissage se déplace de gauche à droite:
Cette méthode est pratique si l'on souhaite suivre l'opération tout en limitant la quantité d'informations affichées.
Pour observer plus en détail la vitesse, le temps et la quantité de données téléchargées, il est possible d'utiliser conjointement les options -v et -w.
curl -v -o file.zip https://example.com/file.zip
curl -o file.zip -w "Download speed: %{speed_download} bits per second\n" https://example.com/file.zip
Cela permet de contrôler la vitesse de téléchargement tout au long du processus.
Dans les cas où la connexion est instable, la vitesse de téléchargement peut être évaluée de près. En cas d'obstruction, il y aura une baisse soudaine de la vitesse du processus ou une diminution totale. Lorsque la connexion est stable, la vitesse et les performances globales du réseau peuvent être contrôlées.
La commande cURL permet de récupérer une multitude d'informations qui peuvent aider à identifier des problèmes tels que les déconnexions, les ratifications, ou même les paramètres des codes de réponse HTTP qui peuvent être cruciaux pour diagnostiquer les erreurs. Pour ce faire, le drapeau -v sera utilisé pour activer le mode de sortie étendu.
Exemple:
curl -v -o file.zip https://example.com/archive.zip
La sortie ressemblera à ceci pendant l'exécution de la commande.
Vous remarquerez les données clés suivantes:
Les détails des requêtes et des réponses du serveur peuvent être visualisés avec cURL en utilisant l'option -v. Cela permet de savoir comment le client communique avec le serveur. Par exemple, dans le cas d'une redirection, si le serveur modifie l'emplacement vers une nouvelle URL, "-v" indiquera l'utilisation des commandes "status 301 Moved Permanently" ou "302 Found".
Cela permet également de vérifier les erreurs, telles que "403 Forbidden" ou "404 Not Found", qui font référence à un accès restreint et à l'absence de fichier. En outre, les en-têtes de réponse peuvent également être vérifiés pour analyser différents paramètres de fichiers avant le processus de téléchargement.
cURL et Wget sont les deux outils les plus importants pour le téléchargement de fichiers sur des interfaces de ligne de commande et cURL et Wget sont largement utilisés à cette fin, bien qu'ils diffèrent en termes de fonctionnalités.
Par ailleurs, examinons les principales distinctions entre eux.
Fonction | cURL | Wget |
---|---|---|
Prise en charge des téléchargements parallèles | Nécessite des commandes supplémentaires | Intégré |
Reprise automatique des téléchargements | Requiert l'indicateur -C | Intégré |
Fonctionne avec les API (envoi de requêtes POST, PUT et d'en-têtes) | Par défaut | Limitée |
Contourner les redirections | Avec l'option -L | Intégré |
Prise en charge du proxy | Par défaut | Par défaut |
Barre de progression intégrée | Besoins -# drapeau | Absent |
Fonctionnement en arrière-plan | Non pris en charge | Nécessite l'option -b |
Intégration dans les scripts | Oui (renvoie le code de réponse) | Limitée |
Wget et cURL présentent également des différences dans la syntaxe des commandes:
Wget semble avoir été créé principalement pour télécharger des fichiers, tandis que cURL a été conçu pour interagir avec les requêtes HTTP et les API.
En termes de protocoles pris en charge, Wget est désavantagé par rapport à cURL à bien des égards.
En effet, cURL est admirable pour sa prise en charge d'une multitude de protocoles, de conventions de dénomination de fichiers, d'utilisation de proxy et pour sa capacité à reprendre des téléchargements interrompus.
cURL est adapté non seulement aux téléchargements simples, mais aussi à l'intégration avec des API ou à l'extraction massive de données. Cependant, sa capacité à rediriger, à fixer des limites de vitesse, à authentifier et à suivre l'interaction avec le serveur, à permettre le diagnostic de la connexion au serveur et à tester les ressources web en fait un excellent outil polyvalent. Et grâce à la souplesse de personnalisation des paramètres, cURL peut être adapté à n'importe quelle tâche.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commentaires: 0