[英]Trying to load cookie into requests session from dictionary
我正在使用 python 请求库。 我正在尝试使用字典中的 cookie 加载请求 session:
cookie = {'name':'my_cookie','value': 'kdfhgfkj' ,'domain':'.ZZZ.org', 'expires':'Fri, 01-Jan-2020 00:00:00 GMT'}
我试过了:
s.cookies.set_cookie(cookie)
但这给出了:
File "....lib\site-packages\requests\cookies.py", line 298, in set_cookie
if hasattr(cookie.value, 'startswith') and cookie.value.startswith('"') and cookie.value.endswith('"'):
AttributeError: 'dict' object has no attribute 'value'
我究竟做错了什么?
cookies
具有类似于字典的界面,您可以使用update()
:
s.cookies.update(cookie)
或者,只需将cookies
添加到下一个请求:
session.get(url, cookies=cookie)
它将“合并”请求cookie和会话cookie,新添加的cookie将保留用于后续请求,另请参见:
对于多个 cookies,这似乎对我不起作用,它们只是被覆盖,所以最后添加的是 jar 中唯一的 cookie。
例如,我的多个 cookies(来自 Flaresolverr(我相信它与 selenium 相同的 output))在一个列表中输出多个字典,例如:
cookies = [
{
"name": "ASP.NET_SessionId",
"value": "SOMEVALUE",
"domain": "my.domain.co.uk",
"path": "/",
"expires": -1,
"size": 41,
"httpOnly": true,
"secure": false,
"session": true
},
{
"name": "__cfduid",
"value": "SOMEVALUE",
"domain": ".mydomain.co.uk",
"path": "/",
"expires": 1622898293.967355,
"size": 51,
"httpOnly": true,
"secure": true,
"session": false,
"sameSite": "Lax"
}
]
因此,如果我随后尝试将它们全部添加到 cookie jar 中,您会看到“ __cfduid
”是 jar 中唯一的 cookie:
r = requests.session()
for c in cookies:
r.cookies.update(c)
print(r.cookies)
<RequestsCookieJar[<Cookie domain=.mydomain.co.uk for />, <Cookie expires=1622898293.967355 for />, <Cookie httpOnly=True for />, <Cookie name=__cfduid for />, <Cookie path=/ for />, <Cookie sameSite=Lax for />, <Cookie secure=True for />, <Cookie session=False for />, <Cookie size=51 for />, <Cookie value=SOMEVALUE for />]>
我也尝试过jar = requests.cookies.RequestsCookieJar()
和 jar.set(xxxx) 但它不喜欢非标准的 cookie 属性(例如 httpOnly)
任何帮助将不胜感激,谢谢!
session.cookies.set_cookie的参数应该是Cookie object ,不是dict (of cookie)
如果你想从 dict 添加新的 cookie 到session.cookies
,你可以使用:
要么
更详细的请参考我另一个帖子的回答
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.