Transfert de données d'URL sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Bienvenue dans le laboratoire (lab) LabEx sur le transfert de données via des URL sous Linux. Dans ce laboratoire, vous apprendrez à transférer des données à l'aide d'URL dans les systèmes Linux. Il s'agit d'une compétence fondamentale pour les administrateurs de systèmes, les développeurs et les professionnels de la sécurité.

L'outil principal que nous allons étudier est curl, un puissant utilitaire en ligne de commande pour le transfert de données utilisant la syntaxe des URL. Vous apprendrez à récupérer des données à partir de sites web, à enregistrer le contenu dans des fichiers, à utiliser différentes méthodes HTTP et à personnaliser vos requêtes avec diverses options.

À la fin de ce laboratoire, vous aurez acquis une expérience pratique des techniques essentielles de transfert de données couramment utilisées dans les scénarios réels.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/PackagesandSoftwaresGroup -.-> linux/curl("URL Data Transferring") subgraph Lab Skills linux/ls -.-> lab-271257{{"Transfert de données d'URL sous Linux"}} linux/cat -.-> lab-271257{{"Transfert de données d'URL sous Linux"}} linux/cd -.-> lab-271257{{"Transfert de données d'URL sous Linux"}} linux/mkdir -.-> lab-271257{{"Transfert de données d'URL sous Linux"}} linux/curl -.-> lab-271257{{"Transfert de données d'URL sous Linux"}} end

Comprendre les bases de curl

curl est un outil en ligne de commande permettant de transférer des données en utilisant la syntaxe des URL. Il prend en charge de nombreux protocoles, notamment HTTP, HTTPS, FTP et bien d'autres. Dans cette étape, vous apprendrez l'utilisation de base de curl pour récupérer le contenu web.

Commençons par ouvrir un terminal. Le terminal devrait déjà être dans le répertoire /home/labex/project. Sinon, vous pouvez vous déplacer dans ce répertoire en utilisant :

cd ~/project

Votre première commande curl

Commençons par utiliser curl pour récupérer le contenu d'un site web. Tapez la commande suivante :

curl http://example.com

Après avoir exécuté cette commande, vous devriez voir le contenu HTML de example.com affiché dans votre terminal. Cette sortie inclut les balises HTML et tout le contenu de la page web. La sortie devrait ressembler à ceci :

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    ...
</head>
<body>
    <div>
        <h1>Example Domain</h1>
        <p>This domain is for use in illustrative examples in documents...</p>
        ...
    </div>
</body>
</html>

Cela démontre l'utilisation la plus basique de curl : récupérer le contenu d'une URL et l'afficher directement dans le terminal.

Comprendre la sortie

La sortie que vous voyez est la réponse HTML brute du serveur. Lorsque vous visitez un site web avec un navigateur, le navigateur interprète ce HTML et le rend sous forme de page web formatée. Cependant, curl vous montre simplement le contenu brut.

Essayons un autre exemple pour voir un contenu différent. Exécutez :

curl https://httpbin.org/json

Cette fois, vous devriez voir une réponse JSON. La sortie devrait ressembler à ceci :

{
  "slideshow": {
    "author": "Yours Truly",
    "date": "date of publication",
    "slides": [
      {
        "title": "Wake up to WonderWidgets!",
        "type": "all"
      },
      {
        "items": [
          "Why <em>WonderWidgets</em> are great",
          "Who <em>buys</em> WonderWidgets"
        ],
        "title": "Overview",
        "type": "all"
      }
    ],
    "title": "Sample Slide Show"
  }
}

Comme vous pouvez le voir, curl peut récupérer différents types de contenu en fonction de ce que le serveur fournit.

Enregistrer la sortie dans des fichiers

Dans de nombreux cas, vous voudrez peut-être enregistrer le contenu que vous récupérez plutôt que de simplement le visualiser dans le terminal. Dans cette étape, vous apprendrez à enregistrer la sortie de curl dans des fichiers.

Enregistrement en utilisant la redirection de sortie

La façon la plus simple d'enregistrer la sortie d'une commande curl consiste à utiliser la redirection avec l'opérateur >. Exécutez la commande suivante :

curl http://example.com > example.html

Cette commande récupère le contenu de example.com et l'enregistre dans un fichier nommé example.html dans votre répertoire actuel. Pour vérifier que le fichier a été créé, exécutez :

ls -l example.html

Vous devriez voir le fichier répertorié avec sa taille et d'autres détails.

Pour vérifier le contenu du fichier, vous pouvez utiliser la commande cat :

cat example.html

Vous devriez voir le même contenu HTML qui était précédemment affiché dans le terminal.

Utilisation de l'option -o de curl

curl propose une option spécifique -o (ou --output) pour enregistrer le contenu récupéré dans un fichier. Cela est particulièrement utile lorsque la redirection de sortie peut causer des problèmes. Essayons :

curl -o httpbin_data.json https://httpbin.org/json

Cette commande enregistre les données JSON de httpbin.org dans un fichier nommé httpbin_data.json. Vérifiez la création du fichier avec :

ls -l httpbin_data.json

Et vérifiez son contenu avec :

cat httpbin_data.json

Création d'un répertoire de données

Il est recommandé d'organiser vos fichiers. Créons un répertoire de données dédié (s'il n'existe pas déjà) et enregistrons-y un peu de contenu :

mkdir -p data
curl -o data/google_data.txt http://www.google.com

La commande mkdir -p crée le répertoire data s'il n'existe pas encore. Le drapeau -p garantit qu'aucune erreur n'est signalée si le répertoire existe déjà.

Maintenant, vérifiez que le fichier a été créé dans le répertoire de données :

ls -l data/google_data.txt

Vous devriez voir le fichier répertorié avec ses détails.

Options avancées de curl

curl propose de nombreuses options qui vous permettent de personnaliser vos requêtes. Dans cette étape, vous allez découvrir certaines des options les plus utiles.

Mode verbeux

L'option -v (ou --verbose) demande à curl d'afficher des informations détaillées sur la requête et la réponse. Cela est particulièrement utile pour le débogage. Exécutez :

curl -v http://example.com

Vous devriez voir beaucoup d'informations, notamment :

  • Les en-têtes de requête envoyés par curl
  • Les détails de la connexion
  • Les en-têtes de réponse du serveur
  • Le contenu réel de la réponse

La sortie ressemblera à ceci (bien que certains détails puissent varier) :

*   Trying 93.184.216.34:80...
* Connected to example.com (93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Age: 578793
< Cache-Control: max-age=604800
< Content-Type: text/html; charset=UTF-8
< Date: Tue, 26 Dec 2023 13:45:32 GMT
< Etag: "3147526947+ident"
< Expires: Tue, 02 Jan 2024 13:45:32 GMT
< Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
< Server: ECS (dcb/7F83)
< Vary: Accept-Encoding
< X-Cache: HIT
< Content-Length: 1256
<
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    ...

Les lignes commençant par * sont des messages d'information de curl lui-même.
Les lignes commençant par > sont des en-têtes de requête.
Les lignes commençant par < sont des en-têtes de réponse.
Le contenu réel suit les en-têtes de réponse.

En-têtes personnalisés

Parfois, vous devez envoyer des en-têtes spécifiques avec votre requête. Vous pouvez utiliser l'option -H (ou --header) à cet effet. Essayons de définir un User-Agent personnalisé :

curl -H "User-Agent: MyCustomClient/1.0" https://httpbin.org/user-agent

Cette commande envoie une requête à httpbin.org avec un en-tête User-Agent personnalisé. La réponse devrait confirmer que votre User-Agent personnalisé a été reçu :

{
  "user-agent": "MyCustomClient/1.0"
}

Suivi des redirections

Par défaut, curl ne suit pas les redirections HTTP. Vous pouvez utiliser l'option -L (ou --location) pour qu'il suive les redirections. Essayons :

curl -L http://github.com

Sans l'option -L, vous n'obtiendriez qu'une réponse de redirection. Avec -L, curl suit la redirection et vous montre le contenu de la destination finale.

Créons un fichier dans le répertoire de données pour pratiquer avec ces options :

curl -v -L -o data/redirect_example.txt http://github.com

Cette commande :

  1. Utilise le mode verbeux (-v)
  2. Suit les redirections (-L)
  3. Enregistre la sortie dans data/redirect_example.txt
  4. Demande le contenu de github.com

Vérifiez que le fichier a été créé :

ls -l data/redirect_example.txt

Vous devriez voir le fichier répertorié avec ses détails.

Méthodes HTTP et envoi de données

curl prend en charge diverses méthodes HTTP en plus de la méthode GET par défaut. Dans cette étape, vous apprendrez à utiliser différentes méthodes HTTP et à envoyer des données avec vos requêtes.

Utilisation de la méthode POST

La méthode POST est couramment utilisée pour soumettre des données à un serveur. Vous pouvez utiliser l'option -X pour spécifier la méthode HTTP et l'option -d pour fournir les données. Essayons :

curl -X POST -d "name=John&age=25" https://httpbin.org/post

Cette commande envoie une requête POST avec des données de formulaire à httpbin.org. La réponse devrait renvoyer les données que vous avez envoyées :

{
  "args": {},
  "data": "",
  "files": {},
  "form": {
    "age": "25",
    "name": "John"
  },
  "headers": {
    "Accept": "*/*",
    "Content-Length": "16",
    "Content-Type": "application/x-www-form-urlencoded",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.81.0",
    "X-Amzn-Trace-Id": "Root=1-65b..."
  },
  "json": null,
  "origin": "your-ip-address",
  "url": "https://httpbin.org/post"
}

Envoi de données JSON

Pour envoyer des données JSON, vous devez spécifier l'en-tête Content-Type. Exécutez :

curl -X POST -H "Content-Type: application/json" -d '{"name":"John","age":25}' https://httpbin.org/post

La réponse devrait inclure vos données JSON :

{
  "args": {},
  "data": "{\"name\":\"John\",\"age\":25}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "24",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.81.0",
    "X-Amzn-Trace-Id": "Root=1-65b..."
  },
  "json": {
    "age": 25,
    "name": "John"
  },
  "origin": "your-ip-address",
  "url": "https://httpbin.org/post"
}

Utilisation d'autres méthodes HTTP

curl prend en charge toutes les méthodes HTTP standard. Essayons une requête PUT :

curl -X PUT -d "data=example" https://httpbin.org/put

Vous pouvez également essayer une requête DELETE :

curl -X DELETE https://httpbin.org/delete

Chacune de ces commandes renverra une réponse montrant les détails de votre requête.

Enregistrons la sortie d'une requête POST dans un fichier :

curl -X POST -d "name=John&age=25" -o data/post_response.json https://httpbin.org/post

Vérifiez que le fichier a été créé :

ls -l data/post_response.json

Et vérifiez son contenu :

cat data/post_response.json

Vous devriez voir la réponse JSON de httpbin.org, similaire à ce qui a été montré précédemment.

Téléchargement de fichiers et suivi de la progression

curl est très pratique pour télécharger des fichiers depuis Internet. Dans cette étape, vous apprendrez à télécharger des fichiers et à suivre la progression du téléchargement.

Téléchargement de base de fichiers

Pour télécharger un fichier, vous pouvez utiliser l'option -o que nous avons vue précédemment. Téléchargeons une image d'exemple :

curl -o data/sample.jpg https://httpbin.org/image/jpeg

Cette commande télécharge une image JPEG depuis httpbin.org et l'enregistre sous le nom sample.jpg dans le répertoire data.

Vérifiez que le fichier a été téléchargé :

ls -l data/sample.jpg

Téléchargement avec barre de progression

Pour les téléchargements plus volumineux, il est utile de voir la progression. Vous pouvez utiliser l'option -# pour afficher une barre de progression :

curl -## -o data/sample_with_progress.jpg https://httpbin.org/image/jpeg

Vous devriez voir une barre de progression comme celle-ci :

######################################################################### 100.0%

Utilisation de l'option de fichier de sortie avec nom automatique

Si vous souhaitez utiliser le même nom de fichier que le fichier distant, vous pouvez utiliser l'option -O (O majuscule) :

cd data
curl -O https://httpbin.org/image/jpeg
cd ..

Cela télécharge le fichier et l'enregistre sous le nom jpeg (la dernière partie de l'URL) dans le répertoire data.

Vérifiez que le fichier a été téléchargé :

ls -l data/jpeg

Reprise d'un téléchargement interrompu

Si un téléchargement est interrompu, vous pouvez le reprendre en utilisant l'option -C - :

curl -C - -o data/resume_example.jpg https://httpbin.org/image/jpeg

Cela indique à curl de déterminer automatiquement où reprendre le téléchargement.

Limitation de la vitesse de téléchargement

Vous pouvez limiter la vitesse de téléchargement en utilisant l'option --limit-rate :

curl --limit-rate 100K -o data/rate_limited.jpg https://httpbin.org/image/jpeg

Cela limite la vitesse de téléchargement à 100 Ko/s.

Téléchargement de plusieurs fichiers

Vous pouvez télécharger plusieurs fichiers avec une seule commande :

curl -o data/image1.jpg https://httpbin.org/image/jpeg -o data/image2.png https://httpbin.org/image/png

Cela télécharge une image JPEG et une image PNG et les enregistre respectivement sous les noms image1.jpg et image2.png.

Vérifiez que les deux fichiers ont été téléchargés :

ls -l data/image1.jpg data/image2.png

Résumé

Dans ce laboratoire, vous avez appris à utiliser curl, un puissant outil en ligne de commande pour transférer des données via des URL. Vous avez maintenant une expérience pratique dans les domaines suivants :

  1. Utilisation de base de curl pour récupérer le contenu web
  2. Enregistrement de la sortie de curl dans des fichiers en utilisant la redirection et l'option -o
  3. Utilisation d'options avancées de curl telles que le mode verbeux (-v), les en-têtes personnalisés (-H) et la poursuite des redirections (-L)
  4. Traitement avec différentes méthodes HTTP (GET, POST, PUT, DELETE) et envoi de données
  5. Téléchargement de fichiers et suivi de la progression du téléchargement

Ces compétences sont essentielles pour de nombreuses tâches en administration système, développement web, test d'API et scripts d'automatisation. La commande curl est largement utilisée dans divers domaines techniques et est disponible sur pratiquement toutes les distributions Linux, macOS et même Windows.

Alors que vous poursuivez votre parcours dans le monde du Linux et des réseaux, rappelez-vous que curl dispose de bien plus d'options et de capacités que celles que nous avons couvertes dans ce laboratoire. Vous pouvez toujours vous référer au manuel de curl (man curl) pour plus d'informations.