上下文:
我正在對OpenID使用者(實際上是StackExchange)進行後端訪問。如果我要爲用戶提供所有可能的OpenID提供程序,那麼在提交Open ID URL之前,我必須模擬瀏覽器交互以對每個提供程序進行身份驗證。不過,我認爲我可以通過訪問用戶網絡瀏覽器的現有cookie來縮短這一短缺時間,並直接通過URL向消費者請求認證。如何使用Python從網絡瀏覽器獲取cookie?
問題:
如何訪問用戶的網絡瀏覽器的cookie?我很少看到有關如何使用Python進行操作的信息。這previous question部分回答了關於Firefox的問題,特別指出她下面的the code sample。但是,我需要從Linux上最常用的Web瀏覽器訪問Cookie,而不僅僅是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
問:是否提供的Python模塊,可以方便從網絡瀏覽器的cookie提取?否則,我應該如何調整上述代碼以從其他瀏覽器(如Chromium等)中繪製Cookie?
附註:或者我正在查看最初的問題(即向OpenID提供程序進行身份驗證)是否有錯誤的方法? (我覺得我只是另一種替代的問題。)
你可能想看看http://stackoverflow.com/questions/4634408/can-non-web-applications-use-openid – Amber 2012-01-11 00:25:20
或http:// stackoverflow。 com/questions/921532/retrieveing-cookies-python – monkut 2012-01-11 01:07:55
@monkut:實際上,只有在整個會話中保持cookie的狀態,我已經知道該怎麼做。我想要做的是從瀏覽器本身獲取cookie。 – Benjamin 2012-01-11 01:24:29