// ==UserScript== // @name oneKeySign // @namespace https://greasyfork.org/users/14059 // @icon http://pic.ffsky.net/images/2015/12/11/884d0d09a577cb062eb51a0c67e5a4ca.jpg // @author setycyas // @homepage http://blog.sina.com.cn/u/1365265583 // @description 一些论坛的自动签到脚本,目前支持网站:sstm,2djgame,acfun,lightnovel,gn00,xiami(虾米音乐),tsdm(天使动漫) // @include https://sstmlt.net/* // @include http://www.gn00.com/* // @include http://www.acfun.tv/* // @include http://www.tsdm.net/* // @include http://www.lightnovel.cn/* // @include https://bbs4.2djgame.net/* // @include http://www.xiami.com/* // @version 1 // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @run-at document-start // @license MIT // @downloadURL none // ==/UserScript== //设置每个请求的最大等待时间(毫秒) var waitTime=60000; //是否处于自动签到中,若进行自动签到时,所有签到网站并非都已经响应或超时,则running=1 var running=0; /*所有需要签到的网站的资料 sType代表网站类型,目前只有simple和formhash两种.simple只要直接签到,formhash的比较复杂,要先访问主页获取formhash webName是网站简称,必须是签到链接signURL中的字符,否则无法知道签到响应是哪个网站的 successText是网站成功签到后返回消息中包含的关键字,如果响应中有对应的字符则认为签到成功 另外留意,formhash类的网站模版中,提示签到结果等消息的div标签是
XXX签到成功XXX
的形式, 非formhash类的论坛则是

恭喜XXX

*/ var webSite = [ { sType: 'formhash', webName:'sstmlt', data: 'qdxq=kx', signURL: 'https://sstmlt.net/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&sign_as=1&inajax=1', homeURL: 'https://sstmlt.net', successText:'签到成功' }, { sType: 'formhash', webName:'gn00', data: 'qdxq=kx&qdmode=3&todaysay=&fastreply=0', signURL: 'http://www.gn00.com/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&sign_as=1&inajax=1', homeURL: 'http://www.gn00.com', successText:'签到成功' }, { sType: 'formhash', webName:'tsdm', data: 'qdxq=kx&qdmode=1&todaysay=天气真好呀开心开心&fastreply=1', signURL: 'http://www.tsdm.net/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1', homeURL: 'http://www.tsdm.net/plugin.php?id=dsu_paulsign:sign', successText:'签到成功' }, { sType: 'simple', webName:'lightnovel', signURL: 'http://www.lightnovel.cn/home.php?mod=task&do=apply&id=98', successText:'恭喜' }, { sType: 'simple', webName:'xiami', signURL: 'http://www.xiami.com/task/signin', successText:'' }, { sType: 'simple', webName:'2djgame', signURL: 'http://bbs4.2djgame.net/home/home.php?mod=task&do=apply&id=1', successText:'恭喜' }, { sType: 'simple', webName:'acfun', signURL: 'http://www.acfun.tv/member/checkin.aspx', successText:'true' } ]; //响应标志.0表示未响应,签到后只有全部标志为1才会显示签到结果列表以及允许再次签到 var resFlag=new Array(); //签到成功标志.0表示不成功 var successFlag=new Array(); //注册油猴菜单 GM_registerMenuCommand('一键签到', SimpleSign); //一键签到命令 function SimpleSign() { //若上次签到没有全部响应,不作新的签到 if(running>0){ alert('上次签到还未全部响应,请耐心等待'); return; } //读取上次签到日期 var lastSign = new Date(); var lastSignStr; var vTemp = GM_getValue('lastSign'); if (vTemp) { lastSign.setFullYear(vTemp.match(/(\d+)y/) [1],vTemp.match(/(\d+)m/) [1], vTemp.match(/(\d+)d/) [1]); } else { lastSign.setFullYear(1970, 0, 1); } lastSignStr = lastSign.getFullYear() + 'y' + lastSign.getMonth() + 'm' + lastSign.getDate() + 'd'; //今天的日期 var today = new Date(); var todayStr = today.getFullYear() + 'y' + today.getMonth() + 'm' + today.getDate() + 'd'; if (lastSignStr == todayStr) { if (!confirm('今天已经运行过一键签到,一定要再运行吗?')) { return; } } //清空响应标志与成功标志 for(var i=0;i0){ successFlag[w_index]=-1; } //看看是否全部网站都响应完毕 CheckAndHandle(); } //响应处理 function HandleRes(rURL,rText){ var w_index=getWebIndexFromURL(rURL); if(w_index<0){ console.log(rURL+'没有对应资料'); return; } //找到响应的网站编号,记录响应状态与签到是否成功 resFlag[w_index]=1; if(rText.indexOf(webSite[w_index].successText)>-1){ successFlag[w_index]=1; } //看看是否全部网站都响应完毕 CheckAndHandle(); } //查看是否响应完毕,完毕则进行余下处理 function CheckAndHandle(){ //非运行状态,跳过 if(running<1){ return; } for(var i=0;i0)?'签到成功':'签到失败'; if(successFlag[i]<0){ temp='超时'; } showTxt+=webSite[i].webName+': '+temp+'\n'; } running=0; GM_setValue('lastSign', lastSignStr); alert(showTxt); } //从网站URL检测签到网站数组中的编号,-1表示检测失败 function getWebIndexFromURL(srcURL){ var w_index=-1; for(var i=0;i-1){ w_index=i; break; } } return w_index; }