一张图让你了解百度这个企业有多恶心。立减0.46元还要贴个标签提示?消费200多差这几毛钱?
截图来自于度盘会员下单页,不吹不黑点进去自己看:https://pan.baidu.com/buy/checkoutcounter
不多吐槽了,开始教程吧。
一、度盘大文件直接下载
这是正常操作的结果,会提示安装客户端才能下载。
分析页面源码可以发现不过是个脚本检查,检查文件的大小,IF大于50M就弹出提示。
要绕过检查那么直接调用它最终的下载方法就可以了。
为了方便小白这里就直接贴出调用浏览器下载的代码:
$.ajax({ type: "POST", url: "/api/sharedownload?sign="+yunData.SIGN+"×tamp="+yunData.TIMESTAMP, data: "encrypt=0&product=share&uk="+yunData.SHARE_UK+"&primaryid="+yunData.SHARE_ID+"&fid_list=%5B"+yunData.FS_ID+"%5D", dataType: "json", success: function(d){ window.location.href = d.list[0].dlink; } });
使用ajax post请求下载链接,然后通知浏览器发起下载。
将代码粘贴到开发者工具的控制台里,回车执行就可以自动建立下载了。
特意说明一下,这里得到文件下载链接不可复制到其它下载工具下载,以前可以现在被限制了,会提示403。
原理是百度服务端的验证,下载请求需要附加登录的用户cookie才能通过验证,对接服务端文件传输,迅雷这种外部下载工具是拿到不你浏览器中存储的cookie的。
然而有时并没有这么简单。
如果你执行了命令后出现上图的输出信息,意味着你的下载动作太频繁了,需要验证码。
正常来说应该是弹出一个验证码提交框,但我们是通过命令执行去得到下载结果就不会有任何的视图层提示。
解决这个问题请参考以下方式:
我们要做的就是给要下载的文件生成一个新的下载入口,因为当前入口被服务端限制了直接下载的方式,必须验证码验证解除限制。
只是一个下载入口的问题。这里说的“下载入口”指的是文件下载页面的地址。
先将要下载的文件保存到自己的网盘,然后再将其分享出去(请选择公开分享),即可得到文件的另一个下载入口。
转到新的下载页面执行以上命令操作可以成功的建立下载了。
二、文件下载提速。
相比下载大文件,提速更有技术难度。大文件下载限制是客户端本地脚本控制的,度盘资源的下载速度是受百度服务端的限制。
入侵B度服务器修改限制的下载速度?有这种能力的人肯定开得起会员,不用瞎折腾了。
我也实在没试出现在还有什么方法可以在不开会员的情况下实现满速下载,只有这么个方法:
使用系统自带的Edge浏览器下载,速度有明显提升,不过撑死200K/s,感觉已经很极限了,大家可以测试一下,总比几十K/s要好。
30号补更:
$.ajax({ type: "POST", url: "/api/sharedownload?sign="+yunData.SIGN+"×tamp="+yunData.TIMESTAMP, data: "encrypt=0&product=share&uk="+yunData.SHARE_UK+"&primaryid="+yunData.SHARE_ID+"&fid_list=%5B"+yunData.FS_ID+"%5D", dataType: "json", success: function(d){ console.log(d.list[0].dlink); } });
建议在console输出下载地址,直接调用浏览器下载得到的下载地址是二次解析后的。
之前以为外部下载工具复制链接下载总是403是cookie的关系,后来发现被自己误导了,直接用console命令输出下载的链接可直接使用外部下载工具慢速下载。
注意:如果使用迅雷下载依旧403,可能是USER-AGENT的原因 - “Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 TBC/1.1.0.20 Thunder/10.0.3.88”
可以用一些网络代理工具修改迅雷的UA,如Charles,去掉“TBC/1.1.0.20 Thunder/10.0.3.88”这些字符再试试看。