// ==UserScript== // @name 网盘自动填写访问码【威力加强版】 // @description 智能融合网盘密码到网址中,打开网盘链接时不再需要手动复制密码,并自动提交密码,一路畅通无阻。同时记录网盘信息,当你再次打开该分享文件时,不再需要去找提取码,同时可追溯网盘地址的来源。 // @author 极品小猫 // @namespace https://greasyfork.org/zh-CN/users/3128 // @version 3.14.17 // // @include http://* // @include https://* // // @exclude http*://*.pcs.baidu.com/* // @exclude http*://*.baidupcs.com/* // @exclude http*://*:8666/file/* // @exclude http*://*.baidu.com/file/* // @exclude http*://index.baidu.com/* // // @exclude http*://*.gov/* // @exclude http*://*.gov.cn/* // @exclude http*://*.taobao.com/* // @exclude http*://*.tmall.com/* // @exclude http*://*.alimama.com/* // @exclude http*://*.jd.com/* // @exclude http*://*.zol.com.cn/* // @exclude http*://*.ctrip.com/* // @exclude http*://*.evernote.com/* // @exclude http*://*.yinxiang.com/* // @exclude http*://mail.* // @exclude http*://ping.* // @exclude http*://inbox.google.com/* // @exclude /^https?://(localhost|10\.|192\.|127\.)/ // @exclude /https?://www.baidu.com/(?:s|baidu)\?/ // @exclude http*://www.zhihu.com/question/*/answers/created // @exclude https://caiyun.feixin.10086.cn/portal/index.jsp#myfile* // @require https://cdn.staticfile.org/jquery/2.1.4/jquery.min.js // @require https://greasyfork.org/scripts/35940-my-jquery-plugin/code/My%20jQuery%20Plugin.js?version=234478 // @supportURL https://greasyfork.org/zh-CN/scripts/29762/feedback // @icon https://eyun.baidu.com/box-static/page-common/images/favicon.ico // @connect agefans.tv // @grant unsafeWindow // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_listValues // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_notification // @grant GM_registerMenuCommand // @grant GM_info // @noframes // @encoding utf-8 // @run-at document-idle // @downloadURL none // ==/UserScript== (function(){ 'use strict'; let urls=location.href, hash=location.hash, host=location.hostname.replace(/^(?:www|pan)\.(?!baidu.com)/i,'').replace(/([^.]+)\.(?=lanzou[xsi]?.com)/,'').toLowerCase(), hosts=location.hostname.toLowerCase(), search=location.search, paths=location.pathname.toLowerCase(), Control_newTag=true, // 网盘链接添加以新页面打开属性 u=unsafeWindow, msgControl=true; //信息日志关闭开关 //管理功能开关 & 设置 let CatPW_Manage_Config, // 管理功能配置,采用 GM_setValue API进行保存,非 localStorage StorageSave, // 信息记录功能,localStorage 记录密码开关 StorageExp, // localStorage 记录密码的有效期(天数) UpdataConfig={ UpdataSave:true, // 再次访问该网盘地址时,更新信息 UpdataNotify:true, // 更新该网盘地址时,发出桌面通知 UpdataPlugin:true, // 脚本更新后,发出桌面通知 UpdataVersion:GM_info.script.version //记录脚本的版本号 }; if(typeof(GM_getValue('CatPW_Manage'))==='undefined') { CatPW_Manage_Config={'StorageSave':true,'UpdataConfig':UpdataConfig,'StorageExp':365}; GM_setValue('CatPW_Manage', CatPW_Manage_Config); } else { CatPW_Manage_Config=GM_getValue('CatPW_Manage'); if(!CatPW_Manage_Config.UpdataConfig) { CatPW_Manage_Config.UpdataConfig=UpdataConfig; GM_setValue('CatPW_Manage', CatPW_Manage_Config); } if(!CatPW_Manage_Config.UpdataConfig.UpdataVersion) { CatPW_Manage_Config.UpdataConfig.UpdataVersion=GM_info.script.version; GM_setValue('CatPW_Manage', CatPW_Manage_Config); } } StorageSave=CatPW_Manage_Config.StorageSave; StorageExp=CatPW_Manage_Config.StorageExp; UpdataConfig=CatPW_Manage_Config.UpdataConfig; let Cat = { changelog : { "3.14.17" : { "date" : "2021.01.26", "info" : "【修复】BUG", "detail" : "【修复】BUG" } }, UpdataPlugin : function(e){ //插件更新提示 let v1=CatPW_Manage_Config.UpdataConfig.UpdataVersion, v1arr=v1.split('.'); let v2=GM_info.script.version, v2arr=v2.split('.'); if(this.changelog[v2]) { for(let i=0;iNumber(v1arr[i])) { GM_notification({ 'title' : GM_info.script.name + ' 更新日志', 'text' : '本次更新内容(该消息仅提醒一次)'+'\n当期版本:'+v2+'\n更新日期:'+this.changelog[v2]['date']+'\n'+this.changelog[v2]['info'], 'image' : 'https://eyun.baidu.com/box-static/page-common/images/favicon.ico', 'timeout' : 60, 'onclick' : function(e){ alert('更新日志详细\r\n'+Cat.changelog[v2]['detail']||Cat.changelog[v2]['info']); } }); CatPW_Manage_Config.UpdataConfig.UpdataVersion=v2; GM_setValue('CatPW_Manage', CatPW_Manage_Config); break; } } } else { console.error('网盘自动填写密码【威力加强版】版本号信息与当前更新日志不符,无法显示更新提示。'); } }, init : function(){ this.UpdataPlugin();//更新提示 } }; Cat.init(); var site = { 'pwdRule' : /(?:提取|访问)[码碼]?\s*[:: ]?\s*([a-z\d]{4})/, //常规密码 'codeRule' : /(?:(?:提取|访问|密[码碼]|艾|Extracted-code)[码碼]?)\s*[:: ]?\s*([a-z\d]{4})/i, //其它类型的密码 'YunDisk':{ 'pan.baidu.com':{ surl : function(){ if(getQueryString('surl')) return getQueryString('surl'); else if(yunData.LRURPVSDB) return yunData.LRURPVSDB.replace(/%26%2Fs%2F.+/,''); else return location.pathname.replace('/s/1','').replace(/#.+/,''); }, chk : /^[a-z0-9]{4}$/, code : '.pickpw input, #accessCode', btn : '.g-button, #submitBtn, #getfileBtn', PreProcess: function() { //已处理 console.group('===== 百度网盘自动填写密码 Begin ====='); let CatPW_BaiduPan={ CatPW_Manage : function(){ let CatPW_Manage_Menu_Fn = { infoFn : function(e){ //信息记录功能 StorageSave=CatPW_Manage_Config.StorageSave=StorageSave?!confirm('你已开启“信息记录功能”,是否需要关闭?'):confirm('你已关闭“信息记录功能”,是否需要开启?'); $(this).text(StorageSave?'已开启信息记录功能':'已关闭信息记录功能'); CatPW_Manage_Menu_Fn.save(); CatPW_BaiduPan.ShowInfo(); }, UpdataConfigFn : { UpdataSave : function(e){ UpdataConfig.UpdataSave=CatPW_Manage_Config.UpdataConfig.UpdataSave=UpdataConfig.UpdataSave?!confirm('你已开启“信息记录更新功能”,是否需要关闭?'):confirm('你已关闭“信息记录更新功能”,是否需要开启?'); $(this).text(UpdataConfig.UpdataSave?'已开启记录更新功能':'已关闭记录更新功能'); CatPW_Manage_Menu_Fn.save(); }, UpdataNotify : function(e){ UpdataConfig.UpdataNotify=CatPW_Manage_Config.UpdataConfig.UpdataNotify=UpdataConfig.UpdataNotify?!confirm('你已开启“信息记录更新桌面通知功能”,是否需要关闭?'):confirm('你已关闭“信息记录更新桌面通知功能”,是否需要开启?'); $(this).text(UpdataConfig.UpdataNotify?'已开启更新桌面通知':'已关闭更新桌面通知'); CatPW_Manage_Menu_Fn.save(); }, UpdataPlugin : function(e){ UpdataConfig.UpdataPlugin=CatPW_Manage_Config.UpdataConfig.UpdataPlugin=UpdataConfig.UpdataPlugin?!confirm('你已开启“脚本更新桌面通知功能”,是否需要关闭?'):confirm('你已关闭“脚本更新桌面通知功能”,是否需要开启?'); $(this).text(UpdataConfig.UpdataPlugin?'脚本更新桌面通知':'脚本更新不通知'); CatPW_Manage_Menu_Fn.save(); }, MessageUI : function(e){ UpdataConfig.MessageUI=CatPW_Manage_Config.UpdataConfig.MessageUI=UpdataConfig.MessageUI?!confirm('你已开启“浮动窗式的网盘信息”,是否切换为“网页嵌入式的网盘信息”?'):confirm('你已开启“网页嵌入式的网盘信息”,是否切换为“浮动窗式的网盘信息”?'); $(this).text(UpdataConfig.MessageUI?'使用嵌入式的网盘信息':'使用浮动窗的网盘信息'); CatPW_Manage_Menu_Fn.save(); location.reload(); } }, Exp : function(e){ var _StorageExpTemp; do{ _StorageExpTemp=prompt("设置信息保存时间(天数):", _StorageExpTemp||StorageExp)||_StorageExpTemp||StorageExp; if(!/^\d+$/.test(_StorageExpTemp)) { alert('所设置的天数不是数字,请重新设置'); } else break; } while(!/^\d+$/.test(_StorageExpTemp)); StorageExp=CatPW_Manage_Config.StorageExp=_StorageExpTemp; $(this).text('信息保存时间:'+_StorageExpTemp+'天'); CatPW_Manage_Menu_Fn.save(); }, CleanInfo : function(e){ var _CleanInfo=confirm("如果所记录的信息并没有及时更新,可通过该功能清除记录。"); if(_CleanInfo) GM_setValue('CatPW', {}); }, save : function(){ GM_setValue('CatPW_Manage', CatPW_Manage_Config); } }; var CatPW_Manage_Main=$('').attr({'class':'g-dropdown-button'}).css({'width':'135px'}); var CatPW_Manage_A=$('').attr({'class':'g-button','data-button-id':'b300','data-button-index':'300','href':'javascript:void(0);'}); var CatPW_Manage_A_span=$(''); var CatPW_Manage_A_span_span=$('').text('密码填写管理'); var CatPW_Manage_Menu=$(''); var CatPW_Manage_Menu_infoFn=$('').text(StorageSave?'已开启信息记录功能':'已关闭信息记录功能').attr({'data-menu-id':'b-menu307'}).click(CatPW_Manage_Menu_Fn.infoFn); var CatPW_Manage_Menu_Exp=$('').text('信息保存时间:'+StorageExp+'天').attr({'data-menu-id':'b-menu308'}).click(CatPW_Manage_Menu_Fn.Exp); var CatPW_Manage_Menu_CleanInfo=$('').text('清除缓存记录信息').attr({'data-menu-id':'b-menu309'}).click(CatPW_Manage_Menu_Fn.CleanInfo); var CatPW_Manage_Menu_UpdataSave=$('').text(UpdataConfig.UpdataSave?'已开启记录更新功能':'已关闭记录更新功能').attr({'data-menu-id':'b-menu310'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.UpdataSave); var CatPW_Manage_Menu_UpdataNotify=$('').text(UpdataConfig.UpdataNotify?'已开启更新桌面通知':'已关闭更新桌面通知').attr({'data-menu-id':'b-menu311'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.UpdataNotify); var CatPW_Manage_Menu_UpdataPlugin=$('').text(UpdataConfig.UpdataPlugin?'脚本更新桌面通知':'脚本更新不通知').attr({'data-menu-id':'b-menu313'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.UpdataPlugin); var CatPW_Manage_Menu_MessageUI=$('').text(UpdataConfig.MessageUI?'使用嵌入式的网盘信息':'使用浮动窗的网盘信息').attr({'data-menu-id':'b-menu314'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.MessageUI); CatPW_Manage_A.append(CatPW_Manage_A_span); CatPW_Manage_A_span.append(CatPW_Manage_A_span_span); CatPW_Manage_Menu.append(CatPW_Manage_Menu_infoFn, CatPW_Manage_Menu_Exp, CatPW_Manage_Menu_CleanInfo, '
', CatPW_Manage_Menu_UpdataSave, CatPW_Manage_Menu_UpdataNotify, CatPW_Manage_Menu_UpdataPlugin, CatPW_Manage_Menu_MessageUI); CatPW_Manage_Main.insertBefore('.x-button-box>.g-button.g-button-blue'); CatPW_Manage_Main.append(CatPW_Manage_A).append(CatPW_Manage_Menu).hover(function(){ CatPW_Manage_Main.toggleClass('button-open'); }); GM_addStyle('.slide-show-right{width:650px!important;}'); }, ShowInfo : function(){ //显示信息记录 var CatPW_Info_Display=$('#CatPW_Info').css('display'); if(CatPW_Info_Display) { if(CatPW_Info_Display=='none') $('#CatPW_Info').css('display','block'); else $('#CatPW_Info').css('display','none'); } else if(StorageSave){ //插入信息记录 var yunData=unsafeWindow.yunData, //取得 yunData 数据 CatPW, CatPW_Format={'date':Dates(),'sCode':'', unPW:'', 'Src':'', 'surl':'', 'Hash':'', "webSrc":'', "webTitle":''}; //初始化信息记录变量 yunData.surl=getQueryString('surl')||location.pathname.replace('/s/1','').replace(/#.+/,''); //获取当前的分享ID,并添加到 yunData 中 yunData.Src=getQueryString('Src')||location.href.replace(location.search,''); //初始化 getValue 数据 if(typeof(GM_getValue('CatPW'))==='undefined') { if(StorageDB('Share_'+yunData.surl).read()) GM_setValue('CatPW', StorageDB('Share_'+yunData.surl).read()); else GM_setValue('CatPW', CatPW_Format); //初始化 } var isCatPW=GM_getValue('CatPW').Src.search(yunData.surl)>0; //检查当前网盘地址是否与记录匹配 var isCatPW_DB=StorageDB('Share_'+yunData.surl).read(); CatPW=isCatPW?GM_getValue('CatPW'):isCatPW_DB?isCatPW_DB:CatPW_Format; //取得信息记录 CatPW.Src=urls.replace(hash,''); CatPW.surl='Share_'+yunData.surl; //获取 分享文件surl CatPW.unPW=decodeURIComponent(CatPW.unPW); CatPW.webSrc=decodeURIComponent(CatPW.webSrc); CatPW.webTitle=decodeURIComponent(CatPW.webTitle); CatPW.sCode=CatPW.sCode||(CatPW.Hash?CatPW.Hash.replace('#',''):/^#/.test(hash)&&!/^#list\/path=/i.test(hash)?hash.match(/^#([^&]+)&?/)[1]:''); //获取 提取码 if(!localStorage[CatPW.surl]) { //当不存在记录时,收集信息 msg('不存在记录,插入信息', 'Src:'+CatPW.Src, 'surl:'+yunData.surl, CatPW); if(CatPW.Src.search(yunData.surl)<0) {//新记录中的网盘地址与当前的分享ID不一致时,更新信息记录变量 CatPW.Src=urls.replace(hash,''); CatPW.Hash=hash; CatPW.sCode=CatPW.sCode; CatPW.unPW=CatPW.webTitle=CatPW.webSrc=''; //当前网址与记录的信息不符时,只保留密码信息 } CatPW.ShareUK=yunData.SHARE_UK; //获取 分享用户ID CatPW.ShareID=yunData.SHARE_ID; //获取 分享文件ID StorageDB(CatPW.surl).insert(CatPW); } else if(UpdataConfig.UpdataSave && localStorage[CatPW.surl] &&//是否已开启网盘信息记录更新,是否存在缓存 CatPW.Src.search(StorageDB(CatPW.surl).read().surl.replace('Share_',''))>0)//从检测缓存中的分享ID是否与记录中的分享ID匹配 { var CatPW_StorageDB=StorageDB(CatPW.surl).read(); if(decodeURIComponent(CatPW.webSrc)!==decodeURIComponent(CatPW_StorageDB.webSrc)) { CatPW_StorageDB.webSrc=decodeURIComponent(CatPW.webSrc); CatPW_StorageDB.webTitle=decodeURIComponent(CatPW.webTitle); StorageDB(CatPW.surl).insert(CatPW_StorageDB); if(UpdataConfig.UpdataNotify) GM_notification({ 'text':'网盘地址来源与上一次记录不同,记录已更新', 'title':'网盘信息记录更新通知', 'image':'https://eyun.baidu.com/box-static/page-common/images/favicon.ico', 'timeout': 5 }); } } else {//直接载入记录 msg('载入 locatStorage 记录'); CatPW=StorageDB(CatPW.surl||yunData.SHARE_ID||getQueryString('shareid')).read(); } msg('分享文件ID:', CatPW.surl, '提取码:', StorageDB(CatPW.surl).find('sCode')); msg('已收集的信息:', 'conf:', conf, 'localStorage CatPW:', CatPW, 'GM CatPW: ', GM_getValue('CatPW')); $(conf.btn).on('mouseup', function(e){ //百度网盘访问码提交事件,提交密码时 var $code=$(conf.code).val().trim(); if($code.search(/\*/)>0) return false; if($code!=='' && !CatPW.sCode){ CatPW.sCode=$code; } var tips=$('form[name="accessForm"]~div[style*="display: block"]'); tips.text('') //提取码提交click事件 if(!localStorage[CatPW.surl]) { //不存在记录时,添加新纪录 StorageDB(CatPW.surl).insert(CatPW);//插入记录 StorageDB('ShareIDexp').add(CatPW.surl,{'date':Dates(),'id':CatPW.surl,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } else if(!StorageDB(CatPW.surl).find('sCode')) { //不存在提取码信息时,重新获取提取码 StorageDB(CatPW.surl).insert(CatPW);//插入记录 StorageDB('ShareIDexp').add(CatPW.surl,{'date':Dates(),'id':CatPW.surl,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } else if($code!==StorageDB(CatPW.surl).find('sCode')&&(tips.text()==='')){ //已记录的提取码与填写的提取码不一致时,更新提取码记录 StorageDB(CatPW.surl).add('sCode', CatPW.sCode);//更新提取码记录 StorageDB('ShareIDexp').add(CatPW.surl,{'date':Dates(),'id':CatPW.surl,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } }); //当存在解压密码时,插入新纪录 if(CatPW.unPW&&!localStorage[CatPW.surl]){ StorageDB(CatPW.surl).insert(CatPW); StorageDB('ShareIDexp').add(CatPW.surl,{'date':Dates(),'id':CatPW.surl,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } //显示记录的信息 if('Share_'+yunData.surl==CatPW.surl && localStorage[CatPW.surl]){ var CatPW_Info=$('
').attr('id','CatPW_Info').text('提取码:'+CatPW.sCode+'  '+'解压密码:')/*.insertBefore($('.module-share-header'))*/; //解压密码 var CatPW_Info_unPW=$('').attr({'id':'unPW','title':'点击复制密码,修改内容将被保存'}).css({'margin':'0 10px','width':'150px','text-align':'center'}).val(CatPW.unPW).change(function(){ StorageDB(CatPW.surl).add('unPW',encodeURIComponent(this.value)); CatPW.unPW=encodeURIComponent(this.value); GM_setValue('CatPW', CatPW); }).click(function(){ document.execCommand("SelectAll");document.execCommand("copy"); }); //来源页面: var CatPW_Info_delBtn=$('