Comment télécharger des fichiers avec cURL

Apprenez à télécharger efficacement des fichiers avec cURL, de la syntaxe de base aux options avancées et accédez à un comparatif rapide entre cURL et Wget.
15 min de lecture
How to download files with curl blog image

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 :

Le fichier CSRiAeN.jpg téléchargé dans le dossier où cURL a été lancé

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 :

Le fichier curl_response par défaut dans le dossier où cURL a été lancé

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 :

Le fichier logo.jpg téléchargé dans le dossier où cURL a été lancé

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, utilisez curl.exe au lieu de curl pour éviter le conflit avec la cmdlet Invoke-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 :

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