【发布时间】:2015-01-09 00:07:37
【问题描述】:
我正在使用基于this answer 的以下代码将身份验证cookie 存储在文件中。这让我可以避免每次运行程序时都必须登录。
现在,从常规会话 cookie 中获取 csrftoken 效果很好,但是当我尝试使用 csrf = s.cookies['csrftoken'] 从 cookiejar 中获取它时,我得到了
AttributeError: LWPCookieJar instance has no attribute '__getitem__'`
我知道发生这种情况是因为我将 s.cookies 视为一个列表,即使它现在是一个 LWPCookieJar 对象。我想这给我留下了两个选择:
要么:
- 从
LWPCookieJar对象中提取列表,然后获取csrf令牌很容易。 - 或者,找到适当的语法以直接从
LWPCookieJar中检索 csrf 令牌。
我该怎么做?
import os
import requests
from cookielib import LWPCookieJar
s = requests.Session()
s.cookies = LWPCookieJar('cookiejar')
if os.path.exists('cookiejar'):
# Load saved cookies from the file and use them in a request
print('loading saved cookies')
s.cookies.load()
else:
# Create a new cookies file and set our Session's cookies
print('saving cookies')
s.cookies.save()
r = s.get('http://httpbin.org/cookies')
print(r.text)
# Save the session's cookies back to the file
s.cookies.save()
【问题讨论】:
-
你能跑
dir(s.cookies)吗? -
@IanAuld:是的。它返回一个很长的列表。
-
这个列表包含了该对象的所有属性和方法。里面有没有听起来像它会做你想做的事?
标签: python cookies csrf cookiejar