Comment recevoir des cookies de navigateur web avec Python?
Contexte:
Je suis en train de travailler sur une interface d'accès à un OpenID consommateur (StackExchange en fait). Si je suis à fournir tout OpenID, les fournisseurs d'une option à l'utilisateur, alors je dois simuler interagir avec le navigateur pour authentifier à chacun de ces fournisseurs avant que je puisse les soumettre à l'Open ID de l'URL. Cependant, je pense que je pourrais couper court en accédant à la les témoins existants de l'utilisateur du navigateur web, et demande l'authentification pour le consommateur directement à l'URL.
Problème:
Comment accéder à la web de l'utilisateur-cookies du navigateur? J'ai vu très peu d'informations sur la façon de le faire avec Python. Cette question précédente partie des réponses, le problème en ce qui concerne Firefox, pointant en particulier à l'exemple de code son ci-dessous. Cependant, j'aurais besoin d'accéder à des cookies à partir de la plupart des navigateurs web courants utilisés sur Linux, et pas seulement Firefox.
#! /usr/bin/env python
# Protocol implementation for handling gsocmentors.com transactions
# Author: Noah Fontes nfontes AT cynigram DOT com
# License: MIT
def sqlite2cookie(filename):
from cStringIO import StringIO
from pysqlite2 import dbapi2 as sqlite
con = sqlite.connect(filename)
cur = con.cursor()
cur.execute("select host, path, isSecure, expiry, name, value from moz_cookies")
ftstr = ["FALSE","TRUE"]
s = StringIO()
s.write("""\
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file! Do not edit.
""")
for item in cur.fetchall():
s.write("%s\t%s\t%s\t%s\t%s\t%s\t%s\n" % (
item[0], ftstr[item[0].startswith('.')], item[1],
ftstr[item[2]], item[3], item[4], item[5]))
s.seek(0)
cookie_jar = cookielib.MozillaCookieJar()
cookie_jar._really_load(s, '', True, True)
return cookie_jar
Question: est-Python fournir un module qui permet de faciliter le cookie d'extraction dans les navigateurs web? Sinon, comment dois-je adapter le code ci-dessus pour dessiner des cookies à partir d'autres navigateurs comme Chrome, etc.?
PS: Ou suis-je en regardant le problème initial (c'est à dire s'authentifier auprès du fournisseur OpenID) dans le mauvais sens? (Je sens que je suis juste de remplacer un problème par un autre.)
ou stackoverflow.com/questions/921532/retrieving-cookies-python
fait que l'on n'est pertinente que pour garder les témoins tout au long des séances, je sais déjà comment faire. Ce que j'essaie de faire est d'obtenir les cookies du navigateur lui-même.
vous pouvez consulter le Cookie module pour récupérer les cookies. thiscookie = Cookie.SimpleCookie() si u'HTTP_COOKIE' en os.environ.keys(): thiscookie.de la charge(de l'os.environ[u'HTTP_COOKIE'])
la partie intéressante est le
HTTP_COOKIE
dans os.environ.keys()
, avez-vous plus d'info quelque part à ce sujet? Merci.OriginalL'auteur Benjamin | 2012-01-11
Vous devez vous connecter pour publier un commentaire.
J'ai créé un module pour faire exactement cela, disponible ici: https://bitbucket.org/richardpenman/browsercookie/
Exemple d'utilisation:
python3 fourche: https://github.com/borisbabic/browser_cookie3
Le lien est mis à jour. Également disponible à l'aide
pip install browsercookie
.Note pour les autres à venir sur ce post maintenant: Le module ne prend pas en charge actuelle de Chrome versions.
Le python version 2 (bitbucket.org/richardpenman/browsercookie) fonctionne très bien pour moi dans le dernier Chrome (57)
Ne fonctionne pas pour moi en Chrome 62
OriginalL'auteur hoju