您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
智能融合网盘密码到网址中,打开网盘链接时不再需要手动复制密码,并自动提交密码,一路畅通无阻。同时记录网盘信息,当你再次打开该分享文件时,不再需要去找提取码,同时可追溯网盘地址的来源。
当前为
// ==UserScript== // @name 网盘自动填写密码【威力加强版】 // @description 智能融合网盘密码到网址中,打开网盘链接时不再需要手动复制密码,并自动提交密码,一路畅通无阻。同时记录网盘信息,当你再次打开该分享文件时,不再需要去找提取码,同时可追溯网盘地址的来源。 // @author 极品小猫 // @namespace https://greasyfork.org/zh-CN/users/3128 // @version 3.7.3 // @date 2015.10.30 // @modified 2018.06.29 // // 支持的网盘 // @include http*://pan.baidu.com/s/* // @include http*://eyun.baidu.com/s/* // @include http*://pan.lanzou.com/* // @include http*://www.lanzous.com/* // @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 // require http://code.jquery.com/jquery-2.1.4.min.js // @require http://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 // @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 // ==/UserScript== var urls=location.href; var hash=location.hash; var host=location.hostname.replace(/^www\./i,'').toLowerCase(); var search=location.search; var paths=location.pathname.toLowerCase(); var Control_newTag=true; // 网盘链接添加以新页面打开属性 var Control_msg=true; // 信息输出开关 unsafeWindow.eve = Event; MsgFn(GM_listValues(),GM_getValue('CatPW_Manage')); //管理功能开关 & 设置 var CatPW_Manage_Config, // 管理功能配置,采用 GM_setValue API进行保存,非 localStorage StorageSave, // 信息记录功能,localStorage 记录密码开关 StorageExp, // localStorage 记录密码的有效期(天数) UpdataConfig={ UpdataSave:true, // 再次访问该网盘地址时,更新信息 UpdataNotify:true, // 更新该网盘地址时,发出桌面通知 UpdataPlugin:true, // 脚本更新后,发出桌面通知 UpdataVersion:GM_info.script.version //记录脚本的版本号 }; if(GM_getValue('CatPW_Manage')==='undefined'||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; var Cat = { changelog : { "3.7.3" : { "date" : "2018.06.29", "info" : "【支持】支持蓝奏云新域名(lanzous.com)的密码融合", "detail" : "【增加】支持蓝奏云新域名(lanzous.com)的密码融合。" } }, UpdataPlugin : function(e){ //插件更新提示 var v1=CatPW_Manage_Config.UpdataConfig.UpdataVersion, v1arr=v1.split('.'); var v2=GM_info.script.version, v2arr=v2.split('.'); for(i=0;i<v2.length;i++){ if(Number(v2arr[i])>Number(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']); } }); CatPW_Manage_Config.UpdataConfig.UpdataVersion=v2; GM_setValue('CatPW_Manage', CatPW_Manage_Config); break; } } }, init : function(){ this.UpdataPlugin();//更新提示 } }; Cat.init(); var site = { 'YunDisk':{ 'pan.baidu.com':{ surl : getQueryString('surl')||location.pathname.replace('/s/1',''), chk : /^[a-z0-9]{4}$/, code : '.pickpw input, #accessCode', btn : '.g-button, #submitBtn, #getfileBtn', PreProcess: function() { //已处理 console.group('===== 百度网盘自动填写密码 Begin ====='); var CatPW_BaiduPan={ CatPW_Manage : function(){ var 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(); } }, 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=$('<span>').attr({'class':'g-dropdown-button'}).css({'width':'135px'}); var CatPW_Manage_A=$('<a>').attr({'class':'g-button','data-button-id':'b300','data-button-index':'300','href':'javascript:void(0);'}); var CatPW_Manage_A_span=$('<span class="g-button-right">'); var CatPW_Manage_A_span_span=$('<span class="text">').text('密码填写管理'); var CatPW_Manage_Menu=$('<span class="menu" style="width:auto;z-index:41;">'); var CatPW_Manage_Menu_infoFn=$('<A class="g-button-menu" href="javascript:void(0);">').text(StorageSave?'已开启信息记录功能':'已关闭信息记录功能').attr({'data-menu-id':'b-menu307'}).click(CatPW_Manage_Menu_Fn.infoFn); var CatPW_Manage_Menu_Exp=$('<A class="g-button-menu" href="javascript:void(0);">').text('信息保存时间:'+StorageExp+'天').attr({'data-menu-id':'b-menu308'}).click(CatPW_Manage_Menu_Fn.Exp); var CatPW_Manage_Menu_CleanInfo=$('<A class="g-button-menu" href="javascript:void(0);">').text('清除缓存记录信息').attr({'data-menu-id':'b-menu309'}).click(CatPW_Manage_Menu_Fn.CleanInfo); var CatPW_Manage_Menu_UpdataSave=$('<A class="g-button-menu" href="javascript:void(0);">').text(UpdataConfig.UpdataSave?'已开启记录更新功能':'已关闭记录更新功能').attr({'data-menu-id':'b-menu310'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.UpdataSave); var CatPW_Manage_Menu_UpdataNotify=$('<A class="g-button-menu" href="javascript:void(0);">').text(UpdataConfig.UpdataNotify?'已开启更新桌面通知':'已关闭更新桌面通知').attr({'data-menu-id':'b-menu311'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.UpdataNotify); var CatPW_Manage_Menu_UpdataPlugin=$('<A class="g-button-menu" href="javascript:void(0);">').text(UpdataConfig.UpdataPlugin?'脚本更新桌面通知':'脚本更新不通知').attr({'data-menu-id':'b-menu313'}).click(CatPW_Manage_Menu_Fn.UpdataConfigFn.UpdataPlugin); 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, '<hr>', CatPW_Manage_Menu_UpdataSave, CatPW_Manage_Menu_UpdataNotify, CatPW_Manage_Menu_UpdataPlugin); 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',''); //获取当前的分享ID //初始化 getValue 数据 if(GM_getValue('CatPW')=='undefined'||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]) { //当不存在记录时,收集信息 console.log('不存在记录,插入信息', '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 {//直接载入记录 MsgFn('载入 locatStorage 记录'); CatPW=StorageDB(CatPW.surl||yunData.SHARE_ID||getQueryString('shareid')).read(); } console.log('分享文件ID:', CatPW.surl, '提取码:', StorageDB(CatPW.surl).find('sCode')); console.log('已收集的信息:', 'conf:', conf, 'CatPW:', CatPW, 'GM: ', GM_getValue('CatPW')); $(conf.btn).click(function(){ //提交密码时 var $code=$(conf.code).val().trim(); CatPW.sCode=CatPW.sCode&&$code==StorageDB(CatPW.surl).find('sCode')?CatPW.sCode:$code!==''?$code:CatPW.sCode; 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()==='')){ //已记录的提取码与填写的提取码不一致时,更新提取码记录 console.log(CatPW.sCode); 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]){ $('<DIV>').attr('id','CatPW_Info').text('提取码:'+CatPW.sCode+' '+'解压密码:').insertBefore($('.module-share-header')); //解压密码 $('<input>').attr({'id':'unPW','title':'点击复制密码'}).css({'margin':'0 10px','width':'150px','text-align':'center'}).val(CatPW.unPW).click(function(){ document.execCommand("SelectAll");document.execCommand("copy"); }).appendTo($('#CatPW_Info')); //来源页面: $('<button>').text('删除记录').val('删除记录').click(function(){ delete localStorage[CatPW.surl]; StorageDB('ShareIDexp').del(CatPW.surl); GM_setValue('CatPW', CatPW_Format); this.disabled=true; }).appendTo($('#CatPW_Info')); $('#CatPW_Info').append('<br>', $('<span>').attr({'id':'CatPW_webTitle'}).text('网页标题:'+CatPW.webTitle)); $('#CatPW_Info').append('<br>', $('<A>').attr({'id':'CatPW_webSrc','href':CatPW.webSrc,'target':'blank'}).text('网盘来源:'+CatPW.webSrc)); GM_addStyle('#CatPW_Info{font-size:14px;border:1px solid #06c;padding:5px;display:block;}'); } StorageDB('ShareIDexp').deleteExpires(); } }, init : function(){ this.CatPW_Manage(); this.ShowInfo(); } }; CatPW_BaiduPan.init(); console.groupEnd(); } }, 'eyun.baidu.com': { chk: /^[a-z0-9]{4}$/, code: '.share-access-code', btn: '.g-button-right', PreProcess: function() { if((hash&&!/sharelink|path/i.test(hash))&&!/enterprise/.test(paths)) { location.href=location.href.replace(location.hash,''); } conf.ShareUK=yunData.SHARE_UK||getQueryString('uk'); //获取 分享用户ID conf.ShareID=yunData.SHARE_ID||getQueryString('cid'); //获取 分享文件ID conf.sCode=/^#/.test(hash)?hash.match(/^#(\w+)&?/)[1]:StorageDB(conf.ShareID).find('sCode'); //获取 提取码 $(conf.btn).click(function(){ if(!localStorage[conf.ShareID]&&conf.sCode) { StorageDB(conf.ShareID).insert({'sCode':conf.sCode}); StorageDB('ShareIDexp').add(conf.ShareID,{'id':conf.ShareID,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } }); StorageDB('ShareIDexp').deleteExpires(); } }, 'pan.lanzou.com':{ chk : /^[a-z0-9]{4,8}$/, code : '#pwd', btn : '#sub' }, 'lanzous.com':{ chk : /^[a-z0-9]{4,8}$/, code : '#pwd', btn : '#sub' }, 'dufile.com':{ PreProcess: function(){ if(/\/down\//.test(location.pathname)) { var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ? 'mozHidden' : null; var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange'); var onVisibilityChange = function(){ if (!document[hiddenProperty]) { document.title='被发现啦(*´∇`*) 快来输验证码!'; } else { alert('DuFile 快来输验证码!'); } } document.addEventListener(visibilityChangeEvent, onVisibilityChange); } } }, 'fxpan.com':{ PreProcess:function(){ var Key=$('#key').val(); //文件分享ID var CatPW={'date':Dates(),'sCode':'', unPW:'', 'Src':'', 'Hash':'', "webSrc":'', "webTitle":''}; var CatPW_Data=(GM_getValue('CatPW')!=('undefined')||GM_getValue('CatPW')!==undefined)?GM_getValue('CatPW'):GM_setValue('CatPW',CatPW); if(CatPW_Data['webSrc'].search(Key)>-1) { var $CatPW_Info=$('<DIV>').attr('id','CatPW_Info'); var $CatPW_Info_unPW=$('<div>').text('解压密码:').append($('<input>').attr({'id':'unPW','title':'点击复制密码'}).css({'margin':'0 10px','width':'150px','text-align':'center'}).val(CatPW_Data.unPW).click(function(){document.execCommand("SelectAll");document.execCommand("copy");})); var $CatPW_Info_title=$('<span>').attr({'id':'CatPW_webTitle'}).text('网页标题:'+decodeURIComponent(CatPW_Data.webTitle)); var $CatPW_Info_webSrc=$('<A>').attr({'id':'CatPW_webSrc','href':decodeURIComponent(CatPW_Data.webSrc),'target':'blank'}).text('网盘来源:'+decodeURIComponent(CatPW_Data.webSrc)); $CatPW_Info.append($CatPW_Info_unPW, '<br>', $CatPW_Info_title,'<br>', $CatPW_Info_webSrc).insertBefore('.file_item.file_desc'); $('.ysbtn').click(function(){ StorageDB(Key).insert(CatPW_Data); StorageDB().insert(CatPW_Data); }); } GM_addStyle('#CatPW_Info{font-size:14px;border:1px solid #06c;padding:5px;display:block;}'); } }, 'weiyun.com': { chk: /^[a-z0-9]{4}$/i, code: '#outlink_pwd', btn: '#outlink_pwd_ok' }, }, 'pwdRule' : /(?:提取|访问)[码碼]?\s*[:: ]?\s*([a-z\d]{4})/, //常规密码 'codeRule' : /(?:(?:提取|访问|密[码碼]|艾|Extracted-code)[码碼]?)\s*[:: ]?\s*([a-z\d]{4})/i, //其它类型的密码 //跳转链预处理 'JumpUrl' : { 'zhihu.com' : { href: $('A[href*="//link.zhihu.com/?target="]'), url:/.*\/\/link\.zhihu\.com\/\?target=/ }, 'sijihuisuo.club': { href: $('.down-tip A[href^="https://www.sijihuisuo.club/go/?url="]'), url: 'https://www.sijihuisuo.club/go/?url=' } }, //密码融合需要特殊支持的网站 'Support' : { 'yunpanjingling.com':{ path : /search/i, callback:function(){ $('.item').each(function(){ var name=$(this).find('.name').text().trim(); var code=$(this).find('.code').text()||''; var href=$(this).find('.name').find('a'); var referrer=$(this).find('.referrer').find('a'); referrer.attr('href',decodeURIComponent(getQueryString('url',referrer.attr('href')))); href.attr('href',decodeURIComponent(getQueryString('url',href.attr('href')))); if(code) href.attr('href',href.attr('href')+'#'+code); href.click(function(){ var CatPW_Data={'date':Dates(),'sCode':code, unPW:'', 'Src':href.attr('href'), 'Hash':'#'+code, "webSrc":referrer.attr('href'), "webTitle":encodeURIComponent(name)}; sessionStorage['CatPW_Data']=JSON.stringify(CatPW_Data); }) }); } }, 'jiluhome.cn' : { path:/download.php/i, callback:function(){ //获取网盘地址 var FileUrl=$('.msg>a[href*="download.php"]'); $.ajax({ "url":FileUrl.attr('href'), method: "GET", success:function(e){ var PanUrl=e.match(/https?:\/\/[^']+/i).toString(); $('.msg>h3').after('网盘地址1:',($('<A>').attr({'href':PanUrl}).text(PanUrl))); } }); //获取网页标题 $.ajax({ "url":'http://www.jiluhome.cn/?p='+$.getUrlParam('postid'), method: "GET", success:function(e){ var doc = document.implementation.createHTMLDocument(""); doc.documentElement.innerHTML = e; document.title = $(doc).find('title').text(); } }); } }, 'dakashangche.com':{ path:/\/sj\/\d/, callback:function(){ console.log('特殊支持'); $('.down-tip>a[href*="du.acgget.com"]').each(function(){ DownAjax(this.href,'.panel-body',function(e){ console.log('return',e); $(e).appendTo($('#paydown')); }); }); } }, 'appinn.com':{ path:/\/[^\/]+\//i, callback:function(){ console.log('特殊支持'); new PreHandle.VM(); } }, 'meta.appinn.com':{ path:/\/t\/[^/]+\//i, callback:function(){ new PreHandle.VM(); $('A[href*="pan.baidu.com"],A[href*="eyun.baidu.com"]').each(function(){ $(this).data({'url':this.href}).click(function(e){ location.href=$(this).data('url'); }); }); } }, 'madsck.com':{ path: /\/resource\/\d+/, callback:function(){ var ID=$('.btn-download').data('id'); $.ajax({ "url":"http://www.madsck.com/ajax/login/download-link?id="+ID, method: "GET", dataType: "json", success:function(e){ var res=e.resource; $('.btn-download').css('display','none'); $('<a>').attr({'href':res.resource_link+'#'+res.fetch_code,'target':'blank','class':'btn-download'}).css({'line-height':'60px','text-align':'center','font-size':'24px'}).text('下载').insertBefore('.btn-download'); } }); } }, 'idanmu.co': { path : /storage\-download/i, callback : function(){ $('.input-group').each(function(){ $(this).text($(this).text()+$(this).find('input').val()); }); } }, 'idanmu.ch': { path : /storage\-download/i, callback : function(){ $('.input-group').each(function(){ $(this).text($(this).text()+$(this).find('input').val()); }); } }, 'qiuquan.cc':{ path:/./, callback : function(){ $('#down>a[href*="pan.baidu.com"]').each(function(){ if(!this.hash) { this.hash=$(this).text().match(/[\((](\w+)[)\)]/i)[1]; } }); } }, 'acg44.com':{ //search:['page_id','p'], path:/download/i, callback : function(){ site['codeRule']=/(?:(?:提取|访问|密[码碼])[码碼]?)\s*[:: ]?\s*([a-z\d]{4}|[^$]+)/i; addMutationObserver('#download-container',function(e){ e.some(function(a){ for(var i in a.addedNodes){ var b=a.addedNodes[i]; if(b.className=='animated fadeIn') { var VerCode=$('[id^="downloadPwd"]').val(); var unZipPW=encodeURIComponent($('[id^="extractPwd"]').val()); var DownUrl=$('#download-container a.btn').attr('href'); if(/pan.baidu.com\/share/i.test(DownUrl)){ $('#download-container a.btn').attr('href',DownUrl+'&unPW='+unZipPW+'&Src='+encodeURIComponent(urls)); } else { $('#download-container a.btn').attr('href',DownUrl+'#'+VerCode+'&unPW='+unZipPW+'&Src='+encodeURIComponent(urls)); } } } }); }); } }, 'xunyingwang.com':{ path:/movie/i, callback:function(){ $(window).load(function(){ $('A[href*="pan.baidu.com"],A[href*="eyun.baidu.com"]').each(function(){ $(this).attr('href',$(this).attr('href')+'#'+$(this).next("strong").text()); }); }); } }, 'huhupan.com':{ path:/e\/extend\/down/i, callback:function(){ var _Linktmp=$('A[href*="pan.baidu.com"],A[href*="eyun.baidu.com"]'); var _PWtmp=$('input[id^="bdypas"],input[id^="foo"]'); for(i=0;i<_Linktmp.length;i++){ _Linktmp[i].href+="#"+_PWtmp[i].value; } } }, 'blog.reimu.net': { path: /archives/i, callback: function(){ site['codeRule']=/(?:(?:提取|访问|密[码碼])[码碼]?)\s*[:: ]?\s*([a-z\d]{4}|8酱)/i; console.log(site['codeRule']); } }, 'reimu.net': { path: /archives/i, callback: function(){ site['codeRule']=/(?:(?:提取|访问|密[码碼])[码碼]?)\s*[:: ]?\s*([a-z\d]{4}|8酱)/i; console.log(site['codeRule']); } }, 'ccava.net': { path: /post/i, callback: function(){ site['codeRule']=/(?:(?:提取|访问|密[码碼])[码碼]?)\s*[:: ]?\s*([a-z\d]{4,8}|ccava)/i; } } } }; var conf = site['YunDisk'][host]; //设置主域名 /* -----===== 生成正则,校验匹配的网盘 Start =====----- */ var HostArr = []; //生成域名数组 for(var i in site['YunDisk']) HostArr.push(i); //插入域名对象数组 var HostExp = new RegExp(HostArr.join("|"),'i'); //生成支持网盘的校验的正则 /* -----===== 生成正则,校验匹配的网盘 End =====----- */ /* -----===== 检查是否需要处理跳转链 Start =====----- */ //console.log(site.JumpUrl[host]); if(site['JumpUrl'][host]){ console.log(site['JumpUrl'][host]['href']); site['JumpUrl'][host]['href'].each(function(){ console.log(site['JumpUrl'][host]['rep']); $(this).attr({'href':decodeURIComponent($(this).attr('href').replace(site['JumpUrl'][host]['url'],'')),'target':'blank'}); }); } /* -----===== 检查是否需要处理跳转链 End =====----- */ if(conf&&!/zhidao.baidu.com/i.test(host)){ //网盘页面填密码登录 // 抓取提取码 if(conf.PreProcess) conf.PreProcess(); //内容预处理 var StorageCode = StorageDB('Share_'+conf.surl).find('sCode'); var sCode = StorageCode?StorageCode:/^#/.test(hash)&&!/^#list\/path=/i.test(hash)?hash.match(/^#([^&]+)&?/)[1]:''; //获取 提取码 // 调试用,检查是否为合法格式 if (!sCode) { console.log('没有 Key 或格式不对'); } else { console.log ('抓取到的提取码: %s', sCode); } // 加个小延时 setTimeout (function () { // 键入提取码并单击「提交」按钮,报错不用理。 var codeBox = $(conf.code), btnOk = $(conf.btn); if(codeBox.length>0) { //存在密码框时才进行密码提交操作 codeBox.val(sCode); //填写验证码 if (conf.preSubmit) if (conf.preSubmit (codeBox, btnOk)) return ; btnOk.click(); } }, 10); } else { var PreHandle={ //内容预处理 Text : function(text){ //预处理含解码密码的文本 text=text?typeof(text)=="string"?text.trim():text.textContent.trim():null; text=text?text.replace(/([\[【]?解[压壓]|[压壓][缩縮])密[码碼][\]】]?\s*[:: ]?(?: ?)\s*([a-z\d]{4}|[^\n]+)/ig,''):null; return text; }, Code : function(obj){ // var text=this.Text(obj); if(!text) return; //首先尝试使用 提取码|访问码 作为密码匹配的关键字,无效时则使用模糊匹配规则 var pw=site['pwdRule'].test(text)?text.match(site['pwdRule'])[1]:site['codeRule'].test(text)?text.match(site['codeRule'])[1]:null; //console.log(text,pw); return pw; }, Fusion : function(target, obj){ //融合密码 if(!target.hash) { target.href+='#'+this.Code(obj); } }, VM : function(){ //暴力匹配 var Link=$('A[href*="pan.baidu.com"],A[href*="eyun.baidu.com"]'); for(i=0;i<Link.length;i++){ var LinkParent=$(Link[i]).parent(); var LinkParentHtml=LinkParent.html(); if(PreHandle.Code(LinkParentHtml)) Link[i].href+='#'+PreHandle.Code(LinkParentHtml); } }, PassWord : function(CatPW_Data){ if(StorageSave) { var unPWArr=[ /password[:: ]?([^\n]+)/igm, /解压[:: ]?(\w+)/gm, /【解压密码】\s*[:: ]?\s*([^\n]+)/igm, /\[解压密码\]\s*[:: ]?\s*([a-z\d\.:/@]+)/igm, //http://www.itokoo.com/ /(?:解[压壓]密?[码碼])\s*[:: ]?\s*([a-z\d\.:/@]+)/igm, /(?:解[压壓]密?[码碼])(?:都?是|为)?\s*[:: ]?\s*([\w\.:/@]+)[^$\r\n]/igm, /(?:解[压壓]密?[码碼])(?:都?是|为)?\s*[:: ]?\s*([^\w]+)[^$\r\n]/igm, //中文类 /【?压缩密码】?\s*[:: ]?\s*([^\n]+)/igm, /【?[資资]源密[码碼]】?:(\w+)/ //http://www.abcmm.co ]; for(i=0;i<unPWArr.length;i++) { var unPWTemp=unPWArr[i].exec(document.body.textContent); if(unPWTemp) { MsgFn(i, '规则:'+unPWArr[i], '解压密码提取:'+encodeURIComponent(unPWTemp[1]), '所有结果:'+unPWTemp); CatPW_Data.unPW=encodeURIComponent(unPWTemp[1]); break; } } if(sessionStorage['CatPW_Data']) GM_setValue('CatPW', JSON.parse(sessionStorage['CatPW_Data'])); else GM_setValue('CatPW', CatPW_Data); MsgFn('GM_getValue', GM_getValue('CatPW')); } } }; //密码融合 特别支持的网站 var SupportHost=site['Support'][host]; if(SupportHost&&(SupportHost['path']?SupportHost['path'].test(paths):getQueryString(SupportHost['search']))) { SupportHost.callback(); } //监听 A 标签点击事件 $('body').on('click', 'a', function (e) { var target=this, CatPW_Data; //如果目标对象为百度企业盘,提升密码匹配范围,以兼容百度企业云 if(/eyun.baidu.com/i.test(this.href)) { site['pwdRule']=/(?:提取|访问)[码碼]?\s*[:: ]?\s*([a-z\d]{4,14})/; site['codeRule']=/(?:(?:提取|访问|密[码碼]|Extracted-code)[码碼]?)\s*[:: ]?\s*([a-z\d]{4,14})/i; } if(HostExp.test(this.href)){ if(Control_newTag) this.target='blank'; //新页面打开网盘 //初始化信息记录变量 CatPW_Data={'date':Dates(),'sCode':'', unPW:'', 'Src':this.href, 'surl':'', 'Hash':this.hash, "webSrc":encodeURIComponent(urls), "webTitle":encodeURIComponent(document.title)}; if(this.hash) { //如果超链接已有 hash 则跳过 MsgFn('密码已融合,跳过密码融合步骤'); if(sessionStorage['CatPW_Data']) GM_setValue('CatPW', JSON.parse(sessionStorage['CatPW_Data'])); else GM_setValue('CatPW', CatPW_Data); PreHandle.PassWord(CatPW_Data); //融合解压密码 return; } console.group(' ===== 网盘自动填写密码 密码融合 ====='); //论坛兼容模式 if($.getUrlParam('mod')=='viewthread'&&$.getUrlParam('tid')&&$('.showhide').length>0){ if($(target).next().hasClass("showhide")&&PreHandle.Code(target.nextElementSibling)) { console.log('论坛特殊兼容模式 - 从链接后隐藏内容中查找密码'); PreHandle.Fusion(target, target.nextElementSibling); } } //常规匹配模式 if(PreHandle.Code(target)) { console.log('在当前超链接的对象中查找密码'); PreHandle.Fusion(target, target); } else if(PreHandle.Code(target.nextSibling)){ console.log('密码在超链接后面的兄弟元素中'); PreHandle.Fusion(target, target.nextSibling); } else if(PreHandle.Code(target.parentNode)){ console.log('从父对象中查找密码'); PreHandle.Fusion(target, target.parentNode); } else { var i = 0, maxParent = 5, //向上遍历的层级 parent = target; while(i<maxParent) { i++; //遍历计数 parent = parent.parentNode; //取得父对象 console.log('遍历上级目录查找密码:'+ i,parent); if(parent.tagName=="TR") { //如果父对象是表格,则从表格中提取密码 if(PreHandle.Code(parent.nextElementSibling)) { parent=parent.nextElementSibling; console.log('表格中查找密码成功!',parent); PreHandle.Fusion(target, parent); break; } } else if(PreHandle.Code(parent.nextSibling)){ console.log('向上遍历查找,在超链接后面的兄弟元素中,',parent.nextSibling); PreHandle.Fusion(target, parent.nextSibling); break; } else if(PreHandle.Code(parent)) { //否则按照常规方式提取密码 console.log('向上遍历查找密码成功!'); PreHandle.Fusion(target, parent); break; } else { if(maxParent>5) console.log('已超出遍历范围'); } if(parent==document.body) break; //如果已经遍历到最顶部 } } CatPW_Data.Hash=this.hash; PreHandle.PassWord(CatPW_Data); //融合解压密码 } console.groupEnd(); }); } function addMutationObserver(selector, callback, Kill) { var watch = document.querySelector(selector); //console.log(watch); if (!watch) { return; } var observer = new MutationObserver(function(mutations){ //console.log(mutations); var nodeAdded = mutations.some(function(x){ return x.addedNodes.length > 0; }); if (nodeAdded) { callback(mutations); if(Kill) { console.log('停止'+selector+'的监控'); observer.disconnect(); } } }); observer.observe(watch, {childList: true, subtree: true}); } function getQueryString(name,url) {//筛选参数 var reg, str; url=url?url.match(/[?#].*/).toString():location.search; //网址传递的参数提取,如果传入了url参数则使用传入的参数,否则使用当前页面的网址参数 if(Array.isArray(name)){ for(var i in name){ reg = new RegExp("(?:^|&)(" + name[i] + ")=([^&]*)(?:&|$)", "i"); //正则筛选参数 str = url.substr(1).match(reg); if (str !== null) return unescape(str[2]); } } else { reg = new RegExp("(?:^|&)(" + name + ")=([^&]*)(?:&|$)", "i"); //正则筛选参数 str = url.substr(1).match(reg); if (str !== null) return unescape(str[2]); } return null; } function collecting(){ } function StorageDB(collectionName) { //如果没有 集合名,则使用默认 default collectionName = collectionName ? collectionName : 'default'; //创建JSON缓存,如果缓存存在,则转为JSON,否则新建 var cache = localStorage[collectionName] ? JSON.parse(localStorage[collectionName]) : {}; return { add : function(name, value) { cache[name]=value; localStorage.setItem(collectionName, JSON.stringify(cache)); //回写 localStorage }, del:function(name) { if(name) { console.log(cache,cache[name]); delete cache[name]; localStorage.setItem(collectionName, JSON.stringify(cache)); //回写 localStorage } else { //删除整个 localStorage 数据 localStorage.removeItem(name); } }, insert: function(obj){ localStorage.setItem(collectionName, JSON.stringify(obj)); }, Updata : function(name,obj,value){ cache[obj]=cache[obj]||{}; cache[obj][name]=value; localStorage.setItem(collectionName, JSON.stringify(cache)); //回写 localStorage }, Query : function(obj,name){ return cache[obj]?name?(cache[obj][name]?cache[obj][name]:null):cache[obj]:null; }, find : function(name) { if(!collectionName) return false; return cache[name]; }, read : function(){ return $.isEmptyObject(cache)?null:cache;//如果为空,则返回 null }, deleteExpires : function(now){ now=now||$.now(); for(var i in cache) { //console.log(i, collectionName, now, cache[i]['exp'], now>cache[i]['exp']); //删除记录显示 //console.log(cache[i], localStorage[i]); if(now>cache[i]['exp']) { delete localStorage[i]; //删除对应分享 ID 的记录 this.del(i); //删除时间表中的记录 } } } }; } function MsgFn(a, b, c, d, e){ /* var args = Array.prototype.slice.call(arguments, 1); console.log(args); */ if(Control_msg) console.log(a, b, c, d, e); } function DownAjax(urls,selection,callback){ GM_xmlhttpRequest({ method: "GET", url: urls, onload: function (result) { var parsetext = function(text){ var doc = null; try { doc = document.implementation.createHTMLDocument(""); doc.documentElement.innerHTML = text; return doc; } catch (e) { alert("parse error"); } }; var Down; var doc = parsetext(result.responseText); console.log(doc,$(doc)); var t = $(doc).find(selection); callback(t); } }); } function Dates(){ var sDate=new Date(); return sDate.getFullYear()+'/'+(sDate.getMonth()+1)+'/'+sDate.getDate(); }