您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动检测 mp4ba 百度网盘分享链接,一键保存
// ==UserScript== // @name mp4ba百度网盘一键保存 // @namespace http://tampermonkey.net/ // @version 0.4 // @description 自动检测 mp4ba 百度网盘分享链接,一键保存 // @author zsandianv // @match http://www.mp4ba.cc/* // @match http://mp4ba.cc/* // @match https://pan.baidu.com/share/* // @match https://pan.baidu.com/s/* // @match http://23.225.57.26:89/* // @grant GM_xmlhttpRequest // @require https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/Minified/notiflix-2.1.3.min.js // @connect pan.baidu.com // ==/UserScript== (function() { 'use strict'; let domparser = new DOMParser(); let path = '/';//请自行修改 async function verifypwd ( url , pwd ) { let responsedata = []; let surl; let doc; console.log(5) await ajax( 'GET', url,'' , ) .then( response => { responsedata = response; console.log( responsedata ) } ); doc = domparser.parseFromString( responsedata.responseText, "text/html" ); if ( responsedata.status === 200 ){ surl = responsedata.finalUrl.split('=')[1]; let r = /yunData.setData\((.*?)\)/; r.exec( responsedata.responseText ); let yunData = JSON.parse( RegExp.$1 ); let queryData = { surl: surl , t: (new Date()).valueOf() , channel: 'chunlei' , web: 1 , app_id: '250528' , bdstoken: yunData.bdstoken , clienttype:0 } let headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer': responsedata.finalUrl } let postData = 'pwd=' + pwd + '&vcode=&vcode_str='; let verifyurl = 'https://pan.baidu.com/share/verify?' + $.param(queryData); await ajax( 'POST', verifyurl , postData , headers ) .then( response => { responsedata = response; console.log( responsedata ) } ); if ( JSON.parse( responsedata.responseText ).errno === 0 ) { saveFile ( url ) } else{ Notiflix.Notify.Failure('提取码验证失败') } } } async function checkUrl ( ) { console.log(1) let responsedata = []; let doc; let url; let pwd; let dow_con = $('div.btn-group.cloud'); for (var i = 0; i < dow_con.length; i++) { if ( dow_con[i].children.length === 1 ){ let btnToolHTML = '<a href="javascript:;" target="_self" class="btn btn-default btnbd">没有分享链接</a>' Notiflix.Notify.Failure('没有分享链接') $(btnToolHTML).appendTo('div.btn-group.cloud:first') continue; } else{ if ( i === 0 ){ url = $('div.btn-group.cloud:first')[0].children[0].href; pwd = $('div.btn-group.cloud:first')[0].children[1].innerText.split(':')[1]; } else { url = $('div.btn-group.cloud:last')[0].children[0].href; pwd = $('div.btn-group.cloud:last')[0].children[1].innerText.split(':')[1]; } } await ajax( 'GET', url,'' , ) .then( response => { responsedata = response; console.log( responsedata ) } ); doc = domparser.parseFromString( responsedata.responseText, "text/html" ); if ( responsedata.status === 200 ){ if ( responsedata.finalUrl === url ){ if (doc.getElementsByClassName("error-img").length !== 0 ){ console.log(2) Notiflix.Notify.Failure('链接已失效') let btnToolHTML = '<a href="javascript:;" target="_self" class="btn btn-default btnbd">链接已失效</a>' if ( i === 0){ $(btnToolHTML).appendTo('div.btn-group.cloud:first') } else{ $(btnToolHTML).appendTo('div.btn-group.cloud:last') } continue; } else { console.log(3) Notiflix.Notify.Success('链接有效') let btnToolHTML = '<a href="javascript:;" target="_blank" class="btn btn-default btnbd">一键保存</a>' if ( i === 0){ $(btnToolHTML).appendTo('div.btn-group.cloud:first').click(function () { Notiflix.Notify.Warning('正在保存,请稍后...'); saveFile ( url ); return false; }); } else{ $(btnToolHTML).appendTo('div.btn-group.cloud:last').click(function () { Notiflix.Notify.Warning('正在保存,请稍后...'); saveFile ( url ); return false; }); } } } else if ( responsedata.finalUrl.indexOf("surl") !== -1 ){ console.log(4) Notiflix.Notify.Success('链接有效') let btnToolHTML = '<a href="javascript:;" target="_blank" class="btn btn-default btnbd">一键保存</a>' if ( i === 0){ $(btnToolHTML).appendTo('div.btn-group.cloud:first').click(function () { Notiflix.Notify.Warning('正在保存,请稍后...'); verifypwd ( url , pwd); return false; }); } else{ $(btnToolHTML).appendTo('div.btn-group.cloud:last').click(function () { Notiflix.Notify.Warning('正在保存,请稍后...'); verifypwd ( url , pwd); return false; }); } } else { let btnToolHTML = '<a href="javascript:;" target="_self" class="btn btn-default btnbd">未知错误</a>' Notiflix.Notify.Failure('未知错误') if ( i === 0){ $(btnToolHTML).appendTo('div.btn-group.cloud:first') } else{ $(btnToolHTML).appendTo('div.btn-group.cloud:last') } } } } } async function saveFile ( url ) { console.log(6) Notiflix.Notify.Warning('正在保存,请稍后...'); let responsedata = []; let surl; let doc; let params = []; let fsidlist = []; await ajax( 'GET', url,'' , ) .then( response => { responsedata = response; console.log( responsedata ) } ); doc = domparser.parseFromString( responsedata.responseText, "text/html" ); let r = /yunData.setData\((.*?)\)/; r.exec( responsedata.responseText ); let yunData = JSON.parse( RegExp.$1 ); let queryData = { shareid: yunData.shareid , from: yunData.uk , channel: 'chunlei' , web: 1 , app_id: '250528' , bdstoken: yunData.bdstoken, clienttype: 0 } if (yunData['file_list']['list']){ $.each(yunData['file_list']['list'], function (index, element) { fsidlist.push(element.fs_id) }); } let option = { fsidlist: '[' + fsidlist.toString() + ']' , path: path } let headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer': url } let saveApi = 'https://pan.baidu.com/share/transfer?' + $.param(queryData); for ( let k in option ) params.push( `${encodeURIComponent(k)}=${encodeURIComponent(option[k])}` ); let postData = params.join( '&' ); await ajax( 'POST', saveApi , postData , headers ) .then( response => { responsedata = response; console.log( responsedata ) } ); let data = JSON.parse( responsedata.responseText ); if ( data.errno === 0 ) { Notiflix.Notify.Success('保存成功') } else if ( data.errno === 12 ){ for (let i = 0; i < data.info.length; i++) { if ( data.info[i].errno === -30 ){ Notiflix.Notify.Failure('文件已存在') } else { Notiflix.Notify.Failure('保存失败,请手动保存') } } } else { Notiflix.Notify.Failure('保存失败,请手动保存') } } function tips (){ let head = document.getElementsByTagName("head")[0]; let link = document.createElement("link"); link.rel = "stylesheet"; link.type = "text/css"; link.href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/Minified/notiflix-2.1.3.min.css"; head.appendChild(link); let script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/Minified/notiflix-2.1.3.min.js"; head.appendChild(script); Notiflix.Notify.Init({fontSize:"18px",timeout:3000,showOnlyTheLastOne:true}); Notiflix.Report.Init(); Notiflix.Confirm.Init(); Notiflix.Loading.Init({svgColor:"#f60000",}); } async function checkSite ( ) { tips () if ( document.querySelector( 'a.btn.btn-default.btnbd') !== null ){ checkUrl ( ) } else if ( document.querySelector( 'a.g-button.g-button-blue') !== null ){ await saveFile ( window.location.href ) } else if ( document.querySelector( 'div.error-img') !== null ){ Notiflix.Notify.Failure('链接失效') } else if ( document.querySelector( 'div.verify-form') !== null ){ Notiflix.Notify.Failure('请输入提取码') } } checkSite ( ) function ajax ( Method, Url, Data, Headers ) { return new Promise( ( resolve, reject ) => { GM_xmlhttpRequest( { url: Url, method: Method, data: Data, headers: Headers, onload: function ( response ) { resolve( response ); } } ); } ); } // Your code here... })();