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

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.