Simuler un cookie avec Mechanize en python

Il peut arriver que l’on ai besoin de simuler la présence d’un cookie lors de l’exploration d’un site avec Mechanize .
Un exemple tout bête l’autre jour j’essayais de me connecter à un site qui demandait une vérif d’âge, impossible de simuler le click sur “ENTER” car le bouton était géré par Jquery (et Mechanize ne fait pas de js).
Après quelques debug je me suis aperçu que le site stockait dans un cookie la confirmation d’âge sous la forme “age_verified”, valeur 1.

il suffisait donc d’avoir ce cookie et le site nous laissait tranquille.
Avec Mechanize il est possible d’ajouter un cookie dans son cookie jar, voici comment:

import mechanize
 
# Browser use mechanize
br = mechanize.Browser()
 
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
 
# add a cookie to cookie jar
cj.set_cookie(cookielib.Cookie(0, 'age_verified', '1', '80', False, 'www.nom_de_domaine.com', True, False, '/', True, False, None, False, None, None, None))
 
# Browser options
br.set_handle_redirect(True)

Où:
age_verified : SID du cookie
1: valeur
80: port
www.nom_de_domaine.com : le nom de domaine du site auquel le cookie appartient
/: path du cookie

Un peu plus sur les options:

cookielib.Cookie(version=0, name='SID', value=self._sid, port=None, port_specified=False, domain='.google.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires='1600000000', discard=False, comment=None, comment_url=None, rest={})

Quelques liens:
http://nullege.com/codes/search/cookielib.Cookie
http://docs.python.org/library/cookielib.html
http://wwwsearch.sourceforge.net/mechanize/hints.html

Articles similaires:

  1. Résoudre les problèmes d’encoding avec Python Mechanize
  2. Quand Mechanize bouffe toute votre RAM et que vous ne savez pas pourquoi….
  3. Travailler moins pour gagner plus, en 15 minutes avec Python fabric
  4. Valider une adresse email avec une regex en Python
  5. Filtrer les propos pornos avec Python

flattr this!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Jouer à mario en attendant que les autres répondent