一个基于python的 - 百度网盘下载器
本帖最后由 juedi998 于 2017-5-14 00:46 编辑大家好啊,貌似好久没发过帖子了,今天心血来潮,写了个百度云盘的下载器,当然我知道论坛里已经有不少啦,但我今天是用python编写的,写得马马虎虎的,但还是分享出来吧,程序目前仅支持公开分享的文件下载,下载同时也提供了转换后的直连,你可以直接复制那个直连到IDM或迅雷等其它下载工具使用,因为百度限速的关系,我本地测试下载速度仅仅只有100多KB左右,还是不稳定的,大的文件迟迟没反应(要崩溃的节奏呀),但用IDM速度溜得上天,所以大家知道啦,另外我说说思路吧:
1、必备工具:
1.抓包工具(要编写爬虫,这似乎必不可少),我用的是Fiddler,你也可以使用Chrome的开发者工具。
2.Chrome浏览器 + 油猴插件(可以不选择插件)俗话说得好,有把好的工具,干起活来总能让你感觉事半功倍呀!我是利用了油猴的下载助手里的显示链接找到的接口,当然,这个接口完全可以通过抓包取得,但但,,,有工具你不用你非要造轮子吗?哈哈,
3.python + pycharm (当然你可以选用其它语言呀,这里只是提供个案例罢了),没有开发工具的话,还玩啥?
2、So....... 我们开始吧,,,,
1.通过点击下载助手我找到了这么一个接口:https://pan.baidu.com/api/sharedownload?sign={}×tamp={}&bdstoken={}&channel=chunlei&clienttype=0&web=1&app_id=250528&logid={} 该接口用于获取文件真实地址,前面3个参数是必须的,后面的参数是死的,不用管,其中:sign、timestamp、bdstoken都可以在主页面上获取到,最后的logid参数应该是你登录的ID凭据吧,反正我试过不写也没啥问题。
如图所示,它还需要一堆postData呢,其实也没啥的,因为也能在页面找到呀,但需注意的是,它们的命名方式可不一样哟,比如:primaryid ---》shareid,fid_list ---》fs_id,通过正则就能轻松抓到,另外,值得注意的是,cookies,在post的时候必须带上BAIDUID,其它的可以不要,该ID在百度.caom可以获取到,也就是说要在第一步执行这个请求,取得cookies后就不需要理会了。
2.顺便讲一下该接口返回的错误代码的意义,目前我只看到了3个错误代码,你可以调试出更多,我相信,错误码:erron:2 该错误码表示没有请求成功,erron:-20表示请求量多大需要输入验证码,erron:211表示整个页面已经过期需要刷新,我们可以根据这些错误码决定程序的走向,实现智能下载,当然就像前面说的,应该还有很多错误码的,比如非公开的文件,或文件夹,这些返回的状态码都不一致的,大家可以自己挖掘。
3.当短时间內多次访问上面的接口将触发erron:-20的错误,即需要输入验证码,我通过抓包,找到了两个验证码的接口,分别是:https://pan.baidu.com/api/getvcode?prod=pan (后面还有的,但仅仅只是获取Token就不需要后面的参数了,prod是必须的) 另一个是:https://pan.baidu.com/genimage?{}(该接口主要参数为上一个接口取得的Token),该参数将会被api/sharedownload页面需要
如上图所示,接口返回的是一组json类型的数据,可以通过json解析器转换为json直接索引vcode的值即可。
取得验证码的token后直接请求验证码图片地址并以流方式写入到文件即可。
4.填写完验证码后,需要再次请求api/sharedownload页面,这次请求,需带上验证码的参数。
当你看到服务器返回如上图的所示的页面后,表示你已经成功了,文件的真实链接就在这个json里面,你只需将它提取出来即可,下图是我测试下载的截图,如开始说的那样,度娘限速的厉害,只有100多KB左右的速度,大家完全可以用来转换直连,哈哈,那么教程到此结束,如果您有更好的方案,欢迎留言,非公开分享的版本将在下次更新,注意:本程序基于python3.6开发,请务必安装好相应模块,需要安装的模块有:requests、PIL、tqdm, 其中PIL模块在3.6中已经集成。
源码站内下载:
度娘盘免CB下载通道:http://pan.baidu.com/s/1i5Do3Q1 密码: fn2g
如果觉得本方案对您有用,希望大家打赏点CB哦!哈哈哈。。。。 夜袭少妇寨 发表于 2017-5-14 23:05
谢谢分享 有油候加idm够了 希望继续更新 哈哈
是的,有油猴 + idm就够了,我分享这个是为了让大家知道如何实现的过程,哈哈,这种软件网上已经泛滥了,但没几个人会告诉你哪来的结果{:1_912:} zhashia 发表于 2017-5-15 18:19
有些用油猴解析出来了下载地址但是那个地址是空的怎么解决
首先你确定要下载的文件是存在的,然后,据我所知,度娘下载的链接应该2-3个接口,其中我提供的这个接口用于下载单个文件的,诸如zip、图片、视频、音乐等都能调用这个接口下载,文件夹则为另一个接口,接口是固定的,不需要按照油猴返回的。 首个支持一下! 辛苦了谢谢分享~~ 这个有绕过限速吗 这个我的研究研究,谢谢 辛苦了谢谢分享~~ 辛苦了!看着这么长,有点眼花缭乱了 看着蛮复杂能做个下载工具吗。。。。感谢 感谢分享。