- // ==UserScript==
- // @name autoSign
- // @author setycyas
- // @namespace https://gf.qytechs.cn/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);
- }
- }