// ==UserScript== // @name 百度网盘SVIP高速解析直链的不限速下载助手-文武PanDownload // @namespace https://github.com/dongyubin/Baidu-VIP // @version 3.2 // @description 不限制速度的百度网盘SVIP解析高速直链的脚本助手,无视黑号,100%可用,下载速度最快可达10M+/s,支持 Gopeed(一键解析)、IDM、NDM 等多线程极速下载工具,支持 Microsoft Edge、Google Chrome、Firefox 等浏览器。 // @author dongyubin // @homepage https://fk.wwkejishe.top/buy/23 // @supportURL https://fk.wwkejishe.top/buy/23 // @license MIT // @icon https://fk.wwkejishe.top/uploads/images/6e798005b00ce678782af4e6931f4374.png // @resource layuiCSS https://cdnjs.cloudflare.com/ajax/libs/layui/2.9.20/css/layui.min.css // @require https://cdnjs.cloudflare.com/ajax/libs/layui/2.9.20/layui.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js // @match *://pan.baidu.com/* // @match *://yun.baidu.com/* // @match *://pan.baidu.com/disk/home* // @match *://yun.baidu.com/disk/home* // @match *://pan.baidu.com/disk/timeline* // @match *://yun.baidu.com/disk/timeline* // @match *://pan.baidu.com/disk/main* // @match *://yun.baidu.com/disk/main* // @match *://pan.baidu.com/disk/base* // @match *://yun.baidu.com/disk/base* // @match *://pan.baidu.com/s/* // @match *://yun.baidu.com/s/* // @match *://pan.baidu.com/aipan/* // @match *://yun.baidu.com/aipan/* // @match *://pan.baidu.com/share/* // @match *://yun.baidu.com/share/* // @match *://openapi.baidu.com/* // @connect aifenxiang.net.cn // @connect baidu.com // @connect * // @connect 127.0.0.1 // @grant GM_cookie // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_xmlhttpRequest // @grant GM_setClipboard // @grant GM_notification // @grant GM_info // @antifeature ads // @antifeature membership // @antifeature referral-link // @downloadURL none // ==/UserScript== (function () { 'use strict'; const layuiCss = GM_getResourceText('layuiCSS'); GM_addStyle(layuiCss + ` .layui-icon-close:before { content: "x" !important; } `); const wwConfig = { mainUrl: 'https://aifenxiang.net.cn:8081', bdPassword: '1234', titleName: '文武PanDownload', goPeedTaskUrl: 'http://127.0.0.1:9999/api/v1/tasks', ua: 'netdisk;1.0.1', one_parse: { code: 'bd-2', version: '1.1.4' }, wx_parse: { version: "1.0.9" } }; layui.use(['layer'], async function () { var layer = layui.layer, $ = layui.$; var form = layui.form; if (location.href.startsWith('https://pan.baidu.com/s/')) { $('.x-button-box').prepend( '' ); } else { if ($('.tcuLAu').is('*')) { $('.tcuLAu').prepend( ' ' ); } else { $('.wp-s-agile-tool-bar__header.is-header-tool').prepend( '
' ); } } $('#downbtn_share').click(function () { swal({ title: '提示', text: '请先保存到自己的网盘后,在网盘里解析下载!', icon: 'warning', }); return false; }); $('#downbtn_main').click(function () { let select = selectList(); let selected = Object.keys(select); if (selected.length == 0) { swal({ text: '请先选择一个文件', icon: 'warning', }); return false; } else if (selected.length > 1) { swal({ text: '目前仅支持单个文件解析', icon: 'warning', }); return false; } else if (select[selected[0]].isdir == 1) { swal({ text: '目前不支持文件夹解析', icon: 'warning', }); return false; } // const wwJieXiDiv = document.createElement('div'); // let createDiv = ` //`+ GM_info.script.name + ` 最新的脚本版本号为:` + GM_info.script.version + `
百度VIP | 百度SVIP | Pandownload月卡 |
---|---|---|
¥25/月 | ¥40/月 | ¥9/月 |
20G/月 | 不限制 | 不限制文件大小、不限制文件数量、高速下载 |
点击购买(高质量)网盘会员:¥3/4天,¥7.5/25天,¥22.8/年
2023-2024 © Github By @dongyubin
正在发送中,请稍后...
'); testDownload('#parseBtn'); let one_url = wwConfig.mainUrl + '/wp/getCodeNum'; share_one_baidu(openInfoLayer, one_url, wwConfig.one_parse.code, wwConfig.one_parse.version); }); $('#parseWxBtn').on('click', async function () { let captchaStr = $('#captcha').val(); if (captchaStr) { $('#parseWxBtn').html('正在发送中,请稍后...
'); testDownload('#parseWxBtn'); let one_url = wwConfig.mainUrl + '/wp/getPcCodeNum'; share_one_baidu(openInfoLayer, one_url, captchaStr, wwConfig.wx_parse.version); } else { layer.msg('请输入验证码'); } }); // 复制 User-Agent 按钮的事件处理 $('#copyUaBtn').on('click', function () { copy_text(wwConfig.ua, 'User-Agent'); }); }, }); }); }); async function testDownload(btn_id) { let testDown = await testSendToGopeed(); if (!testDown) { layer.close(openInfoLayer); swal({ title: "下载 Gopeed 加速器", text: '请先安装 Gopeed 并打开运行(点击按钮下载 Gopeed)。', icon: 'warning', type: "warning", showCancelButton: true, showConfirmButton: true, confirmButtonText: '点击下载Gopeed', confirmButtonColor: "#dd6b55", }).then(function () { window.open('https://pan.quark.cn/s/0b2e9c6e94b0'); }); $(btn_id).html('发送到Gopeed
'); return; } } function selectList() { var select = {}; var option = []; try { option = require('system-core:context/context.js').instanceForSystem.list.getSelected(); } catch (e) { option = document.querySelector('.wp-s-core-pan').__vue__.selectedList; } option.forEach((element) => { select[element.fs_id] = element; }); return select; } function init_parse(code) { switch (code) { case 1: layer.msg('解析中', { icon: 6, time: 3000, }); setTimeout(() => { $('#parseBtn').html('发送到Gopeed
'); $('#parseWxBtn').html('发送到Gopeed
'); layer.alert('解析通道比较拥堵,请重试!', { title: '提示', }); }, 3000); break; case 2: layer.alert( '验证码错误,一个验证码只能下载一个文件,请重新获取!', { title: '提示', closeBtn: 0 }, function (index) { $('#parseWxBtn').html('发送到Gopeed
'); layer.close(index); } ); break; default: wwConfig.one_parse.version = 1; break; } } function share_one_baidu(openInfoLayer, url, code, version) { let select = Object.keys(selectList()); let bdstoken = ''; let data_json = {}; try { data_json = $('html') .html() .match(/(?<=locals\.mset\()(.*?)(?=\);)/)[0]; data_json = JSON.parse(data_json); wwConfig.username = data_json.username; bdstoken = data_json.bdstoken; } catch (e) { data_json = $('html') .html() .match(/(?<=window\.locals\s=\s)(.*?)(?=;)/)[0]; data_json = JSON.parse(data_json); wwConfig.username = data_json.userInfo.username; bdstoken = data_json.userInfo.bdstoken; } wwConfig.data_json = data_json; // const param = { // bdstoken: bdstoken, // period: 1, // pwd: wwConfig.bdPassword, // eflag_disable: true, // channel_list: '%5B%5D', // schannel: 4, // fid_list: JSON.stringify(select), // }; $.ajax({ type: 'GET', url: 'https://pan.baidu.com/share/set', async: true, data: { bdstoken: bdstoken, period: 1, pwd: wwConfig.bdPassword, eflag_disable: true, channel_list: '%5B%5D', schannel: 4, fid_list: JSON.stringify(select), }, dataType: 'json', success: function (res) { if (res.show_msg.indexOf('禁止') > -1) { swal({ text: '该文件禁止分享', icon: 'error', }); return false; } else { let shorturl = ''; try { shorturl = res.link.split('/').pop(); } catch (error) { swal({ text: '初始化准备失败', icon: 'error', }); return false; } fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ code: code, userKey: 'main', fsId: select[0], version: version, }), }) .then((resp) => resp.json()) .then((res) => { let laysermsg = layer.msg('正在解析中', { icon: 6, time: 10000, }); if (res.code == 200) { wwConfig.code = code; if (res.data > 100 || res.data.data > 100) { get_down_list( shorturl, wwConfig.bdPassword, openInfoLayer, res.data, laysermsg ); } else if (res.data == 80 || res.data.data == 80) { init_parse(1); } else if (res.data == 60 || res.data.data == 60) { init_parse(1); } else if (res.data == 50 || res.data.data == 50) { init_parse(2); } else { init_parse(2); } } else if (res.code == 500) { layer.close(openInfoLayer); layer.close(laysermsg); swal({ text: res.msg, icon: 'warning', }); } }); } }, error: function (res) { swal({ text: '初始化准备请求访问失败', icon: 'error', }); }, }); } function copy_text(text, msg) { navigator.clipboard.writeText(text).then(() => { layer.msg(msg + ' 已复制到剪贴板'); }).catch(err => { layer.msg('复制失败,请手动复制:' + text); }); } async function get_down_list(shorturl, password, openInfoLayer, pwd, laysermsg) { let ajax_data = { shorturl: shorturl, pwd: password, dir: 1, root: 1, userKey: 'main', }; fetch(wwConfig.mainUrl + '/wp/parseCopyLink', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(ajax_data), }) .then((resp) => resp.json()) .then((res) => { if (res.code == 200) { const size = parseInt(res.data.data.list[0].size); if (size > 3221225472) { layer.close(openInfoLayer); layer.close(laysermsg); $('#parseBtn').html('发送到Gopeed
'); swal({ text: '文件大于 3G,插件暂不支持下载,请前往 PC 网页版下载!', icon: 'warning', }); return false; } const requestData = { fsId: res.data.data.list[0].fs_id, shareid: res.data.data.shareid, uk: res.data.data.uk, sekey: res.data.data.seckey, randsk: res.data.data.seckey, fs_ids: [res.data.data.list[0].fs_id], path: res.data.data.list[0].server_filename, size: res.data.data.list[0].size, surl: shorturl, url: `https://pan.baidu.com/s/${shorturl}`, userKey: 'main', pwd: password, dir: '/', }; console.log(requestData); GM_xmlhttpRequest({ method: 'POST', url: wwConfig.mainUrl + '/wp/dlink', headers: { 'Content-Type': 'application/json', }, data: JSON.stringify(requestData), onload: function (response) { const responseData = JSON.parse(response.responseText); console.log(responseData); if (responseData.code !== 200) { layer.close(openInfoLayer); layer.close(laysermsg); swal({ text: responseData.msg, icon: 'warning', }); } else { layer.close(laysermsg); $('#parseBtn').html('发送到Gopeed
'); if (responseData.data.vip) { wwConfig.url = responseData.data.data[0].url; wwConfig.ua = responseData.data.data[0].ua; } else { wwConfig.url = responseData.data.data.urls[0].url; } sendToGopeed(res.data.data.list[0]); } }, onerror: function (response) { layer.close(openInfoLayer); layer.close(laysermsg); const errorMessage = JSON.parse(response.responseText).message || '网络错误'; swal({ text: '发送到Gopeed遇到问题了,请刷新重试即可!!', icon: 'warning', }); }, }); } else { layer.close(openInfoLayer); layer.close(laysermsg); $('#parseBtn').html('发送到Gopeed
'); $('#parseWxBtn').html('发送到Gopeed
'); swal({ text: '发送到Gopeed遇到问题了,请升级插件刷新重试即可!!', icon: 'warning', }); } }); } function testSendToGopeed() { return fetch(wwConfig.goPeedTaskUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, }) .then((resp) => resp.json()) .then((res) => { return true; }).catch(e => { return false; }) } function sendToGopeed(item) { fetch(wwConfig.goPeedTaskUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ req: { url: wwConfig.url, extra: { header: { "User-Agent": wwConfig.ua, } } }, opt: { extra: { connections: 256, } } }), }).then((resp) => resp.json()) .then((res) => { layer.confirm(`请打开 Gopeed 查看 ${item.server_filename} 是否开始下载?未下载成功,先设置IDM/NDM User-Agent:` + wwConfig.ua + `
,再复制直链下载!`, {
btn: ['已下载,关闭弹窗', '未下载,复制直链']
}, function (index) {
layer.close(index);
}, function () {
GM_setClipboard(wwConfig.url, "text");
layer.msg(`${item.server_filename} 的直链复制成功!`);
});
}).catch(e => {
})
}
setInterval(() => {
GM_xmlhttpRequest({
method: 'get',
url: wwConfig.goPeedTaskUrl + '?status=running',
headers: {
'Content-Type': 'application/json',
},
onload: function (response) {
const responseData = JSON.parse(response.responseText);
const result = responseData.data.filter(e =>
e.status === "running"
).filter((e) => e.progress.speed < 1048576).map(e => e.id);
const ids = result.map((e) => {
return `id=${e}`
}).join('&')
if (ids && ids.length) {
GM_xmlhttpRequest({
method: 'put',
url: `${wwConfig.goPeedTaskUrl}/pause?${ids}`,
headers: {
'Content-Type': 'application/json',
},
onload: function (response) {
GM_xmlhttpRequest({
method: 'put',
url: `${wwConfig.goPeedTaskUrl}/continue?${ids}`,
headers: {
'Content-Type': 'application/json',
},
onload: function (response) {
}
})
}
})
}
}
})
}, 15000)
})();