JCh*_*ris 6 python cookies python-requests
我在Python 3.5.1上,使用请求,相关部分代码如下:
req = requests.post(self.URL, data={"username": username, "password": password})
self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]}
Run Code Online (Sandbox Code Playgroud)
self.URL
有正确的页面,并且 POST 按预期工作,我做了一些打印来检查,它通过了。
我的输出:
Traceback (most recent call last):
File "D:/.../main.py", line 14, in <module>
m.login('first.last', 'pa$$w0rd!')
File "D:\...\moodle2.py", line 14, in login
self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]}
File "D:\...\venv\lib\site-packages\requests\cookies.py", line 287, in __getitem__
return self._find_no_duplicates(name)
File "D:\...\venv\lib\site-packages\requests\cookies.py", line 345, in _find_no_duplicates
raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path))
KeyError: "name='MOODLEID1_', domain=None, path=None"
Run Code Online (Sandbox Code Playgroud)
我正在尝试在运行时进行调试以检查req.cookies
有什么。但我得到的结果是令人惊讶的,至少对我来说。如果你设置一个断点self.cookies = {...}
并运行[(c.name, c.value, c.domain) for c in req.cookies]
,我会得到一个空列表,就像里面没有任何 cookie 一样。
该网站确实发送 cookie,使用 Chrome 扩展进行检查,我发现了 2 个“MOODLEID1_”和“MoodleSession”,那么为什么我没有收到它们呢?
该响应似乎不包含任何 cookie。Set-Cookie
在 中查找一个或多个标头req.headers
。
浏览器中存储的 Cookie 之所以存在,是因为响应中包含Set-Cookie
每个 Cookie 的标头。您必须找到服务器设置这些 cookie 的响应;显然这不是这个回应。
如果您需要跨请求保留这些 cookie(一旦设置),请使用requests.Session()
对象;这将保留响应返回的任何 cookie,并根据新请求再次发送它们。
归档时间: |
|
查看次数: |
10920 次 |
最近记录: |