Ignorer la navigation

Code client: Python requests

Requête HTTP GET

Le code suivant permet de faire une requête HTTP GET à l’url définie en variable. La réponse HTTP est affichée dans la console.

#!/usr/bin/env python
import requests
import re

proxies = {
   'http': 'http://172.19.71.245:3128',
   'https': 'http://172.19.71.245:3128',
}

url ="http://bts.sn.ir.free.fr/forms/traitementServeur_GET.php"

reponseHTTP = requests.get(url,proxies=proxies,verify=False)

print(reponseHTTP.status_code)

contenu = reponseHTTP.text

print(contenu)

Pour passer une valeur avec la méthode GET, il faut la rajouter à l'url:

reponseHTTP = requests.get(url+"?nom=toto",proxies=proxies,verify=False)

Requête HTTP POST

Pour faire passer des valeurs en utilisant la méthode POST il faut:

  • Créer un dictionnaire avec les valeurs attendues
  • Utiliser la méthode post
dataPost = {"ville":"Paris", "pays":"France"}
reponseHTTP = requests.post(url,data= dataPost, proxies=proxies,verify=False)
print(reponseHTTP.status_code)
contenu = reponseHTTP.text
print(contenu)

Analyse de la réponse

Le site meteoblue affiche la température actuelle:

https://www.meteoblue.com/fr/meteo/semaine/aire-sur-adour_france_6694553

On souhaite récupérer et stocker la valeur dans une variable Python.

En analysant le code source de la page, on voit que la valeur est affichée dans une div:

<div class="h1 current-temp">22&thinsp;°C </div>

Le code suivant:

  • récupère la réponse dans une chaine,
  • découpe la chaine en 2 en utilisant la fonction split,
  • récupère la partie de gauche [0] ou droite [1]
contenu = reponseHTTP.text
print(contenu)
bla = contenu.split('"h1 current-temp">')
morceau = bla[1]
bla = morceau.split(" °C")
morceau = bla[0]
print("il fait " + morceau +"°C")

Sur le même principe rechercher et afficher le taux de change euro dolar à partir de la page suivante:

https://www.zonebourse.com/cours/devise/EURO-US-DOLLAR-EUR-USD-4591/

Challenges Capture the Flag

Le site cyber-learning propose des challenges "Capture the flag" reposant sur les éléments ci-dessus.

https://cyber-learning.fr/exercices-cybersecurite/?matiere=6&a=Php-Python-Perl

Dans le premier challenge, il faut:

  • faire une requête GET et analyser la réponse pour extraire le code affiché
  • renvoyer le code en utilisant le protocole POST
  • utiliser les sessions
url ="https://cyber-learning.fr/cyber-challenge/programmation/socket/sujet.php?jeton=OjAS113qeI11"

session = requests.Session()
reponseHTTP = session.get(url,proxies=proxies,verify=False)
#print(reponse.text)
contenu = reponseHTTP.text

tableau = contenu.split("le FLAG) : ")
morceauDroite = tableau[1]
tableau = morceauDroite.split("<br><br>")
morceauGauche = tableau[0]
print(morceauGauche)

dataPost = {"copie": morceauGauche } # voir code formulaire
reponse = session.post(url,data = dataPost, proxies=proxies,verify=False)

print(reponse.text)

Validez le premier challenge, puis passez aux suivants...

Créé avec eXeLearning (Nouvelle fenêtre)