// ==UserScript== // @name 网盘提速 // @namespace https://github.com/syhyz1990/baiduyun // @version 1.2.3 // @author ahonker999夸克/百度/阿里/天翼/迅雷/移动六大网盘 // @description 加速六大网盘链接下载速度: // @license AGPL-3.0-or-later // @homepage http://bds.yt3166.com // @supportURL http://bds.yt3166.com // @antifeature membership // @match *://pan.baidu.com/disk/home* // @match *://yun.baidu.com/disk/home* // @match *://pan.baidu.com/disk/main* // @match *://yun.baidu.com/disk/main* // @match *://pan.baidu.com/s/* // @match *://yun.baidu.com/s/* // @match *://pan.baidu.com/share/* // @match *://yun.baidu.com/share/* // @match *://openapi.baidu.com/* // @match *://www.aliyundrive.com/s/* // @match *://www.aliyundrive.com/drive* // @match *://www.alipan.com/s/* // @match *://www.alipan.com/drive* // @match *://cloud.189.cn/web/* // @match *://pan.xunlei.com/* // @match *://pan.quark.cn/* // @match *://yun.139.com/* // @match *://caiyun.139.com/* // @require https://unpkg.com/jquery@3.7.0/dist/jquery.min.js // @require https://unpkg.com/sweetalert2@10.16.6/dist/sweetalert2.all.min.js // @require https://unpkg.com/js-md5@0.7.3/build/md5.min.js // @connect baidu.com // @connect baidupcs.com // @connect aliyundrive.com // @connect alipan.com // @connect 189.cn // @connect xunlei.com // @connect quark.cn // @connect bds.yt3166.com // @connect yun.139.com // @connect caiyun.139.com // @connect localhost // @connect * // @run-at document-idle // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_setClipboard // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_openInTab // @grant GM_info // @grant GM_registerMenuCommand // @grant GM_cookie // @grant window.close // @icon data:image/png;base64,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 // @downloadURL none // ==/UserScript== (function () { 'use strict'; let pt = '', selectList = [], params = {}, mode = '', width = 800, pan = {}, color = '', doc = $(document), progress = {}, request = {}, ins = {}, idm = {}; const scriptInfo = GM_info.script; const version = scriptInfo.version; const author = scriptInfo.author; const name = scriptInfo.name; const manageHandler = GM_info.scriptHandler; const manageVersion = GM_info.version; const customClass = { popup: 'pl-popup', header: 'pl-header', title: 'pl-title', closeButton: 'pl-close', content: 'pl-content', input: 'pl-input', footer: 'pl-footer' }; const terminalType = { wc: "Windows CMD", wp: "Windows PowerShell", lt: "Linux 终端", ls: "Linux Shell", mt: "MacOS 终端", }; let toast = Swal.mixin({ toast: true, position: 'top', showConfirmButton: false, timer: 3500, timerProgressBar: false, didOpen: (toast) => { toast.addEventListener('mouseenter', Swal.stopTimer); toast.addEventListener('mouseleave', Swal.resumeTimer); } }); const message = { success: (text) => { toast.fire({title: text, icon: 'success'}); }, error: (text) => { toast.fire({title: text, icon: 'error'}); }, warning: (text) => { toast.fire({title: text, icon: 'warning'}); }, info: (text) => { toast.fire({title: text, icon: 'info'}); }, question: (text) => { toast.fire({title: text, icon: 'question'}); } }; let base = { getCookie(name) { let cname = name + "="; let ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i].trim(); if (c.indexOf(cname) == 0) return c.substring(cname.length, c.length); } return ""; }, isType(obj) { return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase(); }, getValue(name) { return GM_getValue(name); }, setValue(name, value) { GM_setValue(name, value); }, deleteValue(name) { GM_deleteValue(name); }, getStorage(key) { try { return JSON.parse(localStorage.getItem(key)); } catch (e) { return localStorage.getItem(key); } }, setStorage(key, value) { if (this.isType(value) === 'object' || this.isType(value) === 'array') { return localStorage.setItem(key, JSON.stringify(value)); } return localStorage.setItem(key, value); }, setClipboard(text) { GM_setClipboard(text, 'text'); }, e(str) { return btoa(unescape(encodeURIComponent(str))); }, d(str) { return decodeURIComponent(escape(atob(str))); }, getExtension(name) { const reg = /(?!\.)\w+$/; if (reg.test(name)) { let match = name.match(reg); return match[0].toUpperCase(); } return ''; }, sizeFormat(value) { if (value === +value) { let unit = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; let index = Math.floor(Math.log(value) / Math.log(1024)); let size = value / Math.pow(1024, index); size = size.toFixed(1); return size + unit[index]; } return ''; }, sortByName(arr) { const handle = () => { return (a, b) => { const p1 = a.filename ? a.filename : a.server_filename; const p2 = b.filename ? b.filename : b.server_filename; return p1.localeCompare(p2, "zh-CN"); }; }; arr.sort(handle()); }, fixFilename(name) { return name.replace(/[!?&|`"'*\/:<>\\]/g, '_'); }, blobDownload(blob, filename) { if (blob instanceof Blob) { const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename; a.click(); URL.revokeObjectURL(url); } }, post(url, data, headers, type) { if (this.isType(data) === 'object') { data = JSON.stringify(data); } return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: "POST", url, headers, data, responseType: type || 'json', onload: (res) => { type === 'blob' ? resolve(res) : resolve(res.response || res.responseText); }, onerror: (err) => { reject(err); }, }); }); }, get(url, headers, type, extra) { return new Promise((resolve, reject) => { let requestObj = GM_xmlhttpRequest({ method: "GET", url, headers, responseType: type || 'json', onload: (res) => { if (res.status === 204) { requestObj.abort(); idm[extra.index] = true; } if (type === 'blob') { res.status === 200 && base.blobDownload(res.response, extra.filename); resolve(res); } else { resolve(res.response || res.responseText); } }, onprogress: (res) => { if (extra && extra.filename && extra.index) { res.total > 0 ? progress[extra.index] = (res.loaded * 100 / res.total).toFixed(2) : progress[extra.index] = 0.00; } }, onloadstart() { extra && extra.filename && extra.index && (request[extra.index] = requestObj); }, onerror: (err) => { reject(err); }, }); }); }, getFinalUrl(url, headers) { return new Promise((resolve, reject) => { let requestObj = GM_xmlhttpRequest({ method: "GET", url, headers, onload: (res) => { resolve(res.finalUrl) }, onerror: (err) => { reject(err); } }); }); }, stringify(obj) { let str = ''; for (var key in obj) { if (obj.hasOwnProperty(key)) { var value = obj[key]; if (Array.isArray(value)) { for (var i = 0; i < value.length; i++) { str += encodeURIComponent(key) + '=' + encodeURIComponent(value[i]) + '&'; } } else { str += encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&'; } } } return str.slice(0, -1); // 去掉末尾的 "&" }, addStyle(id, tag, css) { tag = tag || 'style'; let doc = document, styleDom = doc.getElementById(id); if (styleDom) return; let style = doc.createElement(tag); style.rel = 'stylesheet'; style.id = id; tag === 'style' ? style.innerHTML = css : style.href = css; doc.getElementsByTagName('head')[0].appendChild(style); }, sleep(time) { return new Promise(resolve => setTimeout(resolve, time)); }, getMajorVersion(version) { const [major] = (version || '').split('.'); return /^\d+$/.test(major) ? major : null; }, findReact(dom, traverseUp = 0) { const key = Object.keys(dom).find(key => { return key.startsWith("__reactFiber$") || key.startsWith("__reactInternalInstance$"); }); const domFiber = dom[key]; if (domFiber == null) return null; if (domFiber._currentElement) { let compFiber = domFiber._currentElement._owner; for (let i = 0; i < traverseUp; i++) { compFiber = compFiber._currentElement._owner; } return compFiber._instance; } const GetCompFiber = fiber => { let parentFiber = fiber.return; while (typeof parentFiber.type == "string") { parentFiber = parentFiber.return; } return parentFiber; }; let compFiber = GetCompFiber(domFiber); for (let i = 0; i < traverseUp; i++) { compFiber = GetCompFiber(compFiber); } return compFiber.stateNode || compFiber; }, initDefaultConfig() { let value = [{ name: 'setting_rpc_domain', value: 'http://localhost' }, { name: 'setting_rpc_port', value: '16800' }, { name: 'setting_rpc_path', value: '/jsonrpc' }, { name: 'setting_rpc_token', value: '' }, { name: 'setting_rpc_dir', value: 'D:' }, { name: 'setting_terminal_type', value: 'wc' }, { name: 'setting_theme_color', value: '#09AAFF' }, { name: 'setting_init_code', value: '' }, { name: 'license', value: '' }]; value.forEach((v) => { base.getValue(v.name) === undefined && base.setValue(v.name, v.value); }); }, showSetting() { let dom = '', btn = '', colorList = ['#09AAFF', '#cc3235', '#526efa', '#518c17', '#ed944b', '#f969a5', '#bca280']; dom += ``; dom += ``; dom += ``; dom += ``; dom += ``; colorList.forEach((v) => { btn += `
`; }); dom += ``; dom += `