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

 更新时间:2018年08月31日 15:45:03   作者:池温希傲  
这篇文章主要介绍了JS实现百度网盘任意文件强制下载 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

代码:

//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+"&timestamp="+yunData.timestamp+"&fidlist=%5B"+data[1].fs_id+"%5D",success:function(d){console.warn(d.dlink
[index-1].dlink);}});}

用法:

1.进入网盘文件目录。

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

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

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

原理:

下载链接获取接口:

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

接口:/api/download?sign=***&timestamp=***&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实现百度网盘任意文件强制下载,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 微信JSAPI支付操作需要注意的细节

    微信JSAPI支付操作需要注意的细节

    这篇文章主要介绍了微信JSAPI支付中所遇到的那些坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • js中substring使用示例详解

    js中substring使用示例详解

    substring是从中截取一段字符串,在组成一个新的字符串,这篇文章主要介绍了js中substring使用示例小结,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 利用原生JavaScript获取元素样式只是获取而已

    利用原生JavaScript获取元素样式只是获取而已

    原生JavaScript获取样式,是获取样式,不是设置样式。若没有给元素设置样式值,则返回浏览器给予的默认值
    2014-10-10
  • js只执行1次的函数示例

    js只执行1次的函数示例

    本文通过代码示例给大家展示了如何让javascript只执行一次,如何实现这种功能呢?通过下面这段就可以轻松搞定了。
    2016-07-07
  • js仿百度登录页实现拖动窗口效果

    js仿百度登录页实现拖动窗口效果

    这篇文章主要为大家详细介绍了js仿百度登录页实现拖动窗口效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • javascript输入CD-KEY自动分割的代码

    javascript输入CD-KEY自动分割的代码

    开发过程中用写的一个脚本,记录下来以备后用与他用,其中attributes["max"].nodeValue是取HTML自定义的 max属性(兼容Firefox和IE)
    2010-10-10
  • JavaScript“尽快失败”的原则实例详解

    JavaScript“尽快失败”的原则实例详解

    我第一次听说编码原则中有“尽快失败”这一条时,觉得很奇怪,为什么代码要失败?应该成功才对呀。下面小编通过实例代码给大家介绍js 尽快失败的原则,一起看看吧
    2016-10-10
  • 详解JavaScript中常用操作符的使用

    详解JavaScript中常用操作符的使用

    在 JavaScript 中,有一些操作符可以使代码更简洁、易读和高效。这篇文章为大家整理了11个JavaScript中常用操作符的使用,需要的可以参考一下
    2023-04-04
  • JavaScript+Canvas实现简单的柱状图

    JavaScript+Canvas实现简单的柱状图

    这篇文章主要为大家详细介绍了JavaScript如何利用Canvas实现绘制简单的柱状图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 从数据结构的角度分析 for each in 比 for in 快的多

    从数据结构的角度分析 for each in 比 for in 快的多

    今天仔细琢磨了会,从数据结构的角度分析了下,觉得for in和for each in效率上有着本质的区别,无论是JS还是AS
    2013-07-07

最新评论