// ==UserScript==
// @name 百度网盘直链加速下载(超级svip会员领取器),无需关注公众号,直接下载就可以!
// @namespace tamp.catboxhub.com
// @antifeature membership
// @version 0.3.9
// @author 资源好又多
// @description 先看详情再使用!!先看详情再使用!!先看详情再使用!!先看详情再使用!!先看详情再使用!!先看详情再使用!!先看详情再使用!!先看详情再使用!!
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAABBVBMVEUAAAB0rNJ2s9R0stJ2tNV3s9R5s9l2s9R2stJ3s9R2s9R3stR2s9N2stN2s9N3s9R2stR3stJ3s9R2s9R1sNN3s9R2s9R2stN3s9R2stR2s9R3s9R2stN3stR0sdV2s9R2s9R2s9N3s9N3stN2s9N2s9R2s9R3s9J3stV4stR2stN3s9T///9mlbD8/f58ttZomrbf7fX5/P3q8/jN4/CGvNmy1Oer0OSgy+KPwdxtoL2BudhwqMb1+fzZ6vPE3+2Kvtp0rMzt9frv9vre6O6Vw910rs/k8PfQ3+eax+COs8iCqb9vm7VpmLLm7fLT5vJ3obm82erC1eC80dy0zNmausykwNAwUSvcAAAAK3RSTlMABewNNvYIix/m4pNwYfnwTxTXyyef3cS5roN4QvMa0r+0p5pnWkk7LizQzqkA9AAABFhJREFUaN61mdlW4kAQhisbJGEH2RkFBQSrE1kEBRXGfcZldNb3f5Q5Os7pEOjO1n533PCd6r+rOumAX6ReMtEs4Ttys1hTFRCHtK12EgUN10jni+19PQbRyXXjFQOZyOVER4+o2K7nZfQgU4r3whtiW3Fq4KLthgxIaiSowocmmwvu2NozMRByVQ1aRsrAwKTjShBFv4qhKDR8b2ilXcKQyDXdZx2JDIZGa235ao08RsL0tkiNAkZE7ngFs3+AkTFSEteRzaAAtDq3DuqIRpZdS+MABSGnWLnkCigMs8vYWHkUiJnb2OcJFEplg0VqZ1AsifVY+iUUTCa1Vojn3D08nU2fx+SNy8X3m8mh50x2D5gU8jk9WQ7JCuOj48/IJ+46Bw1+FcfDc7LG6O77BHl8UlcWq4g8JkPC4PIr8sgrzlY3eSs1HREm9pK7ZknqiPFa5PPRiPAY8oop6zQRmVPH0CZ8xjecVOg2jnPiuCOejGbIpPU/lW2ZvVYLwoHG773B6uyte2QTPwzZtRTfJzx7+h4TnyzZ7b/9JukyV2s28iuxT/i7WGLGfvhMfDNm9n4h9hp7BRmcnBP/LJGB8Rq9ajBTJwG4YnW+9rpeHWRwcxVEMpoigz0JgDlSpiQQz6e4maYOUGBJhsEkY1avmCpI2uZAJjMSENYuTneht3FiHS/pKRV5f7UhuekAuaMG/wyZyW/I/XBBQnHJklSh6VZ8vSIhYUl2oORu80siWmKA+wAZE+ESBAF5UK6OTiaHnpIpiYh9Nz31kEwuSWRGixlfMrWJAMYznuR0QYSw+MyRzMZiJPaSIaFHYQQYRz7IroeTCLDmWAaaHyIZ3ayMleKHSOwpUipQEymhHCFlF1Rn8PaHSJKgpF3PJ+IlWYA8/TW5FiqhT3fO5C++iJXQt622Q/J7JGp3HTteHhSAfdqOt3NR63V+T5+I6gCgl6l0fi9Icj2nV18N16vvmfXTFtLw92e039/eGjsZahm8iMje/mlduO4+9JKzlIdhdMmXlwH9y/76G/bceryOumLfHiy6Wi34R0+jktuB9fhrHEVz/uXBorGns/DOLlIuBtbTw69voeO4/vNoDW5pJ+bgHVXDlVqsp5ffP8J4xj/uH5+swQUthN7gKLvoZP5kRcDpwIO+4/ZcRidn80F4xRk6qAElV8VVLsJ5BvOzW3Rg6tRBUxFMlhporwimCqsoBfGOkgouGrJoh1aX3BKplhYsqSiwht4S68j3YANbpkiHvM/43CsiFnqNyqBjCAud/Rk4lhLVkzUFmEh1MY69GPDICshFq8W8PsSbkTOnebCIdSNa5JQC3uQqkXqQ9gffEv6DvFbpgU9iqULIuVtXwD9b8TDFVFUJAqHmgyrMLARGSZY/BVAc1HQIg55q+dSky8m+BCFR1KIfRyubg0hsJwuGxqlB3on3IToxNbnXNNO4jlEu1hsKCELS1W57r7pj4DuZncpuMqvq/gx/AWOzQlgCEoTLAAAAAElFTkSuQmCC
// @run-at document-end
// @require https://lib.baomitu.com/jquery/3.6.0/jquery.min.js
// @resource ElementPlusCSS https://lib.baomitu.com/element-plus/2.2.2/index.min.css
// @connect *
// @connect 127.0.0.1
// @connect localhost
// @connect baidu.com
// @connect baidupcs.com
// @connect pandownload.net
// @connect bdjs.lol
// @connect d.baiduyunpcs.xyz
// @connect speedownload.dzp.me
// @grant GM_openInTab
// @grant GM_addStyle
// @grant GM_getResourceURL
// @grant GM_getResourceText
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @match *://pan.baidu.com/disk/main*
// @match *://yun.baidu.com/disk/main*
// @match *://wangpan.baidu.com/disk/main*
// @match *://pan.baidu.com/disk/home*
// @match *://yun.baidu.com/disk/home*
// @match *://wangpan.baidu.com/disk/home*
// @match *://pan.baidu.com/s/*
// @match *://yun.baidu.com/s/*
// @match *://pan.baidu.com/share/link?*
// @match *://yun.baidu.com/share/link?*
// @match *://pan.baidu.com/play/video*
// @match *://yun.baidu.com/play/video*
// @match *://pan.baidu.com/share/init*
// @match *://yun.baidu.com/share/init*
// @downloadURL https://update.greasyfork.icu/scripts/455799/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E7%9B%B4%E9%93%BE%E5%8A%A0%E9%80%9F%E4%B8%8B%E8%BD%BD%28%E8%B6%85%E7%BA%A7svip%E4%BC%9A%E5%91%98%E9%A2%86%E5%8F%96%E5%99%A8%29%2C%E6%97%A0%E9%9C%80%E5%85%B3%E6%B3%A8%E5%85%AC%E4%BC%97%E5%8F%B7%EF%BC%8C%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD%E5%B0%B1%E5%8F%AF%E4%BB%A5%EF%BC%81.user.js
// @updateURL https://update.greasyfork.icu/scripts/455799/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E7%9B%B4%E9%93%BE%E5%8A%A0%E9%80%9F%E4%B8%8B%E8%BD%BD%28%E8%B6%85%E7%BA%A7svip%E4%BC%9A%E5%91%98%E9%A2%86%E5%8F%96%E5%99%A8%29%2C%E6%97%A0%E9%9C%80%E5%85%B3%E6%B3%A8%E5%85%AC%E4%BC%97%E5%8F%B7%EF%BC%8C%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD%E5%B0%B1%E5%8F%AF%E4%BB%A5%EF%BC%81.meta.js
// ==/UserScript==
(function () {
(() => {
var i;
var j;
var t;
var table = [];
for (i = 0; i < 256; i++) {
t = i;
for (j = 0; j < 8; j++) {
t = t & 1 ? t >>> 1 ^ 0xEDB88320 : t >>> 1;
}
table[i] = t;
}
return table;
})();
function isJSON(str) {
if (typeof str == 'string') {
try {
var obj = JSON.parse(str);
return true;
} catch (e) {
return false;
}
}
}
var tools = {
isJSON: isJSON,
getFinalUrl: function (url) {
return new Promise(function (resolve, reject) {
GM_xmlhttpRequest({
method: "HEAD",
url,
onload: function (response) {
resolve(response.finalUrl);
},
onerror: function (err) {
reject(new Error(err));
}
});
});
},
getAccelerate: function (url) {
return new Promise(function (resolve, reject) {
const ElementPlus = unsafeWindow.ElementPlus;
const accelerateURL = GM_getValue("accelerateURL", "").replaceAll(" ","");
GM_xmlhttpRequest({
method: "HEAD",
url,
onload: function (response) {
let responseHeaders = response.responseHeaders.toLowerCase();
let finalUrl = response.finalUrl;
console.log(finalUrl);
if(finalUrl.match(/&fn=(.*)&rtype/).length == 0){
let result = {};
result.code = -1;
result.errMsg = "无法获取文件名称,更新Chroe再试";
result.title = "网盘下载";
return resolve(result);
}
let filename = finalUrl.match(/&fn=(.*)&rtype/)[1];
let decodeFilename = decodeURIComponent(filename.replaceAll('+','%20'));
if (response.status != 200) {
let result = {};
result.code = -1;
result.errMsg = "无法获取文件的细息";
result.title = decodeFilename;
return resolve(result);
}
let Notification = ElementPlus.ElNotification({
title: decodeFilename,
message: '正在请求加速链接,请耐等待...',
duration: 0,
type: 'warning'
});
if(responseHeaders.match(/content-md5: (.*)/).length == 0){
let result = {};
result.code = -1;
result.errMsg = "无法获取文件MD";
result.title = decodeFilename;
return resolve(result);
}
let contentMD5 = responseHeaders.match(/content-md5: (.*)/)[1];
let contentLength = responseHeaders.match(/content-length: (.*)/)[1];
let data = {};
data.dlink = url;
data.md5 = contentMD5;
data.size = contentLength;
data.name = filename;
GM_xmlhttpRequest({
method: "POST",
url: accelerateURL,
data: JSON.stringify(data),
onload: function (response) {
if (response.status != 200) {
Notification.close();
let result = {};
result.code = -10;
result.errMsg = "请求加速链接失败";
result.title = decodeFilename;
return resolve(result);
}
if (response.responseText.length == 0) {
Notification.close();
let result = {};
result.code = -7;
result.errMsg = "加速链接未返回任何内容";
result.title = decodeFilename;
return resolve(result);
}
if (!isJSON(response.responseText)) {
Notification.close();
let result = {};
result.code = -2;
result.errMsg = "无效的加速链接";
result.title = decodeFilename;
return resolve(result);
}
let ret = JSON.parse(response.responseText);
if (ret.code != 0) {
Notification.close();
let result = {};
result.code = -3;
result.errMsg = ret.message == undefined || ret.message == "" ? "服务器未返回任何有效信息" : ret.message;
result.title = decodeFilename;
return resolve(result);
}
let dlink = ret.data.urls[0].url;
if (dlink == undefined || dlink == "") {
Notification.close();
let result = {};
result.code = -6;
result.errMsg = "该加速链接未返回有效的下载链接";
result.title = decodeFilename;
return resolve(result);
}
Notification.close();
let result = {};
result.code = ret.code;
result.message = ret.message;
result.url = dlink;
result.ua = ret.data.ua;
result.split = ret.data.split;
result.pro = ret.data.pro;
result.name = decodeFilename;
return resolve(result);
},
onerror: function (err) {
Notification.close();
let result = {};
result.code = -10;
result.errMsg = "请求加速链接失败";
result.title = decodeFilename;
return resolve(result);
}
});
}
});
});
},
getCookie: function (name) {
const strCookie = document.cookie;
const cookieList = strCookie.split(';');
for (let i = 0; i < cookieList.length; i++) {
const arr = cookieList[i].split('=');
if (name === arr[0].trim()) {
return arr[1];
}
}
return null;
},
browserDownload: function (url) {
const iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = url.replace("http://", "https://");
document.body.appendChild(iframe);
setTimeout(() => {
iframe.remove();
}, 2 * 60 * 1000);
},
aria2Download: function (aria2) {
unsafeWindow.ElementPlus;
const RpcUrl = "http://" + GM_getValue("RpcHost", "localhost") + ":" + GM_getValue("RpcPort", "6800") + GM_getValue("RpcPath", "/jsonrpc");
const token = GM_getValue("RpcToken", "");
const downDir = GM_getValue("Aria2DownloadDir", "C:/Downloads");
const userAgent = aria2.userAgent;
let ariaData = {
id: new Date().getTime(),
jsonrpc: '2.0',
method: 'aria2.addUri',
params: [`token:${token}`, [aria2.url], {
'dir': downDir.replaceAll("\\", "/") + aria2.dir,
'out': decodeURIComponent(aria2.fileName),
'max-connection-per-server': aria2.split,
'header': [`User-Agent: ${userAgent}`, `Cookie:${aria2.cookie}`]
}]
};
GM_xmlhttpRequest({
method: "POST",
url: RpcUrl,
data: JSON.stringify(ariaData),
onload: function () {
unsafeWindow.ElementPlus.ElNotification({
type: 'success',
title: decodeURIComponent(aria2.fileName),
message: '文件已加入 Aria2 下载队列',
duration: 3000
});
aria2.notify.close();
},
onerror: function () {
unsafeWindow.ElementPlus.ElNotification({
type: 'error',
title: decodeURIComponent(aria2.fileName),
message: '推送至 Aria2 时发生错误,请检查配置',
duration: 3000
});
aria2.notify.close();
}
});
}
};
// 初始化 Jquery
var $$1 = window.$;
var Adblock = {
init: function () {
$$1('.wp-s-header-cert__ee-cert-tilte.u-popover__reference').remove();
$$1('.nd-cus-btn.wp-s-disk-header__right-item').remove();
$$1('.ad-platform-tips.ad-multi-tips').remove();
$$1('.init-docs .phone-banner').remove();
$$1('.gOIbzPb').remove();
$$1('#web-right-view').remove();
}
};
var scriptName = "网盘下载器";
var title = scriptName + " v0.3.9"; // 初始化库
var $ = window.$; //var PonyfillCDN = "https://fastly.jsdelivr.net/npm/web-streams-polyfill@2.0.2/dist/ponyfill.min.js";
//var StreamSaverCDN = "https://fastly.jsdelivr.net/npm/streamsaver@2.0.6/StreamSaver.min.js";
var VueCDN = "https://lib.baomitu.com/vue/3.2.36/vue.global.prod.min.js";
var ElementPlusCDN = "https://lib.baomitu.com/element-plus/2.2.2/index.full.min.js"; // 过滤广告
Adblock.init(); // 新版Vue 路由Hook - 备用
if (unsafeWindow.globalVue != undefined) {
var ElementUI = unsafeWindow.globalVue.$options._base.prototype;
unsafeWindow.globalVue._router.afterHooks.push(router => {
console.log(router);
});
} // 判断当前页面
const URL_HREF = unsafeWindow.location.href;
const MATCHS = {
'https?://(pan|yun).baidu.com/disk/main.*': 'pan',
'https?://(pan|yun).baidu.com/disk/home.*': 'old',
'https?://(pan|yun).baidu.com/s/.*': 'share',
'https?://(pan|yun).baidu.com/share/link/?.*': 'share',
'https?://(pan|yun).baidu.com/play/video/.*': 'video'
};
let currentPage = 'pan';
for (let match in MATCHS) {
if (new RegExp(match).test(URL_HREF)) {
currentPage = MATCHS[match];
break;
}
} // 初始化打包下载
/*
$.getScript(PonyfillCDN, function () {
$.getScript(StreamSaverCDN, function () {
const iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = "https://qdall01.baidupcs.com";
iframe.onload = function () {
console.log("IFrame加载成功")
unsafeWindow.downloadSingle = function (url, filename, filesize) {
const fileStream = unsafeWindow.streamSaver.createWriteStream(filename, {
size: filesize
})
fetch(url)
.then(response => {
if (response.status != 200) {
response.json().then(json => console.log(json));
return;
}
const readableStream = response.body
unsafeWindow.writer = fileStream.getWriter()
const reader = response.body.getReader()
const pump = () => reader.read()
.then(response => response.done ?
unsafeWindow.writer.close() :
unsafeWindow.writer.write(response.value).then(pump))
pump()
});
}
unsafeWindow.downloadBatch = function (downloadList) {
console.log("Batch Download", downloadList)
const firstFile = downloadList.metaList[downloadList.dlinkList[0].fs_id]
let totalSize = 0;
for (let index in downloadList.dlinkList) {
let fileList = downloadList.dlinkList[index];
let meta = downloadList.metaList[fileList.fs_id];
totalSize += meta.size;
}
console.log(totalSize)
const fileStream = unsafeWindow.streamSaver.createWriteStream(firstFile.server_filename + "等其他(" + (downloadList.dlinkList.length - 1) + ")个文件.zip", {
size: totalSize
})
const readableZipStream = new ZIP({
async pull(ctrl) {
for (let index in downloadList.dlinkList) {
let fileList = downloadList.dlinkList[index];
let metaList = downloadList.metaList[fileList.fs_id];
let dlink = fileList.dlink.replace("http://", "https://") + "&origin=dlna";
let finalUrl = await Tools.getFinalUrl(dlink)
console.log(finalUrl)
const res = await fetch(finalUrl)
const stream = () => res.body
const name = metaList.path
ctrl.enqueue({
name,
stream
})
}
ctrl.close()
}
})
// console.log(readableZipStream)
// more optimized
// less optimized
const writer = fileStream.getWriter()
const reader = readableZipStream.getReader()
const pump = () => reader.read()
.then(res => res.done ? writer.close() : writer.write(res.value).then(pump))
pump()
}
}
document.body.appendChild(iframe);
})
})
*/
function createApp(className, html) {
var ElementPlus = unsafeWindow.ElementPlus;
var Vue = unsafeWindow.Vue;
var render = html + `
下载设置
//