您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一些论坛的自动签到脚本,目前支持网站:sstm,2djgame,acfun,lightnovel,gn00,xiami(虾米音乐),tsdm(天使动漫)
// ==UserScript== // @name oneKeySign // @namespace https://gf.qytechs.cn/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 // ==/UserScript== //设置每个请求的最大等待时间(毫秒) var waitTime=60000; //是否处于自动签到中,若进行自动签到时,所有签到网站并非都已经响应或超时,则running=1 var running=0; /*所有需要签到的网站的资料 sType代表网站类型,目前只有simple和formhash两种.simple只要直接签到,formhash的比较复杂,要先访问主页获取formhash webName是网站简称,必须是签到链接signURL中的字符,否则无法知道签到响应是哪个网站的 successText是网站成功签到后返回消息中包含的关键字,如果响应中有对应的字符则认为签到成功 另外留意,formhash类的网站模版中,提示签到结果等消息的div标签是<div class="c">XXX签到成功XXX</div>的形式, 非formhash类的论坛则是<div class="alert_info"><p>恭喜XXX</p></div>*/ 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;i<webSite.length;i++){ resFlag[i]=0; successFlag[i]=0; } //开始运行 running=1; for (var i = 0; i < webSite.length; i++) { if (webSite[i].sType == 'simple') { console.log('已发送simple类签到: '+ webSite[i].webName); GM_xmlhttpRequest({ method: 'GET', url: webSite[i].signURL, headers: { 'User-Agent': 'Mozilla/5.0', 'Accept': 'text/xml', 'Content-Type': 'application/x-www-form-urlencoded' }, timeout:waitTime, ontimeout: function(response){ console.log('接到超时信息: '+response.finalUrl); HandleTimeOut(response.finalUrl); }, onload: function (response) { console.log('simple类签到接收响应: '+response.finalUrl); HandleRes(response.finalUrl,response.responseText); } }); //针对没有响应的网站,无法接收响应后再处理,直接当作有响应算了,发送消息后马上处理 if(webSite[i].successText.length<1){ resFlag[i]=1; successFlag[i]=1; } } if (webSite[i].sType == 'formhash') { console.log('已发送获取formhash消息: '+ webSite[i].webName); GM_xmlhttpRequest({ method: 'GET', url: webSite[i].homeURL, headers: { 'User-Agent': 'Mozilla/5.0', 'Accept': 'text/xml', 'Content-Type': 'application/x-www-form-urlencoded' }, timeout:waitTime, ontimeout: function(response){ console.log('获取formhash消息超时: '+ response.finalUrl); HandleTimeOut(response.finalUrl); }, onload: function (response) { var w_index=getWebIndexFromURL(response.finalUrl); var sp_html = ''; if (response) { sp_html = response.responseText; } var formhash = sp_html.match(/formhash=([^"]*)"/) [1]; console.log('获取formhash得到响应: '+ response.finalUrl + ' formhash='+formhash); if(formhash.length<1){ console.log('获取formhash得到失败:' + response.finalUrl); resFlag[w_index]=1; successFlag[w_index]=0; return; } GM_xmlhttpRequest({ method: 'POST', url: webSite[w_index].signURL, data: 'formhash=' + formhash + '&'+webSite[w_index].data, headers: { 'User-Agent': 'Mozilla/5.0', 'Accept': 'text/xml', 'Content-Type': 'application/x-www-form-urlencoded' }, timeout:waitTime, ontimeout: function(response){ console.log('接到超时信息: '+response.finalUrl); HandleTimeOut(response.finalUrl); }, onload: function (response) { console.log('formhash类签到接收响应: '+response.finalUrl); HandleRes(response.finalUrl,response.responseText); } }); } }); } } alert("已发送签到信息,请耐心等待响应.响应前不要关闭网页"); } //超时处理 function HandleTimeOut(rURL){ var w_index=getWebIndexFromURL(rURL); if(w_index<0){ console.log(rURL+'没有对应资料'); return; } //找到超时的网站编号,记录响应状态与签到是否成功.没有成功消息的前面已经假定了成功,不修改successFlag resFlag[w_index]=1; if(webSite[w_index].successText.length>0){ 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;i<webSite.length;i++){ if(resFlag[i]<1){ console.log('查看是否全部响应完毕,发现至少'+webSite[i].webName+'尚未响应'); return; } } //都响应完毕,显示结果, 取消running状态,记录签到日期 console.log('全部签到响应完毕'); var lastSign = new Date(); var lastSignStr = lastSign.getFullYear() + 'y' + lastSign.getMonth() + 'm' + lastSign.getDate() + 'd'; var showTxt='['+lastSign.getFullYear() + '年' + (lastSign.getMonth() + 1)+'月' + lastSign.getDate() + '日'+'签到结果]\n'; for(var i=0;i<webSite.length;i++){ var temp=(successFlag[i]>0)?'签到成功':'签到失败'; 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<webSite.length;i++){ if(srcURL.indexOf(webSite[i].webName)>-1){ w_index=i; break; } } return w_index; }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址