上下文:
我正在进行对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 …Run Code Online (Sandbox Code Playgroud) 我登录了Firefox 的某个页面,我想获取cookie并尝试使用python-requests浏览网页。问题是在将 cookie 导入到请求会话后什么也没有发生(就像根本没有 cookie)。请求生成的 cookie 的结构也与 Firefox 不同。是否可以加载 FF cookie 并在请求会话中使用它?
到目前为止我的代码:
import sys
import sqlite3
import http.cookiejar as cookielib
import requests
from requests.utils import dict_from_cookiejar
def get_cookies(final_cookie, firefox_cookies):
con = sqlite3.connect(firefox_cookies)
cur = con.cursor()
cur.execute("SELECT host, path, isSecure, expiry, name, value FROM moz_cookies")
for item in cur.fetchall():
if item[0].find("mydomain.com") == -1:
continue
c = cookielib.Cookie(0, item[4], item[5],
None, False,
item[0], item[0].startswith('.'), item[0].startswith('.'),
item[1], False,
item[2],
item[3], item[3]=="",
None, None, {})
final_cookie.set_cookie(c)
cookie …Run Code Online (Sandbox Code Playgroud)