2012-01-11 101 views
7

上下文:
我正在對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提供程序進行身份驗證)是否有錯誤的方法? (我覺得我只是另一種替代的問題。)

+1

你可能想看看http://stackoverflow.com/questions/4634408/can-non-web-applications-use-openid – Amber 2012-01-11 00:25:20

+0

或http:// stackoverflow。 com/questions/921532/retrieveing-cookies-python – monkut 2012-01-11 01:07:55

+0

@monkut:實際上,只有在整個會話中保持cookie的狀態,我已經知道該怎麼做。我想要做的是從瀏覽器本身獲取cookie。 – Benjamin 2012-01-11 01:24:29

回答

11

我創建了一個模塊來完成這一功能,可在這裏:https://bitbucket.org/richardpenman/browsercookie/

用法示例:

import requests 
import browsercookie 
cj = browsercookie.chrome() 
r = requests.get('http://stackoverflow.com', cookies=cj) 

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

+0

你的模塊在哪裏? – 2015-10-15 12:14:10

+1

鏈接已更新。也可以使用'pip install browsercookie'。 – 2015-12-26 12:55:15

+4

現在請注意其他人:本模塊不支持當前的Chrome版本。 – 2017-03-09 15:54:32