Vous avez envie de voir python interagir avec le monde merveilleux du web ? Vous souhaitais avoir un script vous informant du classement de kittenwar.com ? Vous êtes au bonne endroit !
Les imports nécessaires :
- Urllib et Urllib2 : cela vous permettra de gérer des requêtes web simples.
- Cookielib : Bah parceque les cookies sont trop bon.
Il me semble que cela fonctionne sous Windows (mais je vérifierai plus tard).
Maintenant explications pour les deux versions d'Urllib : bah il y a pas toute les fonctions qui faut dans la deux (essentiellement encode pour les requetes POST).
Je vais baser mes explications sur un code que j'ai écrit dans un but statistique sur un site de jeu ( les jeux du site jsnetwork.fr ), ce site propose des jeux de hasard permettant en théorie de gagner des cadeaux.
Je vous cache pas le résultat de mon étude, au départ on gagne énormément et à la fin, on stagne tout proche du cadeau.
Première étape : Une requête basique
Nous voulons voir la page http://www.google.fr, on utilise urllib2.request pour préparer la requête que l'on va stocker dans req, ensuite on exécute cette dernière via urlib2.urlopen.
Cette fonction nous renvoie la réponse du serveur web mais ici nous voulons récupérer le html de la page, on utilise reponse.read pour cela.
Remarque: Pour des requêtes simples comme celle-ci, on peut utiliser directement urllib2.urlopen(url) sans passer par request.
Deuxième partie : Une requête POST
Grâce à la première partie, vous êtes capable de faire des requêtes GET, mais comment faire les POST ? C'est ce qu'on l'on va voir maintenant.
Nous allons ici simuler l'envoie du resultat d'un formulaire HTML. values contient les différents champs du formulaire et leur valeurs (ici : name, pass et message).
On utilise urlib.urlencode pour encoder ces valeurs avant de les passer à la fonction urllib2.Request et ensuite on agit de même que dans la première partie.
Troisième partie : Mais qui sommes nous ?
Les sites web peuvent vous identifier grâce aux headers de vos requêtes web tel que user-gent qui identifie votre navigateur, referer qui permet au site de savoir d'ou vous venez...
Nous allons pour indiquer au site ces infos reprendre l'exemple précédant.
Bien sur il suffit de faire de même avec les autres paramètres du headers.
Quatrième partie :Miam ! Des cookies !
Les sites web utilisent les cookies pour vous reconnaitre de manière plus sécurisée, par exemple lors de la connexion sur un site un cookies se crée pour que le site sache que vous êtes connecté tandis que vous changer de pages.
Pour pouvoir utiliser les cookies et être identifié par le site, nous allons utiliser un cookiejar (en français un pot de cookies ça donne très faim). Ce dernier va stocker les cookies qu'il recevra. Pour l'intégrer dans nos requêtes, on doit créer un Url_opener, qui est la fonction envoyant la requête au serveur (comme la fonction openurl que nous avons vu. Cet url_opener va gerer de manière interne les headers (dont les cookies font parties), dont on a la possibilité d'en ajouter (comme ci dessus pour le user-agent).
Conclusion :
Vous avez desormais les bases essentielles pour programmer des requetes web en python, vous pouvez ainsi vous fabriquer votre propre fuzzer web, un bot web ou plein d'autres choses.
Les imports nécessaires :
- Urllib et Urllib2 : cela vous permettra de gérer des requêtes web simples.
- Cookielib : Bah parceque les cookies sont trop bon.
Il me semble que cela fonctionne sous Windows (mais je vérifierai plus tard).
Maintenant explications pour les deux versions d'Urllib : bah il y a pas toute les fonctions qui faut dans la deux (essentiellement encode pour les requetes POST).
Je vais baser mes explications sur un code que j'ai écrit dans un but statistique sur un site de jeu ( les jeux du site jsnetwork.fr ), ce site propose des jeux de hasard permettant en théorie de gagner des cadeaux.
Je vous cache pas le résultat de mon étude, au départ on gagne énormément et à la fin, on stagne tout proche du cadeau.
Première étape : Une requête basique
Code:
import urllib2 url = 'http://www.google.fr' req = urllib2.Request(url) reponse = urllib2.urlopen(req) html = reponse.read()
Cette fonction nous renvoie la réponse du serveur web mais ici nous voulons récupérer le html de la page, on utilise reponse.read pour cela.
Remarque: Pour des requêtes simples comme celle-ci, on peut utiliser directement urllib2.urlopen(url) sans passer par request.
Deuxième partie : Une requête POST
Grâce à la première partie, vous êtes capable de faire des requêtes GET, mais comment faire les POST ? C'est ce qu'on l'on va voir maintenant.
Code:
import urllib import urllib2 url = 'http://server.com/post_data.php' values = {'name':'Pasterp', 'pass':'kangourou', 'message':'Python !'} #Valeurs d'un formulaire web data = urllib.urlencode(values) req = urllib2.Request(the_url, data) handle = urllib2.urlopen(req)
On utilise urlib.urlencode pour encoder ces valeurs avant de les passer à la fonction urllib2.Request et ensuite on agit de même que dans la première partie.
Troisième partie : Mais qui sommes nous ?
Les sites web peuvent vous identifier grâce aux headers de vos requêtes web tel que user-gent qui identifie votre navigateur, referer qui permet au site de savoir d'ou vous venez...
Nous allons pour indiquer au site ces infos reprendre l'exemple précédant.
Code:
import urllib import urllib2 url = 'http://server.com/post_data.php' user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' values = {'name':'Pasterp', 'pass':'kangourou', 'message':'Python !'} #Valeurs d'un formulaire web headers = { 'User-Agent' : user_agent } data = urllib.urlencode(values) req = urllib2.Request(the_url, data, headers) handle = urllib2.urlopen(req)
Quatrième partie :Miam ! Des cookies !
Les sites web utilisent les cookies pour vous reconnaitre de manière plus sécurisée, par exemple lors de la connexion sur un site un cookies se crée pour que le site sache que vous êtes connecté tandis que vous changer de pages.
Code:
import urllib import urllib2 import cookielib user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' cookiejar = cookielib.CookieJar() urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar)) urlOpener.addheaders = [{'User-agent', user_agent}] url = 'http://www.google.fr' req = urllib2.Request(url) reponse = urlOpener(req) html = reponse.read()
Conclusion :
Vous avez desormais les bases essentielles pour programmer des requetes web en python, vous pouvez ainsi vous fabriquer votre propre fuzzer web, un bot web ou plein d'autres choses.
Commentaire