Exercices : le protocole HTTP
Les exercices précédés du symbole sont à faire sur machine, en sauvegardant le fichier si nécessaire.
Les exercices précédés du symbole doivent être résolus par écrit.
Exercice 2 : HTTP et python
Le module python
requests
Il est possible d’utiliser Python pour établir une connexion avec un serveur web. On peut pour cela utiliser le module requests
(requêtes en anglais). On travaille ci-dessous dans la console Python.
>>> import requests
>>> reponse = requests.get("http://www.delafond.org/survielinux/") # envoi d'un requête GET
>>> reponse # la connexion est établie correctement (200 signifie OK)
<Response [200]>
>>> reponse.request.headers # entête de la requête
'User-Agent': 'python-requests/2.28.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
{>>> reponse.headers # l'entête de la réponse du serveur
'Date': 'Thu, 03 Nov 2022 21:31:47 GMT', 'Content-Type': 'text/html', 'Transfer-Encoding': 'chunked',
{'Connection': 'keep-alive', 'Last-Modified': 'Sun, 28 Mar 2010 21:22:16 GMT', 'ETag': '"681c5-482e2fd9d3200-gzip"',
'Accept-Ranges': 'bytes', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'server': 'nginx'}
>>> reponse.content
b'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n<html>\n<head>\n
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">\n
<title>Guide de Survie du D\xc3\xa9butant sous Linux</title>\n <meta name="CREATED" content="19981217;15162800">\n
<meta name="CHANGEDBY" content="G\xc3\xa9rard Delafond">\n <meta name="CHANGED" content="20050528;7341900">\n
<style>\n <!--\n@page { size: 21cm 29.7cm }\n-->\n\n </style>\n</head>\n\n<body lang="fr-FR"
="pics/backdrop.png" dir="ltr">\n<p><br>\n<br>\n</p>\n\n<h1><img src="pics/Survie330.jpg" name="Image1"
background="Logo_survie"\nalign="left" width="799" height="280" border="0"><br clear="left">\nGuide de survie sous Linux:</h1>
alt# réponse tronquée ... ...
On peut voir que la connexion est bien établie (code 200) entre le client (Python lui-même : User-Agent python) et le serveur (nommé ici nginx) qui héberge le site.
Le contenu est en HTML, comme on s’y attend
La page a été modifiée pour la dernière fois en mars 2010.
Et tout un tas d’informations moins pertinentes.
Le contenu de la réponse est le code HTML lui-même.
- Reproduire les commandes présentées ci-dessus pour joindre successivement : https://google.com et https://google.com/azeaze.
- Comparer les codes réponses obtenus dans les deux cas. Que signifient-ils ? Que peut-on en déduire concernant la page https://google.com/azeaze ?
- Mesurez la longueur du contenu de la réponse dans les deux cas. Comment expliquer cette différence ?