您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
分享页面也可以下载哦,反正我就是不用度娘云管家!
// ==UserScript== // @name baidunet downloader // @namespace www.52pojie.cn // @version 1.1 // @description 分享页面也可以下载哦,反正我就是不用度娘云管家! // @include *n.baidu.com/share/link* // @include *n.baidu.com/s/* // @run-at document-start // @match *://pan.baidu.com/disk/home* // @match *://yun.baidu.com/disk/home* // @require http://code.jquery.com/jquery-latest.js // @run-at document-end // @grant unsafeWindow // @copyright 2012+, Jixun // ==/UserScript== try { var w=unsafeWindow; } catch (e) { var w=window; } w.navigator.__defineGetter__ ('platform', function () {return 'Cracked by Jixun ^^';}); (function() { 'use strict'; var $ = $ || window.$; var yunData,sign,timestamp,bdstoken,logid; var fileList=[],selectList=[], list_grid_status='list'; var observer,currentPage,currentPath,currentCategory; var panAPIUrl = location.protocol + "//" + location.host + "/api/"; var restAPIUrl1 = location.protocol + "//pcs.baidu.com/rest/2.0/pcs/"; //var restAPIUrl2 = location.protocol + "//d.pcs.baidu.com/rest/2.0/pcs/"; $(function(){ initParams(); registerEventListener(); createObserver(); addButton(); createIframe(); addDialog(); console.log('Baidu Yun Helper load successful!'); }); function initParams(){ yunData = unsafeWindow.yunData; sign = getSign(); timestamp = getTimestamp(); bdstoken = getBDStoken(); logid = getLogid(); currentPage = getCurrentPage(); if(currentPage == 'list') currentPath = getPath(); if(currentPage == 'category') currentCategory = getCategory(); refreshListGridStatus(); refreshFileList(); refreshSelectList(); } function refreshFileList(){ if (currentPage == 'list') { fileList = getFileList(); } else if (currentPage == 'category'){ fileList = getCategoryFileList(); } } function refreshSelectList(){ selectList = []; } function refreshListGridStatus(){ list_grid_status = getListGridStatus(); } function getListGridStatus(){ var status = 'list'; var $status_div = $('div.list-grid-switch'); if ($status_div.hasClass('list-switched-on')){ status = 'list'; } else if ($status_div.hasClass('grid-switched-on')) { status = 'grid'; } return status; } function registerEventListener(){ registerHashChange(); registerListGridStatus(); registerCheckbox(); registerAllCheckbox(); registerFileSelect(); } function registerHashChange(){ window.addEventListener('hashchange',function(e){ refreshListGridStatus(); if(getCurrentPage() == 'list') { if(currentPage == getCurrentPage()){ if(currentPath == getPath()){ return; } else { currentPath = getPath(); refreshFileList(); refreshSelectList(); } } else { currentPage = getCurrentPage(); currentPath = getPath(); refreshFileList(); refreshSelectList(); } } else if (getCurrentPage() == 'category') { if(currentPage == getCurrentPage()){ if(currentCategory == getCategory()){ return; } else { currentPage = getCurrentPage(); currentCategory = getCategory(); refreshFileList(); refreshSelectList(); } } else { currentPage = getCurrentPage(); currentCategory = getCategory(); refreshFileList(); refreshSelectList(); } } }); } function registerListGridStatus(){ var $a_list = $('a[node-type=list-switch]'); $a_list.click(function(){ list_grid_status = 'list'; }); var $a_grid = $('a[node-type=grid-switch]'); $a_grid.click(function(){ list_grid_status = 'grid'; }); } function registerCheckbox(){ var $checkbox = $('span.checkbox'); $checkbox.each(function(index,element){ $(element).bind('click',function(e){ var $parent = $(this).parent(); var filename; if(list_grid_status == 'list') { filename = $('div.file-name div.text a',$parent).attr('title'); }else if(list_grid_status == 'grid'){ filename = $('div.file-name a',$parent).attr('title'); } if($parent.hasClass('item-active')){ console.log('unselect file:'+filename); for(var i=0;i<selectList.length;i++){ if(selectList[i].filename == filename){ selectList.splice(i,1); } } }else{ console.log('select file:'+filename); $.each(fileList,function(index,element){ if(element.server_filename == filename){ var obj = { filename:element.server_filename, path:element.path, fs_id:element.fs_id, isdir:element.isdir }; selectList.push(obj); } }); } }); }); } function unregisterCheckbox(){ var $checkbox = $('span.checkbox'); $checkbox.each(function(index,element){ $(element).unbind('click'); }); } function registerAllCheckbox(){ var $checkbox = $('div.col-item.check'); $checkbox.each(function(index,element){ $(element).bind('click',function(e){ var $parent = $(this).parent(); if($parent.hasClass('checked')){ console.log('unselect all'); selectList = []; } else { console.log('select all'); selectList = []; $.each(fileList,function(index,element){ var obj = { filename:element.server_filename, path:element.path, fs_id:element.fs_id, isdir:element.isdir }; selectList.push(obj); }); } }); }); } function unregisterAllCheckbox(){ var $checkbox = $('div.col-item.check'); $checkbox.each(function(index,element){ $(element).unbind('click'); }); } function registerFileSelect(){ var $dd = $('div.list-view dd'); $dd.each(function(index,element){ $(element).bind('click',function(e){ var nodeName = e.target.nodeName.toLowerCase(); if(nodeName != 'span' && nodeName != 'a' && nodeName != 'em') { selectList = []; var filename = $('div.file-name div.text a',$(this)).attr('title'); console.log('select file:' + filename); $.each(fileList,function(index,element){ if(element.server_filename == filename){ var obj = { filename:element.server_filename, path:element.path, fs_id:element.fs_id, isdir:element.isdir }; selectList.push(obj); } }); } }); }); } function unregisterFileSelect(){ var $dd = $('div.list-view dd'); $dd.each(function(index,element){ $(element).unbind('click'); }); } function createObserver(){ var MutationObserver = window.MutationObserver; var options = { 'childList': true }; observer = new MutationObserver(function(mutations){ unregisterCheckbox(); unregisterAllCheckbox(); unregisterFileSelect(); registerCheckbox(); registerAllCheckbox(); registerFileSelect(); }); var list_view = document.querySelector('.list-view'); var grid_view = document.querySelector('.grid-view'); observer.observe(list_view,options); observer.observe(grid_view,options); } //添加下载按钮 function addButton(){ var $dropdownbutton = $('<span class="g-dropdown-button"></span>'); var $dropdownbutton_a = $('<a class="g-button" data-button-id="b200" data-button-index="200" href="javascript:void(0);"></a>'); var $dropdownbutton_a_span = $('<span class="g-button-right"><em class="icon icon-download" title="百度网盘下载助手"></em><span class="text" style="width: auto;">点击下载</span></span>'); var $dropdownbutton_span = $('<span class="menu" style="width:auto"></span>'); var $panAPIDownloadButton = $('<a data-menu-id="b-menu201" class="g-button-menu" href="javascript:void(0);">直接下载</a>'); var $restAPIDownloadButton1 = $('<a data-menu-id="b-menu202" class="g-button-menu" href="javascript:void(0);">API下载(百度云ID)</a>'); var $restAPIDownloadButton2 = $('<a data-menu-id="b-menu203" class="g-button-menu" href="javascript:void(0);">API下载(ES ID)</a>'); var $linkButton1 = $('<a data-menu-id="b-menu204" class="g-button-menu" href="javascript:void(0);">显示链接(直接下载)</a>'); var $linkButton2 = $('<a data-menu-id="b-menu204" class="g-button-menu" href="javascript:void(0);">显示链接(百度云ID)</a>'); var $linkButton3 = $('<a data-menu-id="b-menu204" class="g-button-menu" href="javascript:void(0);">显示链接(ES ID)</a>'); $dropdownbutton_span.append($panAPIDownloadButton).append($restAPIDownloadButton1).append($restAPIDownloadButton2).append($linkButton1).append($linkButton2).append($linkButton3); $dropdownbutton_a.append($dropdownbutton_a_span); $dropdownbutton.append($dropdownbutton_a).append($dropdownbutton_span); $dropdownbutton.hover(function(){ $dropdownbutton.toggleClass('button-open'); }); $panAPIDownloadButton.click(panAPIDownloadClick); $restAPIDownloadButton1.click(restAPIDownloadClick1); $restAPIDownloadButton2.click(restAPIDownloadClick2); $linkButton1.click(linkButtonClick1); $linkButton2.click(linkButtonClick2); $linkButton3.click(linkButtonClick3); $('div.default-dom div.bar div.list-tools').append($dropdownbutton); } function addDialog(){ var screenWidth = document.body.clientWidth; var dialogLeft = screenWidth>568 ? (screenWidth-568)/2 : 0; var $dialog_div = $('<div class="dialog" id="baiduyunHelperDialog" style="width: 568px; top: 0px; bottom: auto; left: '+dialogLeft+'px; right: auto; display: hidden; visibility: visible; z-index: 52;"></div>'); var $dialog_header = $('<div class="dialog-header"><h3><span class="dialog-header-title">下载链接</span></h3></div>'); var $dialog_control = $('<div class="dialog-control"><span class="dialog-icon dialog-close">×</span></div>'); var $dialog_body = $('<div class="dialog-body"></div>'); var $content = $('<div style="padding:0 20px"><a id="downloadlink" href="javascript:void(0)"></a></div>'); var $tip = $('<div id="dialog_tip" style="padding-left:20px;background-color:#faf2d3;border-top: 1px solid #c4dbfe;"><p></p></div>'); var $shadow = $('<div id="dialog_shadow" style="position: fixed; left: 0px; top: 0px; z-index: 50; background: rgb(0, 0, 0) none repeat scroll 0% 0%; opacity: 0.5; width: 100%; height: 100%; display: none;"></div>'); var mouseInitX,mouseInitY,dialogInitX,dialogInitY; $dialog_header.mousedown(function(event){ mouseInitX = parseInt(event.pageX); mouseInitY = parseInt(event.pageY); dialogInitX = parseInt($dialog_div.css('left').replace('px','')); dialogInitY = parseInt($dialog_div.css('top').replace('px','')); $(this).mousemove(function(event){ var tempX = dialogInitX + parseInt(event.pageX) - mouseInitX; var tempY = dialogInitY + parseInt(event.pageY) - mouseInitY; tempX = tempX<0 ? 0 : tempX>screenWidth-568 ? screenWidth-568 : tempX; tempY = tempY<0 ? 0 : tempY; $dialog_div.css('left',tempX+'px').css('top',tempY+'px'); }); }); $dialog_header.mouseup(function(event){ $(this).unbind('mousemove'); }); $dialog_control.click(dialogControl); $('body').append($dialog_div.append($dialog_header.append($dialog_control)).append($dialog_body.append($content).append($tip))); $('body').append($shadow); } function panAPIDownloadClick(){ console.log('PAN API download button clicked.'); if(selectList.length === 0) { alert("获取选中文件失败,请刷新重试!"); return; } var fidlist,downloadType; var downloadLink; fidlist = getFidList(selectList); if (selectList.length == 1) { if (selectList[0].isdir === 1) downloadType = 'batch'; else if (selectList[0].isdir === 0) downloadType= 'dlink'; } else if(selectList.length > 1){ downloadType = 'batch'; } downloadLink = getDownloadLinkWithPanAPI(fidlist,downloadType); execDownload(downloadLink); } function restAPIDownloadClick1(){ console.log("REST API download 1 button clicked."); if(selectList.length === 0) { alert("获取选中文件失败,请刷新重试!"); return; } else if (selectList.length > 1) { alert("该方法不支持多文件下载!"); return; } else { if(selectList[0].isdir == 1){ alert("该方法不支持目录下载!"); return; } } var downloadLink = getDownloadLinkWithRESTAPI1(selectList[0].path); execDownload(downloadLink); } function restAPIDownloadClick2(){ console.log("REST API download 1 button clicked."); if(selectList.length === 0) { alert("获取选中文件失败,请刷新重试!"); return; } else if (selectList.length > 1) { alert("该方法不支持多文件下载!"); return; } else { if(selectList[0].isdir == 1){ alert("该方法不支持目录下载!"); return; } } var downloadLink = getDownloadLinkWithRESTAPI2(selectList[0].path); execDownload(downloadLink); } function linkButtonClick1(){ if(selectList.length === 0) { alert("获取选中文件失败,请刷新重试!"); return; } var fidlist,downloadType; var downloadLink; fidlist = getFidList(selectList); if (selectList.length == 1) { if (selectList[0].isdir === 1) downloadType = 'batch'; else if (selectList[0].isdir === 0) downloadType= 'dlink'; } else if(selectList.length > 1){ downloadType = 'batch'; } downloadLink = getDownloadLinkWithPanAPI(fidlist,downloadType); $('#downloadlink').attr('href',downloadLink).text(downloadLink); var $shadow = $('#dialog_shadow'); var $dialog = $('#baiduyunHelperDialog'); var $tip = $('div#dialog_tip p'); $tip.text('显示模拟百度网盘获取的链接,可以使用右键迅雷下载,复制无用,需要传递cookie'); $shadow.show(); $dialog.show(); } function linkButtonClick2(){ if(selectList.length === 0) { alert("获取选中文件失败,请刷新重试!"); return; } else if (selectList.length > 1) { alert("该方法不支持多文件下载!"); return; } else { if(selectList[0].isdir == 1){ alert("该方法不支持目录下载!"); return; } } var downloadLink = getDownloadLinkWithRESTAPI1(selectList[0].path); $('#downloadlink').attr('href',downloadLink).text(downloadLink); var $shadow = $('#dialog_shadow'); var $dialog = $('#baiduyunHelperDialog'); var $tip = $('div#dialog_tip p'); $tip.text('显示模拟APP获取的链接(使用百度云ID),可以使用右键迅雷下载,复制无用,需要传递cookie'); $shadow.show(); $dialog.show(); } function linkButtonClick3(){ if(selectList.length === 0) { alert("获取选中文件失败,请刷新重试!"); return; } else if (selectList.length > 1) { alert("该方法不支持多文件下载!"); return; } else { if(selectList[0].isdir == 1){ alert("该方法不支持目录下载!"); return; } } var downloadLink = getDownloadLinkWithRESTAPI2(selectList[0].path); $('#downloadlink').attr('href',downloadLink).text(downloadLink); var $shadow = $('#dialog_shadow'); var $dialog = $('#baiduyunHelperDialog'); var $tip = $('div#dialog_tip p'); $tip.text('显示模拟APP获取的链接(使用ES ID),可以使用右键迅雷下载,复制无用,需要传递cookie'); $shadow.show(); $dialog.show(); } function dialogControl(){ $('#downloadlink').attr('href','javascript:void(0)').text(''); $('div#dialog_tip p').text(''); var $dialog = $('#baiduyunHelperDialog'); var $shadow = $('#dialog_shadow'); $dialog.hide(); $shadow.hide(); } function getSign(){ var signFnc; try{ signFnc = new Function("return " + yunData.sign2)(); } catch(e){ throw new Error(e.message); } return base64Encode(signFnc(yunData.sign5,yunData.sign1)); } //获取当前目录 function getPath(){ var hash = location.hash; var regx = /(^|&|\/)path=([^&]*)(&|$)/i; var result = hash.match(regx); return decodeURIComponent(result[2]); } function getCategory(){ var hash = location.hash; var regx = /(^|&|\/)type=([^&]*)(&|$)/i; var result = hash.match(regx); return decodeURIComponent(result[2]); } function getCurrentPage(){ var hash = location.hash; return decodeURIComponent(hash.substring(hash.indexOf('#')+1,hash.indexOf('/'))); } //获取文件列表 function getFileList(){ var filelist = []; var listUrl = panAPIUrl + "list"; var path = getPath(); var params = { dir:path, bdstoken:bdstoken, logid:logid, order:'size', desc:0, clienttype:0, showempty:0, web:1, channel:'chunlei', appid:250528 }; $.ajax({ url:listUrl, async:false, method:'GET', data:params, success:function(result){ filelist = 0===result.errno ? result.list : []; } }); return filelist; } function getCategoryFileList(){ var filelist = []; var listUrl = panAPIUrl + "categorylist"; var category = getCategory(); var params = { category:category, bdstoken:bdstoken, logid:logid, order:'size', desc:0, clienttype:0, showempty:0, web:1, channel:'chunlei', appid:250528 }; $.ajax({ url:listUrl, async:false, method:'GET', data:params, success:function(result){ filelist = 0===result.errno ? result.info : []; } }); return filelist; } function getFidList(list){ var fidlist = null; if (list.length === 0) return null; var fileidlist = []; $.each(list,function(index,element){ fileidlist.push(element.fs_id); }); fidlist = '[' + fileidlist + ']'; return fidlist; } function getTimestamp(){ return yunData.timestamp; } function getBDStoken(){ return yunData.MYBDSTOKEN; } function getLogid(){ var name = "BAIDUID"; function getCookie(e) { var o, t; var n = document,c=decodeURI; return n.cookie.length > 0 && (o = n.cookie.indexOf(e + "="),-1 != o) ? (o = o + e.length + 1,t = n.cookie.indexOf(";", o),-1 == t && (t = n.cookie.length),c(n.cookie.substring(o, t))) : ""; } var u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/~!@#¥%……&"; var d = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; var f = String.fromCharCode; function l(e){ if (e.length < 2) { var n = e.charCodeAt(0); return 128 > n ? e : 2048 > n ? f(192 | n >>> 6) + f(128 | 63 & n) : f(224 | n >>> 12 & 15) + f(128 | n >>> 6 & 63) + f(128 | 63 & n); } var n = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320); return f(240 | n >>> 18 & 7) + f(128 | n >>> 12 & 63) + f(128 | n >>> 6 & 63) + f(128 | 63 & n); } function g(e){ return (e + "" + Math.random()).replace(d, l); } function m(e){ var n = [0, 2, 1][e.length % 3]; var t = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0); var o = [u.charAt(t >>> 18), u.charAt(t >>> 12 & 63), n >= 2 ? "=" : u.charAt(t >>> 6 & 63), n >= 1 ? "=" : u.charAt(63 & t)]; return o.join(""); } function h(e){ return e.replace(/[\s\S]{1,3}/g, m); } function p(){ return h(g((new Date()).getTime())); } function w(e,n){ return n ? p(String(e)).replace(/[+\/]/g, function(e) { return "+" == e ? "-" : "_"; }).replace(/=/g, "") : p(String(e)); } return w(getCookie(name)); } //获取下载地址。这个地址不是直接下载地址,访问这个地址会返回302,response header中的location才是真实下载地址 //暂时没有找到提取方法 function getDownloadLinkWithPanAPI(fidlist,type){ var downloadUrl = panAPIUrl + "download"; var link = null; var params= { sign:sign, timestamp:timestamp, fidlist:fidlist, type:type, channel:'chunlei', web:1, app_id:250528, bdstoken:bdstoken, logid:logid, clienttype:0 }; $.ajax({ url:downloadUrl, async:false, method:'GET', data:params, success:function(result){ if (type == 'dlink') link = result.dlink[0].dlink; else if (type == 'batch') link = result.dlink; } }); return link; } function getDownloadLinkWithRESTAPI1(path){ var link = restAPIUrl1 + 'file?method=download&app_id=250528&path=' + path; return link; } function getDownloadLinkWithRESTAPI2(path){ var link = restAPIUrl1 + 'file?method=download&app_id=266719&path=' + path; return link; } function execDownload(link){ console.log('selectList:'); console.log(selectList); console.log("download link:"+link); $('#helperdownloadiframe').attr('src',link); } function createIframe(){ var $div = $('<div class="helper-hide" style="padding:0;margin:0;display:block"></div>'); var $iframe = $('<iframe src="javascript:void(0)" id="helperdownloadiframe" style="display:none"></iframe>'); $div.append($iframe); $('body').append($div); } function base64Encode(t){ var a, r, e, n, i, s, o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for (e = t.length,r = 0,a = ""; e > r; ) { if (n = 255 & t.charCodeAt(r++),r == e) { a += o.charAt(n >> 2); a += o.charAt((3 & n) << 4); a += "=="; break; } if (i = t.charCodeAt(r++),r == e) { a += o.charAt(n >> 2); a += o.charAt((3 & n) << 4 | (240 & i) >> 4); a += o.charAt((15 & i) << 2); a += "="; break; } s = t.charCodeAt(r++); a += o.charAt(n >> 2); a += o.charAt((3 & n) << 4 | (240 & i) >> 4); a += o.charAt((15 & i) << 2 | (192 & s) >> 6); a += o.charAt(63 & s); } return a; } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址