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实现百度网盘任意文件强制下载,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • JavaScript实现的浏览器下载文件的方法

    废话不多说了,直接给大家贴代码了,具体代码如下所示: function download(src) { var $a = document.createElement('a'); $a.setAttribute("href", src); $a.setAttribute("download", ""); var evObj = document.createEvent('MouseEvents'); evObj.initMouseEvent( '

  • JavaScript 用fetch 实现异步下载文件功能

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>sample</title> </head> <body> <button id='btn'>下载</button> <span id='status'></span> &

  • JS实现弹出下载对话框及常见文件类型的下载

    1.写在前面 JS要实现下载功能,一般都是这么几个过程:生成下载的URL,动态创建一个A标签,并将其href指向生成的URL,然后触发A标签的单击事件,这样就会弹出下载对话框,从而实现了一个下载的功能. 这里所说的下载,有时候也可以理解为保存.出于安全考虑,JS肯定无法直接调用FileAPI写文件到磁盘,但是却可以通过下载来变相实现保存功能. 2.几个备用知识点 2.1. JS触发单击事件 既然是用A标签模拟,那么肯定要知道JS如何主动触发单击事件. 最简单的触发单击事件肯定是elem.clic

  • nodejs+express实现文件上传下载管理网站

    nodejs+express-实现文件上传下载管理的网站 项目Github地址:https://github.com/qcer/updo 后端:基于nodejs的express的web框架. 前端:bootstrap框架+vuejs.jquery等js库 功能点: dronzone.js实现文件拖拽上传.下载,可自定义传输容量. vuejs实现表格双向数据绑定. jquery.form.min.js表单插件,升级表单,实现表单提交回调. 纯css+jQuery实现一键返回顶部. 简单的ajax异

  • jsp文件下载功能实现代码

    本文实例为大家分享了jsp实现文件下载功能的3种方法,供大家参考,具体内容如下 第一种.采用转发的方式: package cn.jbit.download.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.serv

  • js下载文件并修改文件名

    用js下载文件,使用<a>标签,添加download属性即可. var a = document.createElement("a"); a.href = "http://XXX.com/audioStream/8a9dbae9d0859e48fc1f590fcf6d4ccc.mp3": a.download ="test.mp3"; a.click(); 但是如果想给文件重新命名,貌似js无法实现. 因此考虑后台实现,用java代理

  • Dropzone.js实现文件拖拽上传功能(附源码下载)

    dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 效果演示      源码下载 使用Dropzone 我们可以建立一个正式的上传form表单,并且给表单一个.dropzone的class. <form id="mydropzone" action="/upload.php" class="dropzone"&

  • nodejs multer实现文件上传与下载

    本文实例为大家分享了nodejs实现文件上传下载的具体代码,供大家参考,具体内容如下 1.介绍 做了一个关于文件上传和下载的demo ,选择了Multer 作为中间件进行数据处理. 关于multer请参考中文翻译文档 https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md 或者官方文档 2. upload 文件上传 html form标签内设置enctype="multipart/form-data"是必须

  • 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="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012

  • 用php实现百度网盘图片直链的代码分享

    第一种代码:代码量较少通过正则表达式获取百度网盘的文件真实地址,来实现直链的效果 将下面的代码保存为downbd.php 复制代码 代码如下: <?php $canshu=$_SERVER["QUERY_STRING"]; if($canshu=="") { die("文件不存在"); } else { $wangzhi="http://pan.baidu.com/share/link?".$canshu; $file=

  • 比较简单的百度网盘文件直链PHP代码

    百度网盘速度快,稳定性好,你值得拥有,如果以后支持直连以后就可以直接使用百度的网盘了. 这里提供的是临时解决方案,不保证以后可以使用 将下面的代码保存为downbd.php 复制代码 代码如下: <?php $canshu=$_SERVER["QUERY_STRING"]; if($canshu=="") { die("文件不存在"); } else { $wangzhi="http://pan.baidu.com/share/l

  • 在win64上使用bypy进行百度网盘文件上传功能

    阿里云服务器的带宽为2M,网站每日的备份包都3G多了,离线下载太费时间了,打算每日将备份包自动上传到自己的百度云盘里.  1.先安装Python 执行python -V ,发现没安装python 2.去python官网去下载 我选的是64位版本的python2.7.17 3.安装python   这个地方必须选一下,加入Path里 安装完毕,执行python -V,显示正确的版本 4.安装pip https://pypi.org/project/pip/#files pip-19.3.1.tar

  • python 实现百度网盘非会员上传超过500个文件的方法

    案例故事: 百度网盘非会员大量上传文件,会弹出:"上传文件数量超出500个现在,开通超级会员后可继续上传",其实是限制拖入500张相片,并非限制上传500张. 非会员如何将众多文件,分割成500一个的文件夹,不受拖入数量限制呢? 准备阶段 os.walk()函数,可以树形遍历整个路径下的文件夹列表和文件列表 Path(路径).parent属性,可以获取该"路径"的父路径 os.path.relpath("D:\aaa\bbb\ccc",start

  • Python实现自动上传文件到百度网盘

    目录 1.准备 2.授权bypy访问百度网盘 3.开始使用bypy 4.文件上传功能 5.文件同步功能 要使用Python自动上传文件到百度网盘,你可以使用bypy开源模块,它提供了丰富的功能,包括显示文件列表.同步目录.文件上传. 仅支持 /apps/bypy 目录. 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装. (可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda,它内置了P

  • 使用electron实现百度网盘悬浮窗口功能的示例代码

    相关依赖 里面使用了vuex vue vue-route storeJs storeJs 用来持久化vuex状态 展示 介绍说明 没有使用electron内置的-webkit-app-region: drag 因为使用他那个有很多问题 比如事件无法使用 右键无法使用 以及不能使用手型等! 安装 安装的时候没有截图 所以就参考下我其他的文章吧 storeJs 安装 npm install storejs 准备写代码 配置路由文件 export default new Router({ routes

  • Python 一键获取百度网盘提取码的方法

    该 GIF 图来自于官网,文末有给出链接. 描述 依托于百度网盘巨大的的云存储空间,绝大数人会习惯性的将一些资料什么的存储到上面,但是有的私密链接需要提取码,但是让每个想下载私密资源的人记住每一个提取码显然是不现实的.这个时候,云盘万能钥匙 诞生了,我们通过安装相应的浏览器插件就可以自动获获取相应链接的提取码.我在 Github 上看了一下,有 Web JS 版的, python 版的貌似还没有找到,所以我参照了JS 版本和官网的请求接口写了两种方式的获取脚本. 实现 下述两种方式的具体实现就不

  • 阿里云盘对比百度网盘优势分析(阿里云盘邀请码、内测码获取方法) 原创

    阿里巴巴开始预告推出阿里云盘以后,很多小伙伴都在关注这个事情,作为一家非常有实力的IT互联网公司,这个重磅产品一定会改变目前市场中网盘的格局,由于更推出,并且注册通过激活码邀请码的方式,很多朋友都没有能够提前体验到这款产品,为了回馈小伙伴对我们的支持,我们通过渠道获取了珍贵的9个激活码,在文末免费分享给大家! 阿里云网盘官网 阿里云盘官网:https://www.aliyundrive.com/ 阿里云官网截图 阿里云盘免费空间多大 1.阿里云网盘app免费的容量空间是1TB,如果是开放会员的话

  • 自己动手用Springboot实现仿百度网盘的实践

    项目编号:BS-PT-032 本项目基于Springboot开发实现,前端采用BootStrap开发实现,系统功能完整,交互性好,模仿百度网盘实现相关功能,比较适合做毕业设计使用,创意性强. 开发工具为IDEA或ECLIPSE,数据库采用MYSQL数据库. 系统部分功能展示如下: http://localhost:8080/toLogin admin / 123456 登陆页面: 主页 对应本地磁盘存储目录: 分享网盘资料 根据提取码下载相关资料 下载 重命名文件或文件夹 文件上传 新建文件夹

随机推荐