// ==UserScript==
// @name 网盘自动填写密码【威力加强版】
// @description 智能融合网盘密码到网址中,打开网盘链接时不再需要手动复制密码,并自动提交密码,一路畅通无阻。同时记录网盘信息,当你再次打开该分享文件时,不再需要去找提取码,同时可追溯网盘地址的来源。
// @author 极品小猫
// @namespace https://gf.qytechs.cn/zh-CN/users/3128
// @version 3.7.2
// @date 2015.10.30
// @modified 2018.04.19
//
// 支持的网盘
// @include http*://pan.baidu.com/s/*
// @include http*://eyun.baidu.com/s/*
// @include http*://pan.lanzou.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://gf.qytechs.cn/scripts/35940-my-jquery-plugin/code/My%20jQuery%20Plugin.js?version=234478
// @supportURL https://gf.qytechs.cn/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.2" : {
"date" : "2018.04.19",
"info" : "【修正】提取码信息记录逻辑\n【支持】云盘精灵密码融合",
"detail" : "【修正】因为度盘更新影响,导致手动填写的提取码,无法被正确记录。\n【增加】云盘精灵(yunpanjingling.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); //初始化
}
CatPW=GM_getValue('CatPW').Src.search(yunData.surl)>0?GM_getValue('CatPW'):StorageDB('Share_'+yunData.surl).read();//取得信息记录
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'
},
'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']);
}
}
}
};
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();
}