// ==UserScript== // @name 网盘自动填写密码【威力加强版】 // @description 智能融合网盘密码到网址中,打开网盘链接时不再需要手动复制密码,并自动提交密码,一路畅通无阻。同时记录网盘信息,当你再次打开该分享文件时,不再需要去找提取码,同时可追溯网盘地址的来源。 // @author 极品小猫 // @namespace https://greasyfork.org/zh-CN/users/3128 // @version 3.3.0 // @date 2015.10.30 // @modified 2017.11.13 // // 支持的网盘 // @include http://pan.baidu.com/s/* // @include http://eyun.baidu.com/s/* // @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 https://*.evernote.com/* // @exclude https://*.yinxiang.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 // @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_listValues // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_registerMenuCommand // @encoding utf-8 // @run-at document-idle // @downloadURL none // ==/UserScript== var urls=location.href; var hash=location.hash; var host=location.hostname.replace(/^www\./i,'').toLowerCase(); var paths=location.pathname.toLowerCase(); var newTag=true; // 网盘链接添加以新页面打开属性 unsafeWindow.eve = Event; //GM_listValues(); /* * 更新日志 * 3.3.0 [2017.11.10] * 1、【修正】信息记录功能,旧的记录全部失效,不作修正处理了 * 2、【增加】度盘中的信息记录功能管理 * 3、【修正】删除超时的记录 * * 3.2.0 [2017-11-08] * 1、【修正】百度网盘无法自动填写密码问题(估计此次更新为反脚本和外挂程序的策略,此为临时修正,其它功能是否有影响待测试) * * 3.1.5.3 [2017-10-27] * 1、FF 修正新浪博客崩溃问题 * * 3.1.5.2 [2017-09-21] * 1、【支持】qiuquan.cc 密码融合 * * 3.1.5.1 * 1、【白名单】增加中关村网站 * 2、【修正】没有获取到密码时,瞎填写密码 * * 3.1.5 * 1、【修正】关闭信息记录时,仍然会显示记录的信息 * 2、【修正】关闭信息记录时,提取码无法自动提交的问题 * 3.1.4 * 1、【修正】reimu.net 特殊融合兼容性问题 * 2、【修正】不兼容中文提取码自动填写 * 3、【修正】信息记录没有提取码的问题 * * 3.1.3.1 * 1、【删除】shaoit.com 密码融合处理规则 * * 3.1.3 * 1、【增强】度盘在点击时设置为新页面打开(可开关),参数变量为 newTag * 2、【修正】表格中提取密码为下一行表格的BUG * 3、【修正】gov.cn、gov的域名默认为白名单 * * 3.1.2 * 1、【增强】解压密码提取,增加“压缩密码”关键字 * 2、【修正】pan.baidu.com 解压密码获取错误 * 3、【修正】Firefox 浏览器 GM插件 的兼容性问题 * 4、【修正】其它小BUG * * 3.1.1.1 * 1、特殊支持网站,增加 小众软件论坛 * * 3.1.1 * 1、修正解压密码内容处理导致提取码提取失效BUG * 2、修正网盘信息显示BUG * * 3.1.0 * 1、增强提取码匹配规则,提高匹配成功率 * 2、localStorage 信息记录 传递方式改为使用 GM_setValue、GM_getValue API * 3、无提取码,但有解压密码,也将进行信息记录 * * 3.0.0 (内部测试) * 1、使用 localStorage 记录密码等信息,默认记录 7 天 * 2、增强“解压密码”提取规则 * 3、打开已记录网盘时,若URL中无提取码,可从记录中读取提取码 * * 2.5.2.3 * 1、MAD素材库(madsck.com)密码融合特殊支持 * 2、修复 huhupan.com 的密码融合支持 * * 2.5.2.2 - 未删除 * 1、删除知乎跳转链处理代码 * * 2.5.3 * 1、次元轨迹(acg44.com)密码融合处理 * 2、修正“解压密码”的误识别 * 3、Cookie 记录密码,保存7天 * * 2.5.2.1 * 1、讯影网(xunyingwang.com)密码融合处理 * 2、户户盘(huhupan.com)密码融合处理 * * 2.5.1 * 1、殁漂遥(shaoit.com)密码融合处理改进 * * 2.5.0 * 1、提升密码融合能力 * * 2.4.2 【2016.10.05】 * 1、殁漂遥(shaoit.com)密码融合处理 * 2、reimu.net 密码融合处理 * 3、修复“跳转链处理”影响百度企业盘无法访问问题 * * 2.4.1.2 【2016.09.28】 * 1、增加 sijihuisuo.club 的跳转链处理 * 2、增加本地IP白名单 * * 2.4.1.1 【2016.09.21】 * 1、增加携程网白名单 * * 2.4.1 【2016.09.21】 * 1、支持一些特殊网站的密码融合预处理 * 2、支持百度企业云的密码自动提交(企业盘的密码为4~14位) * 3、支持 www.0dayku.com 的提取码关键字“Extracted-code” * * 2.3.3 【2016.08.08】 * 1、知乎跳转链预处理 * * 2.3.2 【2016.08.04】 * 1、恢复提取码中的“密码”关键字(适用于:心海e站) * * 2.3.1 【2016.08.03】 * 1、增加微云网盘提取码支持(匹配规则来自原作者 Jixun.Moe) * 2、修正提取码兼容问题 * 3、修正重复添加提取码 * * 2.3.0 【2016.08.01】 * 1、移除对金山快盘、新浪云盘的支持 * 2、百度企业云盘不追加验证码 * 3、受贴吧页面跳转影响,暂时不支持贴吧的密码提取,已将贴吧加入白名单 * 4、提升链接&密码融合的成功率 —— A 标签绑定函数更改为 body 点击事件监听(根据原作者 Jixun.Moe 的建议) * 5、找不到密码时的遍历方式更改(感谢 10139 - mudoo 的建议) * 6、支持密码放在换行表格中的提取 */ console.log(GM_listValues()); //管理功能开关 & 设置 var CatPW_Manage_Config, // 管理功能配置,采用 GM_setValue API进行保存,非 localStorage StorageSave, // 信息记录功能,localStorage 记录密码开关 StorageExp; // localStorage 记录密码的有效期(天数) if(GM_getValue('CatPW_Manage')==undefined) { CatPW_Manage_Config={'StorageSave':true,'StorageExp':7}; GM_setValue('CatPW_Manage', CatPW_Manage_Config); } else { CatPW_Manage_Config=GM_getValue('CatPW_Manage'); } StorageSave=CatPW_Manage_Config.StorageSave; StorageExp=CatPW_Manage_Config.StorageExp; 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(); }, 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(); }, save : function(){ GM_setValue('CatPW_Manage', CatPW_Manage_Config); } } var CatPW_Manage_Main=$('').attr({'class':'g-dropdown-button'}); 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_A1=$('').text(StorageSave?'已开启信息记录功能':'已关闭信息记录功能').attr({'data-menu-id':'b-menu307'}).click(CatPW_Manage_Menu_Fn.infoFn); var CatPW_Manage_Menu_A2=$('').text('信息保存时间:'+StorageExp+'天').attr({'data-menu-id':'b-menu308'}).click(CatPW_Manage_Menu_Fn.Exp); 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_A1).append(CatPW_Manage_Menu_A2) CatPW_Manage_Main.insertBefore('.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 CatPW, yunData=unsafeWindow.yunData; if(GM_getValue('CatPW')=='undefined') GM_setValue('CatPW',{}); //初始化 yunData.surl=getQueryString('surl')||location.pathname.replace('/s/1',''); if(!localStorage['Share_'+yunData.surl]){ //当不存在记录时,收集信息 CatPW=GM_getValue('CatPW'); CatPW.surl='Share_'+yunData.surl; //获取 分享文件surl CatPW.ShareUK=yunData.SHARE_UK; //获取 分享用户ID CatPW.ShareID=yunData.SHARE_ID; //获取 分享文件ID var Qstr=CatPW.ShareStr=/Src=/i.test(hash)?hash:location.search; //网址参数提取 } else { CatPW=StorageDB('Share_'+yunData.surl||yunData.SHARE_ID||getQueryString('shareid')).read(); } //提交密码前 CatPW.sCode=StorageDB(CatPW.surl).find('sCode')||(GM_getValue('CatPW').Hash?GM_getValue('CatPW').Hash.replace('#',''):/^#/.test(hash)&&!/^#list\/path=/.test(hash)?hash.match(/^#([^&]+)&?/)[1]:''); //获取 提取码 console.log('分享文件ID:', CatPW.surl, '提取码:', StorageDB(CatPW.surl).find('sCode')); CatPW.webSrc=decodeURIComponent(getQueryString('webSrc', Qstr)||StorageDB(CatPW.surl).find('webSrc')||GM_getValue('CatPW').webSrc); CatPW.unPW=decodeURIComponent(getQueryString('unPW', Qstr)||(StorageDB(CatPW.surl).find('unPW')?StorageDB(CatPW.surl).find('unPW'):(GM_getValue('CatPW').unPW?GM_getValue('CatPW').unPW:''))); CatPW.webTitle=decodeURIComponent(getQueryString('webTitle',Qstr)||StorageDB(CatPW.surl).find('webTitle')||GM_getValue('CatPW').webTitle); console.log('已收集的信息:', conf, CatPW); $(conf.btn).click(function(){ //提交密码时 CatPW.sCode=!CatPW.sCode?$(CatPW.code).val().trim()!=''?$(CatPW.code).val().trim():CatPW.sCode:CatPW.sCode; //如果 localStorage 没有密码,则重新手动记录 if(!localStorage[CatPW.surl]&&(CatPW.sCode&&($('#tip').css('display')=='none')||$('#tip').text()=='')) { //如果不存在记录时,且没有任何提示信息时 StorageDB(CatPW.surl).insert(CatPW); StorageDB('ShareIDexp').add(CatPW.surl,{'date':Dates(),'id':CatPW.surl,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } else if(CatPW.sCode&&$('#tip').css('display')=='none'){ StorageDB('ShareIDexp').add(CatPW.surl,{'date':Dates(),'id':CatPW.surl,'exp':$.now()+StorageExp*24*60*60*1000}); //记录超时时间 } else if($('#tip').text()=='密码错误'){ delete localStorage[CatPW.surl]; StorageDB('ShareIDexp').delete(CatPW.surl); //删除超时时间记录 } }); 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(localStorage[CatPW.surl]){ $('
').attr('id','CatPW_Info').text('提取码:'+CatPW.sCode+'  '+'解压密码:').insertBefore($('.module-share-header')); //解压密码 $('').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')); //来源页面: $('