python - 为什么在 python 中向 http cookiejar 添加 cookie 如此困难?我总是以 CookieError: Attempt to set a reserved key 'domain' 结束
问题描述
我已经阅读了我能找到的与该主题相关的所有问题,但没有一个是有帮助和/或相关的。
我正在使用带有 Asyncio 和 aiohttp 的 playwright 来自动化一些基于 Web 的任务。该工作流程的一部分涉及获取和重用 cookie。我使用剧作家context.storage_state()
从存储中获取所有内容。它返回 adict
存储中的所有内容,如下所示:
{
"cookies": [
{
'name': 'cookie_name',
'value': 'cookie_value',
'domain': '.website.com',
'path': '/',
'expires': 1234567890,
'httpOnly': False,
'secure': False,
'sameSite': 'None'
},
...
],
"origins": [
{
"origin": "https://www.website.com",
"localStorage": [
{
"name": "name",
"value": "value"
},
...
]
}
]
}
我使用 cookie 抓取storage['cookies']
它们,然后遍历它们,尝试将每个添加到 中aiohttp.CookieJar()
,我很确定它只是一个http.cookiejar.CookieJar()
对象。每次我尝试将其中一个字典作为 cookie 加载到 cookie 罐中时,我都会得到一个
CookieError: Attempt to set a reserved key 'domain'
我查看了 RFC2109 标准和源代码:https ://github.com/python/cpython/blob/3.9/Lib/http/cookies.py
无论我尝试什么,我都会遇到错误。
我努力了:
jar = aiohttp.CookieJar() # basically http.cookiejar.CookieJar I think
storage = context.storage_state()
for cookie in storage['cookies']:
jar.update_cookies(cookie)
for item in storage['cookies']:
cookie = BaseCookie().load(str(item)) # not even sure why I tried this
jar.update_cookies(cookie)
for item in storage['cookies']:
cookie = BaseCookie().load(item)
jar.update_cookies(cookie)
for item in storage['cookies']:
cookie = SimpleCookie().load(item)
jar.update_cookies(cookie)
我还尝试从 cookie 字典中删除所有“保留”键,即使这是 cookie 数据的大部分。无论如何,它都不会让我将实际的 cookie 加载到 cookie 罐中。我通读了 HTTP cookie.py 源代码和文档,据我所知,其中没有任何内容可以解释我正在做的事情有什么问题。
任何人都能够在不通过会话的情况下将 cookie 加载到 cookie jar 对象中吗?
解决方案
推荐阅读
- python-3.x - Pandas-增量(年,月)多索引和年和月列
- android - 我在哪里可以找到有关创建问题弹出窗口的信息?
- email - 我可以将文件 (PDF) 附加到 customer.io REST API 吗?
- angular - 使用 HashLocationStrategy 通过 Angular 路由处理 OAuth2 隐式重定向
- google-app-maker - 使用 onValueChanged 检索 UserPicker Widget emnail 字符串
- java - 什么可以使这段代码更有效(对于 Hackerrank 问题)?
- assembly - 如何将双字数除以一个字数?
- javascript - 使 JavaScript 间隔与实际时间同步
- javascript - Vanilla Javascript - window.onscroll。为什么 ”" 滚动时不显示
- prolog - 如何从此代码中删除回溯?