前言
百度的模拟登陆网上有很多的教程,大家可以看下.几乎所有的教程都是到error_no=0,就说已经登录成功了.关于这个问题我开始也以为是这样的,不过自己最近在一次尝试登录百度网盘的时候发现,仅仅是error_no=0,是无法登录到百度的任何产品的.很多文章误人太深
在这里就不得不说一下python requests的session了
requests的session在一定的程度上可以很好的管理cookies,但是他是不完美的,我目前使用的是Python2,很多的时候requests的session不能很好的管理登录的cookies
说一下百度网盘的登录:
正常的最后的一个post到https://passport.baidu.com/v2/api/?login
发送后会返回一个js,使用正则去提取这个js中的url,再次发送,会接着返回一段js,这一段js对于使用requests的爬虫的话没有什么作用.
然后网页端网盘会跳到https://pan.baidu.com/disk/home
这里,这里就会结果3次的重定向,才会到登录的home页上去,没有这一步,即使是error_no=0,也无法登录到百度的相关产品上去的
GET https://pan.baidu.com/disk/home
第一次重定向:
url = "https://passport.baidu.com/v3/login/api/auth/"
querystring = {"return_type": "5", "tpl": "netdisk", "u": "https://pan.baidu.com/disk/home"}
</