首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
bello
›
全部回复第 1 页 / 共 1 页
回复总数
1
2016-02-18 00:00:09 +08:00
回复了
bello
创建的主题
›
Python
›
python requests 模拟登录成功(非 session)后再次请求网站 cookies 被更换,但是用 Session 就可以正常使用,请问下这个过程 Session 做了什么?
自己研究了一下,明白了
原因:
1. 中间有页面跳转,这些跳转页面的 cookies 没有获得。
2. response.cookies 每次返回的是该次服务器设置的 cookies,而非累积的(并不像请求中每次请求都将该 domain 下的所有 cookie 都带上),所以必须将每次服务器返回的 cookies 合并,才是该 domain 下的完整 cookies.
3. 由于之前获得的 cookie 不够完整,服务器检测 cookie 错误,所以重新发新的 cookie ,导致登录状态无法保持。
所以在这几个环节上, Session 主要完成了:
#合并新 reponse 的 cookies
self.cookies.update(new_response.cookies)
#从 response.history 中获得跳转页面设置的 cookies ,并合并到现有 cookies 中
if response.history:
for r in response.history:
self.cookies.update(r.cookies)
不知道理解得对不对,但是按照这个思路已经可以在不用 Session 的情况下保持登录状态了。
虽然还没有人回复,还是谢谢各位。
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
5553 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms ·
UTC 07:56
·
PVG 15:56
·
LAX 23:56
·
JFK 02:56
Developed with
CodeLauncher
♥ Do have faith in what you're doing.