zoukankan      html  css  js  c++  java
  • 原创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[index-1].fs_id+"%5D",success:function(d){console.warn(d.dlink
    [0].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;
  • 相关阅读:
    Java语言编码规范(Java Code Conventions) 转载
    Flex 彻底屏蔽右键 (转载)
    JAVA 读取文件(收集)
    可以运行SWT的精简版JRE 1.4.2_04, 压缩后仅1.3MB[整理]
    转载:多核平台下的JAVA优化
    森林消防智慧预警:火灾监测 Web GIS 可视化平台
    绿色数字园区运维:一屏群集 3D 可视化智慧楼宇
    js删除json key
    学习、应用Web标准一路走来——《重构之美》原创系列文章快速入口。
    中国互联网的鱼死网破新时代。
  • 原文地址:https://www.cnblogs.com/aucy/p/9566120.html
Copyright © 2011-2022 走看看