// ==UserScript== // @name 网盘自动填写密码【增强版】 // @description 网盘自动填写提取密码【增强版】+网盘超链接与提取码融合。 // @author 极品小猫 // @namespace http://www.cnblogs.com/hkmhd/ // @homepage https://greasyfork.org/scripts/13463 // @supportURL https://greasyfork.org/scripts/13463/feedback // @version 2.5.3 // @date 2015.10.30 // @modified 2017.07.19 // // 支持的网盘 // @include http://* // @include https://* // @include http://pan.baidu.com/s/* // @include http://eyun.baidu.com/s/* // // 白名单 // @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://*.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 // @grant unsafeWindow // @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(); unsafeWindow.eve = Event; /* * 更新日志 * 2.5.3 [2017-11-08] * 1、【修正】百度网盘无法自动填写密码问题(估计此次更新为反脚本和外挂程序的策略,此为临时修正,其它功能是否有影响待测试) * 2.5.2.3 * 1、MAD素材库(madsck.com)密码融合特殊支持 * 2、修复 huhupan.com 的密码融合支持 * * 2.5.2.2 * 1、删除知乎跳转链处理代码 * * 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、支持密码放在换行表格中的提取 */ var site = { 'baidu.com':{ chk: /^[a-z0-9]{4}$/, code: '.pickpw input, #accessCode', btn: '.g-button, #submitBtn, #getfileBtn', PreProcess: function() { //已处理 if(host=='eyun.baidu.com'){ //如果为百度企业云盘,则按照企业云盘的方式处理 conf=site['baidu.com']=site['eyun.baidu.com']; site['baidu.com'].PreProcess(); } } }, '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)) { console.log('test'); location.href=location.href.replace(location.hash,''); } } }, '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' : { 'sijihuisuo.club': { href: $('.down-tip A[href^="https://www.sijihuisuo.club/go/?url="]'), url: 'https://www.sijihuisuo.club/go/?url=' } }, //密码融合需要特殊支持的网站 'Support' : { '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'); $('').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'); console.log(e); } }) } }, 'idanmu.co': { path : /storage\-download/i, callback : function(){ $('.input-group').each(function(){ $(this).text($(this).text()+$(this).find('input').val()); }); } }, 'shaoit.com': { path : /.*/i, callback : function(){ var LinkParent=$('A[href*="pan.baidu.com"],A[href*="eyun.baidu.com"]').parent(); var ParentHTML=LinkParent.html(); site['codeRule']=/\s*(shaoit|[a-z\d]{4})((?:\s*|
)$)/i; var HtmlArr=ParentHTML.match(/.*(?: \/|\s*$|
)/ig); for(i=0;i\s*([a-z\d]{4}|shaoit) \//i.test(HtmlArr[i])){ HtmlArr[i]=HtmlArr[i].replace(/(href="[^"]+)("[^>]*?>(?!<\/a>).+?<\/a>\s*(shaoit|[a-z\d]{4}))/ig,'$1#$3$2'); } else if(site['codeRule'].test(HtmlArr[i])){ var PWcode=HtmlArr[i].match(site['codeRule'])[1]; HtmlArr[i]=HtmlArr[i].replace(/(href="[^"]+?)"/ig,'$1#'+PWcode+'"'); } } LinkParent.html(HtmlArr.join('')); } }, '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"]'); for(i=0;i<_Linktmp.length;i++){ _Linktmp[i].href+="#"+_PWtmp[i].value; } } }, 'reimu.net': { path: /archives/i, callback: function(){ site['codeRule']=/(?:(?:提取|访问|密[码碼])[码碼]?)\s*[:: ]?\s*([a-z\d]{4}|8酱)/i } } } }; var hostName = location.host.match(/\w+\.\w+$/)[0].toLowerCase(); //提取当前网站主域名(网盘填充密码用) var conf = site[hostName]; //设置主域名 var HostArr = []; //生成域名数组 for(var i in site) HostArr.push(i); //插入域名对象数组 var HostExp = new RegExp(HostArr.join("|"),'i'); //生成校验超链接的正则 //console.log(site.JumpUrl[host]); /* -----===== 检查是否需要处理跳转链 Start =====----- */ 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 sCode = hash.slice(1).trim(); // 调试用,检查是否为合法格式 if (!conf.chk.test(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 { //密码融合 特别支持的网站 if(site['Support'][hostName]&&site['Support'][hostName]['path'].test(paths)) { site['Support'][hostName].callback(); } //监听 A 标签点击事件 $('body').on('click', 'a', function () { var target=this; //如果超链接已有 hash 则跳过 if(this.hash) return; //如果目标对象为百度企业盘,提升密码匹配范围,以兼容百度企业云 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; } //var target=event.target.tagName==='A'?event.target:event.target.parentNode; //正则校验超链接匹配的网盘 if(HostExp.test(this.href)&&!/(?:tieba)\.baidu\.com/i.test(this.href)){ if(site['codeRule'].test(target.textContent)){ console.log('在当前超链接的对象中查找密码'); target.href+='#'+extCode(target); } else if(target.nextSibling&&site['codeRule'].test(target.nextSibling.textContent)){ console.log('密码在超链接后面的兄弟元素中',target.nextSibling.textContent); if(!/#/i.test(target.href)) target.href+='#'+extCode(target.nextSibling); } else if(site['pwdRule'].test(target.parentNode.textContent)){ console.log('从父对象中查找密码'); if(!/#/i.test(target.href)) target.href+='#'+extCode(target.parentNode); } else { var i = 0, maxParent = 5, //向上遍历的层级 parent = target; while(i