对百度网盘批量转存的研究

Posted on Sep 20, 2014

前段时间想转存一些音乐,但是百度上转存工具没一个是能用的,于是萌生了自己写一个的念头。。(纯属闲着没事干

随便找了个资源

http://pan.baidu.com/share/link?shareid=140645&uk=1948590995

目测手机版应该更好研究,在手机上尝试了关闭javascript的支持,发现转存按钮无法点击,开启javascript时转存时未出现页面刷新,目测是基于ajax的转存。。

我们将网址改成

http://pan.baidu.com/wap/link?shareid=140645&uk=1948590995

将自己的百度账号登录

按下F12,在这里我用的的firefox。

在控制台标签,只选择网络

将下拉菜单中的记录请求和响应主机勾选

这下可以点击保存到百度云按钮了

这时发现多了几条请求

那个analytics是统计,不管他,点击transfer那条

有了抓包结果就好办多了。我使用了Snoopy类构造(项目地址 http://sourceforge.net/projects/snoopy/?source=directory

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php
set_time_limit(0);
uk='1948590995';
shareid='140645';
bdstoken='153b41d6d1802';
url='http://pan.baidu.com/share/transfer?from='.uk.'&shareid='.shareid.'&bdstoken='.bdstoken.'&channel=chunlei&clienttype=5&web=1';
include 'snoopy.class.php';
snoopy=new Snoopy;
postdata['path']='/';
postdata['async']='1';
postdata['r']='0.'.rand();
postdata['filelist']='["/我的文档/Hotel California-The Eagles.rar"]';
postdata['shareid']=shareid;
//postdata['bdstoken']='153b41d893fbd01802';snoopy->agent='Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; LG-F160K Build/JZO54K) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/4.3.16.2 (Baidu; P1 4.2.2)';
snoopy->rawheaders['X-Requested-With']='XMLHttpRequest';
snoopy->cookies['BDUSS']='dAAEAAABBW1QvAAAAAAAAMExHFTBMRxUNk';
snoopy->referer='http://pan.baidu.com/share/link?shareid=140645&uk=1948590995';
snoopy->submit(url,postdata);
results=snoopy->results;
echo $results;

返回

{“errno”:0,“task_id”:0,“info”:[{“path”:"/\u6211\u7684\u6587\u6863/Hotel California-The Eagles.rar",“errno”:0}]}

这就和之前结果一样啦~~~

转存成功,但是 $postdata['filelist']='["/我的文档/Hotel California-The Eagles.rar"]'; 是如何得到的,我甚至去阅读了几千行的js: http://pan.baidu.com/wapres/static/js/viewsingle_all.js

始终找不到 ["/我的文档/Hotel California-The Eagles.rar"],是否在源码里?

我是多么的笨啊啊啊啊啊啊,居然去翻那几千行的js看得那一脸泪。。

到了这里,大部分问题都解决了,也研究完了。

总结

提交URL:http://pan.baidu.com/share/transfer?from=UK号&shareid=shareid号&bdstoken=bdstoken(没有的话无法执行)&channel=chunlei&clienttype=5&web=1

提交COOKIES:BDUSS。。BDUSS的获取自行百度吧。。但是bdstoken的获取也在网页源码里ctrl+f搜索bdstoken就可以了。。

POST数据:

1
2
3
4
path=/  
async=1  
r=随机小数  
filelis=["/我的文档/Hotel California-The Eagles.rar"]     //这个可以在文件页面找到

至于批量,那应该是更简单的事情了。。自行发挥吧。。

菜鸟没事闹着玩,大神灰过。。

如果有错欢迎指教喵