Bối cảnh:
Tôi đang làm việc trên truy cập phụ trợ cho người tiêu dùng OpenID (StackExchange trên thực tế). Nếu tôi cung cấp tất cả các nhà cung cấp OpenID có thể làm tùy chọn cho người dùng, thì tôi phải mô phỏng tương tác trình duyệt để xác thực cho từng nhà cung cấp này trước khi tôi có thể gửi URL ID mở. Tuy nhiên, tôi nghĩ rằng tôi có thể cắt ngắn điều này bằng cách truy cập các cookie hiện có của trình duyệt web của người dùng và yêu cầu xác thực trực tiếp cho người tiêu dùng bằng URL.Làm cách nào để tải cookie từ trình duyệt web bằng Python?
Vấn đề:
Làm thế nào để truy cập các tập tin cookie của trình duyệt web của người dùng? Tôi đã nhìn thấy rất ít thông tin về cách làm điều đó với Python. Điều này previous question một phần câu trả lời vấn đề liên quan đến Firefox, chỉ đặc biệt là the code sample của cô dưới đây. Tuy nhiên, tôi sẽ cần phải truy cập cookie từ các trình duyệt web phổ biến nhất được sử dụng trên Linux, không chỉ 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
Câu hỏi: Python có cung cấp mô-đun có thể hỗ trợ khai thác cookie từ trình duyệt web không? Nếu không, tôi nên điều chỉnh mã trên như thế nào để vẽ cookie từ các trình duyệt khác, như Chromium, v.v ...?
PS: Hoặc tôi có đang xem xét vấn đề ban đầu (tức là xác thực nhà cung cấp OpenID) không đúng cách? (Tôi cảm thấy tôi chỉ thay thế một vấn đề bằng cách khác.)
Bạn có thể muốn xem http://stackoverflow.com/questions/4634408/can-non-web-applications-use-openid – Amber
hoặc http: // stackoverflow. com/questions/921532/retrieving-cookies-python – monkut
@monkut: thực tế là chỉ có liên quan để giữ cookie trong suốt các phiên mà tôi đã biết cách thực hiện. Những gì tôi đang cố gắng làm là lấy cookie từ chính trình duyệt. – Benjamin