代码:
//获取文件列表datavar data=require(' system-core : context/context . js '). instance forsystem . getlist(). listview . listsdata;//计算sign function base64 encode(r){ var t,e,a,c,n,o,h=' abcdefghijklmnopqrstuvwxyzabbcdefghijklmnopqrstuvwxyz 0123456789/';for(a=r.length,e=0,t=AE;){if(c=255r.charCodeAt(e),e==a){t=h.charAt(c2),t=h.charAt((3c)4),t='==break}if(n=r.charCodeAt(e),e==a){t=h.charAt(c2),t=h.charAt((3c)4|(240n)4),t=h.charAt((15n)2),t='=break}o=r.charCodeAt(e),t=h.charAt(c2),t=h.charAt((3c)4|(240n)4),t=h.charAt((15n)2|(192o)6),t=h . charat(63o)} return t } function u(j,r){ var a=[];var p=[];var o=var v=j .长度;for(var q=0;q256q ){a[q]=j.substr((q%v),1)。charCodeAt(0);p[q]=q } for(var u=q=0;q256q){ u=(u p[q]a[q])% 6;var t=p[q];p[q]=p[u];p[u]=t } for(var I=u=q=0;qr.lengthq){ I=(I ^ 1)% 6;u=(u p[I])% 6;var t=p[I];p[I]=p[u];p[u]=t;k=p[((p[I]p[u])% 6];o=string.fromcharcode(r.charcodeat(q)^k)}return o } var符号=base64Encode(u(yunData.sign5,yunData.sign1))。替换(/=/g,'=')。替换(//g ' ');//downloader function down(index){ $。ajax({type:'GET ',url:'/api/download?sign=' sign ' timestamp=' yundata . timestamp ' FID list=[' data[1]。fs_id ']',success : function(d){ console . warn(d . dlink[index-1])。dlink);}});}用法:
1.输入网络磁盘文件目录。
2.F12打开调试工具,将代码粘贴到控制台并返回。
3.在控制台输入down(文件序列号)命令,按Enter键即可获得文件的下载地址,可以复制到任何下载工具上全速下载。
“文件序列号”对应于文件目录列表。下载第一个文件时输入down(1),下载第二个文件时输入down(2),以此类推。请注意,括号是英文括号。
原则:
获取界面的下载链接:
通过监控与其服务器交互的请求数据,获得获取下载链接的接口,并在源文件中搜索找到该接口的调用过程。
接口:/API/下载?符号=* * *时间戳=***fidlist=[***]'
去掉一些不影响调用结果的参数后,已知调用接口主要需要以下参数:
1.sign(用户身份)2.timestamp 3.fs_id(文件识别码)
符号计算:
算法可以在源文件中找到,“var sign=”可以通过搜索所有文件来找到算法代码,通过复制和调用来计算sign的值。
获取时间戳:
该值保存在全局变量中,可以直接从云数据获取.
获取fs_id:
文件列表可以通过调用“context.js”脚本获得,当前目录下所有文件的fs _ ids都保存在文件列表中。
var data=require(' system-core : context/context . js '). instance forsystem . getlist(). listview . listsdata;摘要
以上就是边肖介绍的JS,实现百度网盘上任意文件的强制下载。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!