【问题标题】:Using Chrome's cookies in Python-Requests在 Python-Requests 中使用 Chrome 的 cookie
【发布时间】:2012-07-27 05:00:42
【问题描述】:

我正在尝试使用从 Chrome 会话中获得的 cookie 登录 http://www.steampowered.com 网站。

一旦我获取了所有cookie 表的数据,使用命令SELECT * FROM cookie WHERE host_key LIKE '%steam%' 和列名:PRAGMA table_info(cookie) 并使用列表理解对所有数据进行排序,我不知道如何传递它全部发送到requests,以便 cookie 可用。

requestdocs 表示您需要传入一个字典,即cookies={'cookies':'are_working'},但随后一些键names 会相互覆盖,因为其中一些names 是: Steam_Language,虽然他们是不同的主机。

编辑:刚刚发现 How to add cookie to existing cookielib CookieJar instance in Python? 可能对我有帮助,但我不知道如何格式化 cookielib 的 Chrome cookie

我的问题是:如何将几个不同的网站价值 cookie 传递给 requests

【问题讨论】:

  • 为什么在您(一次)只向一个域发出请求时将 cookie 传递给所有域?
  • 我认为大约有 4 种不同的 cookie 需要传递到站点,我不确定如何在请求中传递它们。

标签: python google-chrome cookies python-requests steam


【解决方案1】:

我创建了a module to load cookies from Firefox

请求的示例用法:

import requests
import browser_cookie
cj = browser_cookie.firefox()
r = requests.get(url, cookies=cj)

【讨论】:

  • pypi 条目是browsercookie,它似乎只是在撰写本文时(2017-03)是 python2x。
【解决方案2】:

请记住,您正在尝试做一些 HTTP 规范有意阻止您做的事情(即将 cookie 发送到它们不是来自的域)。所以你可能从一开始就注定要失败。更糟的是,我粗略地看了一下蒸汽动力工具的登录方式,你的工作已经完成了。

回到你的问题...

现在,假设您的蒸汽驱动会话 cookie 是有效的(它们可能不是基于登录页面执行的加密、密钥共享和验证码方法),您可能只需提供一个有效的 cookie 即可使用请求库登录dict 作为文档状态。

my_cookies = {'cookiename1': 'cookievalue1', 'cookiename2': 'cookievalue2'}
response = requests.get(
    'http://www.steampowered.com/mystuff',
    cookies=my_cookies)

另外,我不知道您从中获取 cookie 的数据库中存储了哪些数据,但请记住,它们可能存储了带有“Set-Cookie”标头的所有元数据(到期、路径、域等)。这是用户代理(Chrome、IE、请求库等)用来确定在请求中发送哪些 cookie 但不包含在请求中的信息。 'Cookie' 标头只有名称=值对。这就是您需要在 cookie 字典中提供的全部内容。

而且,如果您有两个同名的 cookie,只需选择一个。因为最终,很可能只会评估一个,否则服务器将简单地返回错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-07
    • 2023-03-09
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多