Как получить куки из веб-браузера с помощью Python?

Контекст:
Я работаю над бэкэнд-доступом к потребителю OpenID (по сути, StackExchange). Если я хочу предоставить пользователю все возможные провайдеры OpenID в качестве опции, то мне придется имитировать взаимодействие браузера для аутентификации с каждым из этих провайдеров, прежде чем я смогу отправить URL Open ID. Однако, я думаю, я мог бы сократить этот процесс, получив доступ к существующим cookies веб-браузера пользователя, и запросив аутентификацию потребителя непосредственно с URL.

Проблема:
Как получить доступ к файлам cookie веб-браузера пользователя? Я видел очень мало информации о том, как это сделать с помощью Python. Этот предыдущий вопрос частично отвечает на проблему в отношении Firefox, особенно указывая на пример кода, приведенный ниже. Однако мне нужно получить доступ к cookies из наиболее распространенных веб-браузеров, используемых в Linux, а не только из 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 из веб-браузеров? Иначе, как мне адаптировать приведенный выше код для извлечения cookie из других браузеров, таких как Chromium и т.д.?

PS: Или я неправильно смотрю на исходную проблему (т.е. аутентификацию в провайдере OpenID)? (Мне кажется, что я просто заменяю одну проблему другой.)

11
задан Community 23 May 2017 в 12:24
поделиться