Maîtriser l'outil curl sous Linux pour les transferts de données

L'outil curl, disponible sous Linux, permet d'interagir avec des protocoles réseau comme HTTP ou FTP directement depuis la ligne de commande. C'est un utilitaire polyvalent pour le téléchargement et l'envoi de fichiers via des URL.

Syntaxe générale

curl [options] [cible_url]

Paramètres courants

  • -A "chaîne_agent" : Définir l'en-tête User-Agent envoyé au serveur.
  • -b fichier_cookies : Lire les cookies à partir d'un fichier.
  • -c fichier_cookies_sortie : Enregistrer les cookies dans un fichier après l'opération.
  • -C décalage : Reprendre un transfert interrompu à un point donné.
  • -D fichier_entêtes : Écrire les en-têtes HTTP dans un fichier spécifié.
  • -e url_référent : Spécifier l'URL de référence (referer).
  • -f : Masquer les erreurs HTTP en cas d'échec de connexion.
  • -o fichier_sortie : Diriger la sortie vers un fichier.
  • -O : Sauvegarder le fichier avec le nom distant.
  • -r intervalle : Extraire une plage d'octets spécifique.
  • -s : Mode silencieux, supprime la progression et les messages.
  • -T fichier_à_envoyer : Téléverser un fichier.
  • -u utilisateur:mot_de_passe : Fournir les identifiants d'accès.
  • -w format_sortie : Afficher des informations après le transfert.
  • -x hôte:port : Utiliser un serveur proxy HTTP.
  • -# : Afficher une barre de progression.

Exemples pratiques

Récupérer le contenu d'une page web

curl https://site-exemple.fr

Cette commande affiche le code source HTML de la page dans le terminal.

Sauvegarder une page dans un fichier

Utilisation de la redirection shell :

curl https://site-exemple.fr > page_locale.html

Avec l'option -o :

curl -o page_sauvegardee.html https://site-exemple.fr

Télécharger un fichier distant avec son nom original

curl -O https://site-exemple.fr/ressources/image.png

Vérifier le code de réponse HTTP

curl -o /dev/null -s -w "%{http_code}" https://site-exemple.fr

Utile pour contrôler la disponibilité d'un service dans un script.

Passer par un proxy

curl -x 192.168.1.1:3128 https://site-exemple.fr

Gérer les cookies

Enregistrer les cookies reçus :

curl -c cookies.txt https://site-exemple.fr

Enregistrer les en-têtes complets (incluant les cookies) :

curl -D entetes.txt https://site-exemple.fr

Réutiliser des cookies pour une requête :

curl -b cookies.txt https://site-exemple.fr

Simuler un navigateur spécifique

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0" https://site-exemple.fr

Falsifier l'en-tête Referer

curl -e "site-referent.com" https://site-cible.fr

Téléchargements avancés

Téléchargement par lots avec motifs :

curl -O https://serveur-fichiers.fr/données[1-4].tar.gz

Renommer les fichiers pour éviter les écrasements :

curl -o "#1_#2.txt" https://serveur-fichiers.fr/{dossier_a,dossier_b}/fichier.txt

Téléchargement par segments :

curl -r 0-1024 -o segment1.bin https://serveur-fichiers.fr/gros_fichier.bin
curl -r 1025-2048 -o segment2.bin https://serveur-fichiers.fr/gros_fichier.bin
cat segment1.bin segment2.bin > fichier_complet.bin

Utiliser le protocole FTP

curl -O ftp://utilisateur:motdepasse@serveur-ftp.fr/dossier/document.pdf

Reprendre un transfert interrompu

curl -C - -O https://site-exemple.fr/archive.zip

Téléverser un fichier

curl -T fichier_local.jpg -u identifiant:secret ftp://serveur-ftp.fr/images/

Afficher les erreurs techniques

curl -f https://site-exemple.fr/ressource_manquante

Options supplémentaires (extrait)

  • -d "données" : Envoyer des données via la méthode POST.
  • -E fichier_certificat : Spécifier un certificat client pour les connexions SSL.
  • -H "En-tête: Valeur" : Ajouter un en-tête HTTP personnalisé.
  • -k : Autoriser les connexions à des sites SSL non sécurisés.
  • -L : Suivre les redirections HTTP.
  • --limit-rate vitesse : Limiter la bande passante utilisée.
  • --max-time secondes : Définir un temps maximum pour l'opération.
  • --retry nombre : Réessayer en cas d'échec de transfert.

Étiquettes: curl Linux ligne-de-commande HTTP FTP

Publié le 10 juin à 17h57