autoSign

一些论坛的自动签到脚本,目前支持4个网站:sstm,2djgame,acfun,lightnovel

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        autoSign
// @author      setycyas
// @namespace   https://greasyfork.org/zh-CN/users/14059-setycyas
// @description 一些论坛的自动签到脚本,目前支持4个网站:sstm,2djgame,acfun,lightnovel
// @include     *
// @version     1
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM_xmlhttpRequest
// @grant       GM_registerMenuCommand
// @grant       GM_xmlhttpRequest
// @run-at      document-end
// @license     MIT
// ==/UserScript==
//是否测试中,非测试时设定为0测试时设定为1.测试状态下会很多对话框监视状态
var isDebug = 0;
//上次签到日期
var lastSign = new Date();
var lastSignStr;
var vTemp = GM_getValue('lastSign');
if (vTemp) {
  var y = vTemp.match(/(\d+)y/) [1];
  var m = vTemp.match(/(\d+)m/) [1];
  var d = vTemp.match(/(\d+)d/) [1];
  lastSign.setFullYear(y, m, d);
} else {
  lastSign.setFullYear(1970, 0, 1);
}
lastSignStr = lastSign.getFullYear() + 'y' + lastSign.getMonth() + 'm' + lastSign.getDate() + 'd';
//油猴菜单
GM_registerMenuCommand('一键签到', SimpleSign);
/*所有需要签到的网站的资料
sType代表网站类型,目前只有simple和formhash两种.simple只要直接签到,formhash的比较复杂,要先访问主页获取formhash*/
var webSite = [
  {
    sType: 'formhash',
    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'
  },
  {
    sType: 'simple',
    data: '',
    signURL: 'http://www.lightnovel.cn/home.php?mod=task&do=apply&id=98'
  },
  {
    sType: 'simple',
    data: '',
    signURL: 'http://bbs4.2djgame.net/home/home.php?mod=task&do=apply&id=1'
  },
  {
    sType: 'simple',
    data: '',
    signURL: 'http://www.acfun.tv/member/checkin.aspx'
  }
];
//一键签到命令
function SimpleSign() {
  //今天的日期
  var today = new Date();
  var todayStr = today.getFullYear() + 'y' + today.getMonth() + 'm' + today.getDate() + 'd';
  //DebugAlert('日期差=' + (today - lastSign));
  if (lastSignStr == todayStr) {
    if (!confirm('今天已经运行过一键签到,一定要再运行吗?')) {
      DebugAlert('放弃再运行');
      return;
    } else {
      DebugAlert('执意再运行');
    }
  } else {
    DebugAlert('第一次执行当日一键签到');
  }
  //DebugAlert('lastSign='+lastSignStr);
  //DebugAlert('today='+todayStr);
  //DebugAlert('共有'+webSite.length+'个网站需要签到');

  for (var i = 0; i < webSite.length; i++) {
    if (webSite[i].sType == 'simple') {
      //DebugAlert('抓到一只simple的URL'+webSite[i].signURL);
      GM_xmlhttpRequest({
        method: 'GET',
        url: webSite[i].signURL,
        headers: {
          'User-Agent': 'Mozilla/5.0',
          'Accept': 'text/xml',
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        onload: function (response) {
          // alert(response.responseText.match('本期您已申请过'));
          DebugAlert(response.responseText);
        }
      });
    }
    if (webSite[i].sType == 'formhash') {
      //DebugAlert('抓到一只formhash的URL'+webSite[i].signURL);
      var signURL=webSite[i].signURL;
      var data=webSite[i].data;//要把变量传到响应函数,需要在最接近的地方定义变量,否则全局变量无法传入响应函数
      GM_xmlhttpRequest({
        method: 'GET',
        url: webSite[i].homeURL,
        headers: {
          'User-Agent': 'Mozilla/5.0',
          'Accept': 'text/xml',
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        onload: function (response) {
          var sp_html = '';
          if (response) {
            sp_html = response.responseText;
          }
          DebugAlert('此formhash主页响应了'+response.responseText.length+'字');
          var formhash = sp_html.match(/formhash=([^"]*)"/) [1];
          if (formhash.length > 0) {
            DebugAlert('formhash='+formhash);
            //签到请求
            GM_xmlhttpRequest({
              method: 'POST',
              url: signURL,
              data: 'formhash=' + formhash + '&'+data,
              headers: {
                'User-Agent': 'Mozilla/5.0', // If not specified, navigator.userAgent will be used.
                'Accept': 'text/xml', // If not specified, browser defaults will be used.
                "Content-Type": "application/x-www-form-urlencoded"
                
              },
              onload: function (response) {
                DebugAlert(response.responseText);
              }
            });
          }
        }
      });
    }
  }
  //一键签到完毕,记录最近签到日期

  GM_setValue('lastSign', todayStr);
  lastSign = new Date();
  lastSignStr = todayStr;
  alert('一键签到完成!');
}
//只有在debug时才显示的消息    

function DebugAlert(message) {
  if (isDebug > 0) {
    alert(message);
  }
}