JS实现百度网盘任意文件强制下载功能


Posted in Javascript onAugust 31, 2018

代码:

//get file list data
var data=require("system-core:context/context.js").instanceForSystem.getList().listView.listsData;
//calculate sign
function base64Encode(r){var t,e,a,c,n,o,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(a=r.length,e=0,t="";a>e;){if(c=255&r.charCodeAt(e++),e==a){t+=h.charAt(c>>2),t+=h.charAt((3&c)<<4),t+="==";break}if(n=r.charCodeAt(e++),e==a){t+=h.charAt(c>>2),t+=h.charAt((3&c)<<4|(240&n)>>4),t+=h.charAt((15&n)<<2),t+="=";break}o=r.charCodeAt(e++),t+=h.charAt(c>>2),t+=h.charAt((3&c)<<4|(240&n)>>4),t+=h.charAt((15&n)<<2|(192&o)>>6),t+=h.charAt(63&o)}return t}
function u(j,r){var a=[];var p=[];var o="";var v=j.length;for(var q=0;q<256;q++){a[q]=j.substr((q%v),1).charCodeAt(0);p[q]=q}for(var u=q=0;q<256;q++){u=(u+p[q]+a[q])%256;var t=p[q];p[q]=p[u];p[u]=t}for(var i=u=q=0;q<r.length;q++){i=(i+1)%256;u=(u+p[i])%256;var t=p[i];p[i]=p[u];p[u]=t;k=p[((p[i]+p[u])%256)];o+=String.fromCharCode(r.charCodeAt(q)^k)}return o}
var sign=base64Encode(u(yunData.sign5, yunData.sign1)).replace(/=/g,"%3D").replace(/\+/g,"%2B");
//downloader
function down(index){$.ajax({type:"GET",url:"/api/download?sign="+sign+"×tamp="+yunData.timestamp+"&fidlist=%5B"+data[1].fs_id+"%5D",success:function(d){console.warn(d.dlink
[index-1].dlink);}});}

用法:

JS实现百度网盘任意文件强制下载功能

1.进入网盘文件目录。

JS实现百度网盘任意文件强制下载功能

2.F12打开调试工具将代码粘贴到控制台并回车。

JS实现百度网盘任意文件强制下载功能

3.在控制台输入down(文件序号)命令,回车即可得到文件的下载地址,可复制到任何下载工具满速下载。

“文件序号”对应文件目录列表,下载第一个文件就输入down(1),第二个文件就输入down(2),依此类推。注意括号是英文括号。

原理:

下载链接获取接口:

通过监听与其服务器交互的请求数据分析得到获取下载链接的接口,在源文件中搜索发现了接口的调用过程。

接口:/api/download?sign=***×tamp=***&fidlist=%5B***%5D"

在去除了一些不影响调用结果的参数后得知调用接口主要需要以下参数:

1.sign(用户身份)
2.timestamp(时间戳)
3.fs_id(文件标识码)

sign的计算:

算法在源文件中可以发现,“var sign=”搜索全部文件即可发现算法代码,将其复制调用就能计算出sign的值。

timestamp的获取:

该值保存在全局变量中,直接yunData.timestamp就可以拿到。

fs_id的获取:

调用“context.js”脚本就可以拿到文件列表,文件列表中保存了当前目录所有文件的fs_id。

var data=require("system-core:context/context.js").instanceForSystem.getList().listView.listsData;

总结

以上所述是小编给大家介绍的JS实现百度网盘任意文件强制下载,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
Element Input组件分析小结
Oct 11 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
分享JS表单验证源码(带错误提示及密码等级)
Jan 05 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 Javascript
node.js文件的复制、创建文件夹等相关操作
Feb 05 Javascript
angular1.x ui-route传参的三种写法小结
Aug 31 #Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
Aug 31 #Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 #Javascript
Vue 莹石摄像头直播视频实例代码
Aug 31 #Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
Aug 31 #Javascript
Vue加载组件、动态加载组件的几种方式
Aug 31 #Javascript
Bootstrap模态对话框用法简单示例
Aug 31 #Javascript
You might like
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
教你学会使用Python正则表达式
2017/09/07 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
某公司面试题
2012/03/05 面试题
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
食品安全标语
2014/06/07 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android