Skip to content
This repository has been archived by the owner on Oct 6, 2024. It is now read-only.

目前所有的接口都报错-6 #69

Open
MasterColor opened this issue Dec 27, 2017 · 11 comments
Open

目前所有的接口都报错-6 #69

MasterColor opened this issue Dec 27, 2017 · 11 comments

Comments

@MasterColor
Copy link

登陆完成之后 无论是list(pan.baidu.com) 还是download(pcs.baidu.com) 都会报错-6
有办法解决吗

@ly0
Copy link
Owner

ly0 commented Dec 27, 2017

测试了一下正常,清理一下PWD下的 .百度账号.cookies 的cookies文件重新登陆一下试试?

@MasterColor
Copy link
Author

不行 会因为errno = -6 抛出user unsigned 异常
报错-6是因为cookie 过期了吗

@ly0
Copy link
Owner

ly0 commented Dec 27, 2017

有可能,不大清楚百度抛出-6到底有多少含义

@MasterColor
Copy link
Author

找到原因了,获取bdstoken的时候,cookie里面需要有BAIDUID 和 OSUPPORT这两个字段;
没有的话,获取token 的接口就会返回 the first 什么什么的,
获取token失败之后 再调用一次就好了,
-6的问题就是因为 token 无效。
我在浏览器里面还测试了 在百度网盘的cookie里面修改 BDUSS,发现 百度网盘对bdstoken 和BDUSS应该有一个类似绑定关系的校验;
浏览器1获取到的bdstoken ,浏览器2获取到的BDUSS,拼在一起是不能访问百度网盘的,但是可以访问百度其他产品,且访问了其他百度产品之后就又可以访问百度网盘了

@ly0
Copy link
Owner

ly0 commented Dec 28, 2017

昂? 有点没看懂……可以提个PR嘛

@MasterColor
Copy link
Author

是这样的:
在你的python代码中,_initiate这个函数在执行_get_token这个方法时候,我断点调试发现这个值是一个错误提示(the fisrt two args should be string type:0,1!),并不是一个正确的,形如7ef98cc9fbbb5c1da63914d4a496da50 的token;

@MasterColor
Copy link
Author

在上述场景下,token 等于“the fisrt two args should be string type:0,1!”的时候, 登陆鉴权依然可以正常操作获取到BDUSS,但是再进一步操作调用百度网盘的接口的时候 就会报错-6;

@MasterColor
Copy link
Author

MasterColor commented Dec 28, 2017

我按照 #43 的代码,修改了一下 发现,确实可行;然后我又在浏览器测试了一下发现,当cookie 为空时(也就是第一次调用getToken接口时)返回结果也是”the fisrt two args should be string type:0,1!“,此时服务器会返回两个cookie:BAIDUID,OSUPPORT有了这两个cookie之后,再次调用该接口就能正常获取token了

@MasterColor
Copy link
Author

按上述操作拿到的token,拿去登陆之后,再调用百度网盘接口 就是可行的了,就不会报错-6了

@MasterColor
Copy link
Author

MasterColor commented Dec 28, 2017

在测试上述内容期间,我还测试了一下手动修改浏览器cookie里面的的BDUSS字段(修改后的是在python代码中获取到的BDUSS),发现修改之后,直接在浏览器访问BDUSS时也会报错-6,但是如果另开一个页面进入一下百度首页的话,就可以正常访问百度网盘了;
所以我怀疑百度网盘对BDUSS和bdstoken有一个类似于一对多的绑定关系,登陆百度网盘的时候服务端会对这个关系进行校验,也就是说在哪里访问百度网盘,就必须在哪里登陆百度
比如,即使是同一台PC上的 IE、Chrome、python环境、java环境等等 都是属于不同的地方(获取到的bdstoken是不一样的)

@ly0
Copy link
Owner

ly0 commented Dec 28, 2017

大致上看懂了,但是我这里没法复现问题,能否提交一个Pull Request?感激不尽

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants