如何使用Python从Web浏览器获取cookie?

Ben*_*min 11 python browser openid cookies

上下文:
我正在进行对OpenID使用者的后端访问(实际上是StackExchange).如果我要向用户提供所有可能的OpenID提供程序作为选项,那么在我提交Open ID URL之前,我必须模拟浏览器交互以对每个提供程序进行身份验证.但是,我想我可以通过访问用户网络浏览器的现有cookie,并直接使用URL向消费者请求身份验证来缩短这一空白.

问题:
如何访问用户的网络浏览器的cookie?我已经看到很少有关于如何使用Python的信息.这个上一个问题部分回答了有关Firefox的问题,特别指出她下面的代码示例.但是,我需要从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
Run Code Online (Sandbox Code Playgroud)

问题:Python是否提供了一个可以促进从Web浏览器中提取cookie的模块?否则,我应该如何调整上面的代码来从其他浏览器中绘制cookie,比如Chromium等?

PS:或者我是否以错误的方式查看最初的问题(即向OpenID提供商进行身份验证)?(我觉得我只是用另一个问题替换了问题.)

hoj*_*oju 18

我创建了一个模块来完成这个,可以在这里找到:https://bitbucket.org/richardpenman/browsercookie/

用法示例:

import requests
import browsercookie
cj = browsercookie.chrome()
r = requests.get('http://stackoverflow.com', cookies=cj)
Run Code Online (Sandbox Code Playgroud)

python3 fork: https ://github.com/borisbabic/browser_cookie3

  • 现在就看到其他人发现这个帖子:该模块不支持当前的Chrome版本. (5认同)