Dans ce guide, nous allons aborder les points suivants :
- La syntaxe de base du fichier de téléchargement avec cURL
- Comment gérer des scénarios plus complexes lors du téléchargement de fichiers avec cURL
- Comment télécharger plusieurs fichiers à la fois
- Des pratiques conseillées pour une utilisaton efficace de cURL
- Un comparatif rapide entre cURL et Wget
C’est parti !
Syntaxe de base pour le téléchargement de fichiers avec cURL
Il s’agit de la syntaxe la plus élémentaire du fichier de téléchargement avec cURL :
curl -O <file_url>
Remarque: sous Windows, remplacez curl
par curl.exe
. Ceci est nécessaire, car curl
est un alias pour Invoke-WebRequest
dans Windows PowerShell, tandis que curl.exe
exécute explicitement l’outil en ligne de commande cURL.
Le drapeau -O
indique à cURL de sauvegarder le fichier téléchargé avec son nom original à partir de l’URL spécifiée dans <file_url>
. De manière équivalente, vous pouvez utiliser --remote-name
:
curl --remote-name <file_url>
Par exemple, examinons la commande cURL de téléchargement de fichier suivante :
curl -O "https://i.imgur.com/CSRiAeN.jpg"
Le résultat sera une barre de progression du téléchargement comme affiché ci-dessous :
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35354 100 35354 0 0 155k 0 --:--:-- --:--:-- --:--:-- 158k
Lorsque la progression atteindra 100 %, un fichier nommé CSRiAeN.jpg
apparaîtra dans le dossier où vous avez exécuté la commande cURL :
Pour plus d’informations sur ce qu’est cURL et les options qu’elle offre, consultez notre guide cURL. Il est temps d’explorer des scénarios plus complexes !
Utilisation de cURL pour télécharger un fichier : options avancées
Maintenant que vous connaissez la syntaxe de base du fichier de téléchargement avec cURL, vous pouvez apprendre à personnaliser la commande avec des options supplémentaires.
Modifier le nom du fichier téléchargé
Par défaut, l’option -O
télécharge le fichier indiqué dans l’URL cible en utilisant son nom d’origine. Si le fichier distant indiqué dans l’URL ne comporte pas de nom, cURL crée un fichier sans extension appelé curl_response
:
cURL affichera également un avertissement pour vous informer de ce comportement :
Warning: No remote file name, uses "curl_response"
Pour indiquer le nom personnalisé d’un fichier téléchargé, utilisez le drapeau -o
(ou --output
) comme indiqué ci-dessous :
curl "https://i.imgur.com/CSRiAeN.jpg" -o "logo.jpg"
Cette commande demande à cURL d’effectuer une requête GET à l’URL du fichier indiqué. Ensuite, elle enregistre le contenu téléchargé sous le nom indiqué après -o
au lieu de l’imprimer sur stdout.
Cette fois, le résultat sera un fichier logo.jpg
:
Suivre les redirections
Certaines URL ne pointent pas directement vers le fichier souhaité et nécessitent des redirections automatiques pour atteindre la destination finale.
Pour demander à cURL de suivre les redirections, vous devez utiliser l’option -L
:
curl -O -L "<file_url>"
Sans l’option -L
, cURL afficherait les en-têtes de réponse de la redirection (tels que 301 Moved Permanently
ou 302 Found
). Plus précisément, elle ne suivrait pas automatiquement le nouvel emplacement indiqué dans l’en-tête Location
.
Authentification sur le serveur
Certains serveurs restreignent l’accès à leurs ressources et exigent l’authentification des utilisateurs. Pour effectuer une authentification HTTP ou FTP de base, vous pouvez utiliser l’option -u
(ou --user
). Cela vous permet d’indiquer un nom d’utilisateur et un mot de passe sous le format suivant :
<username>:<password>
Le nom d’utilisateur et le mot de passe sont séparés par deux points (:
), ce qui rend toute insertion de ce signe impossible. En revanche, le mot de passe peut contenir deux points.
La chaîne <password>
est facultative. Si vous n’indiquez que le nom d’utilisateur, cURL vous invitera à saisir le mot de passe.
Voici la syntaxe pour télécharger un fichier avec cURL en utilisant l’authentification sur le serveur :
curl -O -u <username>:<password> <file_url>
Par exemple, vous pouvez télécharger un fichier .png
à partir d’une URL avec authentification en utilisant cette commande :
curl -O -u "myUser:myPassword" "https://example.com/secret.txt"
cURL s’authentifiera sur le serveur en utilisant myUser
et myPassword
comme informations d’identification. Ensuite, il téléchargera le fichier secret.txt
.
Imposer des restrictions de bande passante
Par défaut, cURL télécharge un fichier en utilisant toute la bande passante disponible, ce qui n’est pas toujours souhaitable. Pour contrôler la vitesse de téléchargement, vous pouvez utiliser l’option --limit-rate
suivie de la vitesse de téléchargement maximale que vous souhaitez définir :
curl -O --limit-rate 5k "https://i.imgur.com/CSRiAeN.jpg"
Le résultat resemblera à ceci :
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35354 100 35354 0 0 5166 0 0:00:06 0:00:06 --:--:-- 5198
Notez que la vitesse de téléchargement (5 198 octets par seconde, soit 5 Ko par seconde) correspond à celle spécifiée dans l’option. Cela se produit même si la vitesse de téléchargement normale de votre machine est supérieure à la valeur définie avec --limit-rate
.
--limit-rate
est utile pour contrôler l’utilisation de la bande passante afin d’éviter toute surcharge du réseau, de respecter les restrictions de bande passante ou de simuler des conditions de réseau plus lentes à des fins de test.
Télécharger via un serveur proxy
Lorsque vous effectuez une requête de téléchargement à l’aide de cURL, votre adresse IP est exposée au serveur cible. C’est un problème si vous souhaitez préserver votre vie privée ou éviter les mesures anti-bots telles que la limitation du taux d’exécution
Pour masquer votre adresse IP et acheminer votre requête via un proxy, utilisez l’option -x
(ou --proxy
) dans votre commande cURL :
curl -x <proxy_url> -O <file_url>
<proxy_url>
doit être spécifié sous le format suivant :
[protocol://]host[:port]
Notez que l’URL du proxy varie selon que vous utilisez un proxy HTTP, HTTPS ou SOCKS. Pour des instructions plus détaillées, consultez notre guide d’intégration du proxy cURL.
Par exemple, si vous utilisez un proxy HTTP, la commande deviendrait :
curl -x "http://proxy.example.com:8080" -O "https://i.imgur.com/CSRiAeN.jpg"
Effectuer des téléchargements en arrière-plan
Par défaut, la commande cURL de téléchargement de fichiers affiche une barre de progression ou un message d’erreur en cas d’échec. Pour désactiver ces résultats, vous pouvez activer le mode « silencieux » ou « discret » en utilisant l’option -s
(ou --silent
) :
curl -O -s "https://i.imgur.com/CSRiAeN.jpg"
cURL fonctionnera ainsi en silence. Si le téléchargement aboutit, le fichier apparaîtra dans le répertoire courant, mais sans information dans le terminal.
Imprimer les informations détaillées
En cas d’erreur ou pour mieux comprendre ce que cURL fait en coulisse, il est recommandé d’activer le mode verbeux en utilisant l’option -v
(ou --verbose
) :
curl -O -v "https://i.imgur.com/CSRiAeN.jpg"
Lors de l’exécution de la commande, vous visualiserez un résultat supplémentaire avec des informations détaillées sur le processus de requête et de réponse :
* IPv6: (none)
* IPv4: 146.75.52.193
* Trying 146.75.52.193:443...
* schannel: disabled automatic use of client certificate
* ALPN: curl offers http/1.1
* ALPN: server accepted http/1.1
* Connected to i.imgur.com (146.75.52.193) port 443
* using HTTP/1.x
> GET /CSRiAeN.jpg HTTP/1.1
> Host: i.imgur.com
> User-Agent: curl/8.10.1
> Accept: */*
>
* Request completely sent off
* schannel: failed to decrypt data, need more data
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 35354
< Content-Type: image/jpeg
< Last-Modified: Wed, 08 Jan 2025 08:02:49 GMT
< ETag: "117b93e0521ba1313429bad28b3befc8"
< x-amz-server-side-encryption: AES256
< X-Amz-Cf-Pop: IAD89-P1
< X-Amz-Cf-Id: wTQ20stgw0Ffl1BRmhRhFqpCXY_2hnBLbPXn9D8LgPwdjL96xarRVQ==
< cache-control: public, max-age=31536000
< Accept-Ranges: bytes
< Age: 2903
< Date: Wed, 08 Jan 2025 08:51:12 GMT
< X-Served-By: cache-iad-kiad7000028-IAD, cache-lin1730072-LIN
< X-Cache: Miss from cloudfront, HIT, HIT
< X-Cache-Hits: 1, 0
< X-Timer: S1736326272.410959,VS0,VE1
< Strict-Transport-Security: max-age=300
< Access-Control-Allow-Methods: GET, OPTIONS
< Access-Control-Allow-Origin: *
< Server: cat factory 1.0
< X-Content-Type-Options: nosniff
<
{ [1371 bytes data]
100 35354 100 35354 0 0 212k 0 --:--:-- --:--:-- --:--:-- 214k
* Connection #0 to host i.imgur.com left intact
Les détails de la connexion, les en-têtes de requête, les en-têtes de réponse et des informations supplémentaires sont affichées sur la progression du téléchargement.
Définir une barre de progression simplifiée
La barre de progression standard du fichier de téléchargement cURL ne répond peut-être pas à vos besoins. Vous pouvez activer une barre de progression plus simple avec l’option -#
(ou --progress-bar
) :
curl -O -# "https://i.imgur.com/CSRiAeN.jpg"
Une barre de progression utilisant le caractère #
s’affichera, tout en se remplissant au fur et à mesure du téléchargement du fichier :
########################################################### 100.0%
La barre #
fournit une vue plus minimaliste de la progression du téléchargement par rapport au résultat par défaut avec cURL.
Comment télécharger plusieurs fichiers avec cURL
Vous savez désormais comment télécharger un fichier avec cURL, mais qu’en est-il du téléchargement de plusieurs fichiers avec une seule commande ? Préparez-vous à le découvrir !
Téléchargement étendu de fichiers
cURL prend en charge le téléchargement de plusieurs fichiers à la fois en utilisant l’expansion d’URL. Plus précisément, vous pouvez télécharger plusieurs fichiers avec la même URL distante en les spécifiant à l’aide d’accolades {}
:
curl -O "https://example.com/images/{1.jpg,2.jpg,3.jpg}"
Ces trois fichiers spécifiés seront téléchargés :
1.jpg
2.jpg
3.jpg
Remarquez que les fichiers indiqués à l’intérieur des {}
peuvent avoir des extensions différentes.
Vous pouvez également utiliser les crochets []
syntaxe :
curl -O "https://example.com/files/file[1-3].jpg"
Vous obtenez un résultat similaire à celui du premier exemple. Dans ce cas, tous les fichiers de []
doivent avoir la même extension.
Remarque : Si vous incluez des options personnalisées (telles que -s
pour le mode silencieux ou --limit-rate
pour les restrictions de bande passante), celles-ci seront appliquées à tous les fichiers en cours de téléchargement.
Téléchargement de plusieurs fichiers
Pour télécharger des fichiers à partir de différentes URL, vous devez indiquer l’option -O
plusieurs fois :
curl -O "https://i.imgur.com/CSRiAeN.jpg" -O "https://brightdata.com/wp-content/uploads/2020/12/upload_blog_20201220_153903.svg"
Cette commande téléchargera CSRiAeN.jpg
depuis i.imgur.com
et upload_blog_20201220_153903.jpg
depuis brightdata.com
.
Une barre de téléchargement s’affichera pour une URL donnée :
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35354 100 35354 0 0 271k 0 --:--:-- --:--:-- --:--:-- 276k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 22467 0 22467 0 0 34657 0 --:--:-- --:--:-- --:--:-- 34724
De même, vous pouvez utiliser plusieurs options -o
:
curl "https://i.imgur.com/CSRiAeN.jpg" -o "logo.jpg" "https://brightdata.com/wp-content/uploads/2020/12/upload_blog_20201220_153903.svg" -o "blog_post.svg"
La commande ci-dessus téléchargera CSRiAeN.jpg
et le sauvegarder sous logo.jpg
. et téléchargera upload_blog_20201220_153903.svg
et le sauvegardera sous blog_post.svg
.
Notez que vous pouvez également combiner les options -O
et -o
:
curl "https://i.imgur.com/CSRiAeN.jpg" -o "logo.jpg" -O "https://brightdata.com/wp-content/uploads/2020/12/upload_blog_20201220_153903.svg"
Ceci télécharge logo.jpg
comme auparavant et upload_blog_20201220_153903.svg
avec son nom de fichier d’origine.
Notez que d’autres options comme -v
, -s
ou --limit-rate
s’appliquent séparément à toutes les URL. Elles doivent donc être spécifiées une seule fois.
Pratiques conseillées pour le téléchargement de fichiers avec cURL
Vous trouverez ci-dessous une liste des pratiques conseillées les plus importantes pour le téléchargement de fichiers avec cURL :
- Utiliser
curl.exe
au lieu de curl sous Windows : sous Windows, utilisezcurl.exe
au lieu decurl
pour éviter le conflit avec la cmdletInvoke-WebRequest
. - Ignorer les erreurs HTTPS et SSL/TLS (avec prudence) : utilisez l’option
-k
(ou--insecure
) pour ignorer les erreurs de validation des certificats SSL/TLS. Toutefois, sachez que cela compromet la sécurité et ne doit être utilisé que dans des environnements de confiance. - Indiquer les bonnes méthodes HTTP : lorsque vous effectuez des requêtes, utilisez la méthode HTTP appropriée telle que GET, POST ou PUT. La méthode choisie a une incidence sur la réponse du serveur à votre requête. Utilisez l’option
-X
pour indiquer la méthode. - Placer les URL entre guillemets et échappez les caractères spéciaux : saisissez toujours les URL entre des guillemets simples ou doubles pour traiter correctement les caractères spéciaux. Utilisez les caractères d’échappement (
\
) pour éviter les problèmes liés aux espaces, aux esperluettes et aux autres caractères spéciaux dans les URL. - Indiquer un proxy pour protéger votre identité : utilisez l’option
-x
(ou--proxy
) pour acheminer vos requêtes cURL par un proxy. Cela permet de protéger votre adresse IP et de préserver la confidentialité lors du scraping ou du téléchargement de fichiers. - Sauvegarder et réutiliser les cookies sur différentes requêtes : utilisez les options
-c
et-b
pour sauvegarder et réutiliser les cookies dans les requêtes suivantes. Cela permet de maintenir la persistance de la session et peut être utile pour l’authentification ou le suivi. - Limiter la vitesse de téléchargement pour un meilleur contrôle: utilisez l’option
--limit-rate
pour contrôler la vitesse de téléchargement et éviter de surcharger votre connexion réseau ou de déclencher des limites de débit sur le serveur. - Ajouter un résultat verbeux pour le débogage : activez le mode verbeux avec l’option
-v
pour obtenir des informations détaillées sur la requête et la réponse. Cela peut être utile pour le débogage et le dépannage. - Vérifier les réponses avec des erreurs : vérifiez toujours les codes de réponse HTTP en utilisant l’option
-w
pour savoir si le téléchargement du fichier a abouti (par exemple,200 OK
) ou s’il y a eu une erreur (par exemple,404 Not Found
).
cURL vs Wget pour le téléchargement de fichiers
cURL et Wget sont tous deux des outils en ligne de commande permettant de récupérer des fichiers sur des serveurs distants. La principale différence entre les deux est la suivante :
- Wget est conçu pour télécharger des fichiers à partir du Web. Il prend en charge les protocoles HTTP, HTTPS, FTP et bien d’autres. Wget est connu pour sa capacité à télécharger des fichiers de manière récursive, à reprendre des téléchargements interrompus et à fonctionner en arrière-plan. Décovrez comment l’utiliser pour télécharger des pages web avec Python.
- cURL est un outil en ligne de commande polyvalent utilisé pour transférer des données vers et depuis un serveur à l’aide de divers protocoles Internet. Il est couramment utilisé pour tester les points d’extrémité, effectuer des requêtes HTTP simples et télécharger des fichiers uniques. cURL peut également être utilisé pour le web scraping.
La principale différence entre cURL et Wget est que cURL permet un contrôle plus granulaire du transfert de données. Plus précisément, il prend en charge les en-têtes personnalisés, l’authentification et d’autres protocoles. En revanche, Wget est plus simple et mieux adapté aux téléchargements en masse, à la récursivité et à la gestion des transferts interrompus.
Conclusion
Dans ce guide, vous avez appris à télécharger des fichiers avec cURL. Vous avez commencé par la syntaxe de base du fichier de téléchargement avec cURL et exploré des scénarios et des cas d’utilisation plus complexes. Vous savez désormais comment récupérer un ou plusieurs fichiers à l’aide de cURL.
Gardez à l’esprit que chaque fois que vous effectuez une requête HTTP, vous laissez des traces sur l’internet. Pour protéger votre identité et votre vie privée, et renforcer votre sécurité, vous devriez envisager d’intégrer un proxy à cURL. Heureusement, Bright Data est là pour vous aider !
Bright Data possède les meilleurs serveurs proxy au monde. Ce fournisseur aide des entreprises qui figurent dans le classement Fortune 500 et plus de 20 000 clients. Son réseau mondial de proxys comprend les proxys suivants :
- Proxys de centre de données — Plus de 770 000 adresses IP de datacenters.
- Proxies résidentiels : plus de 72 millions d’adresses IP résidentielles dans plus de 195 pays.
- Proxys de fournisseurs d’accès à Internet — Plus de 700 000 adresses IP de fournisseurs d’accès Internet.
- Proxys de mobiles : plus de 7 millions d’adresses IP mobiles.
Dans l’ensemble, il s’agit de l’un des réseaux de proxys orientés vers le web scraping les plus importants et fiables du marché.
Inscrivez-vous dès maintenant et testez gratuitement nos proxies et nos solutions de scraping !
Aucune carte de crédit requise