// ==UserScript== // @name 通用_自动签到 // @name:zh-CN 通用_自动签到 // @name:en-US Uni_Auto sign // @description 自动或半自动地签到。 // @version 3.0.0 // @author LiuliPack // @license WTFPL // @namespace https://gitlab.com/LiuliPack/UserScript // @match *://*/* // @supportURL https://gitlab.com/liulipack/UserScript // @grant GM_registerMenuCommand // @run-at document-idle // @downloadURL none // ==/UserScript== /* 参数示范 / Config demo { "remark": "备注", "url": "网址", "check": { "mode": ["0:元素属性", "1:元素文本", "2:元素存在"], "element": "元素选择器", "data": ["元素文本或元素属性键", "元素属性值"] }, "sign": [ { "remark": "备注", "data": "元素选择器", "data": () => { // 自定义脚本 }, "delay": "0", "last": ["false:不是最后一步", "true:是最后一步"] } ], "refresh": "刷新页面", "close": "关闭页面" }, { "remark": "Remarks", "url": "URL", "check": { "mode": ["0:Element Properties", "1:Element Text", "2:Element Existence"], "element": "Element Selector", "data": ["Element text or element attribute key", "Element attribute value"] }, "sign": [ { "remark": "Remarks", "data": "Element Selector", "data": () => { // Custom Script }, "delay": "0", "last": ["false: Not the last step", "true: Is the last step"] } ], "refresh": "Refresh page", "close": "Close page" } */ 'use strict'; // 定义参数(config)和网页链接(URL)变量;快捷元素选择($('元素'))和关闭页面(close())函数。 let config = [ { "remark": "Anime 字幕论坛_签到插件", "url": "https://bbs.acgrip.com/dsu_paulsign-sign.html", "check": { "mode": 2, "element": "#shuai_menu + table .tac a" }, "sign": [ { "remark": "选择心情", "data": "#yl", "delay": 0, "last": false }, { "remark": "勾选不填写留言", "data": "#qiandao > table.tfm > tbody > tr:nth-child(1) > td > label:nth-child(3) > input[type=radio]", "delay": 0, "last": false }, { "remark": "执行签到", "data": "#shuai_menu + table .tac a", "delay": 0, "last": true } ], "refresh": false, "close": true }, { "remark": "Anime 字幕论坛_Discuz 任务", "url": "https://bbs.acgrip.com/home.php?mod=task", "check": { "mode": 2, "element": "#ct a[href='home.php?mod=task&do=apply&id=1']", }, "sign": [ { "remark": "执行签到", "data": "#ct a[href='home.php?mod=task&do=apply&id=1']", "delay": 0, "last": true } ], "refresh": false, "close": true }, { "remark": "2DFun", "url": "https://2dfan.com/", "check": { "mode": 2, "element": "#do_checkin" }, "sign": [ { "remark": "执行签到", "data": "#do_checkin", "delay": 0, "last": true } ], "refresh": true, "close": true }, { "remark": "南+_接任务", "url": "https://www.south-plus.net/plugin.php?H_name-tasks.html.html", "check": { "mode": 0, "element": "#p_15 a", "data": ["title", "按这申请此任务"] }, "sign": [ { "remark": "接每日任务", "data": "#p_15 a", "delay": "0", "last": false }, { "remark": "接每周任务", "data": "#p_14 a", "delay": "0", "last": false }, { "remark": "前往完成任务页面", "data": () => { window.open('https://www.south-plus.net/plugin.php?H_name-tasks-actions-newtasks.html.html', "_self") }, "delay": 3, "last": true } ], "refresh": false, "close": true }, { "remark": "南+_完成任务", "url": "https://www.south-plus.net/plugin.php?H_name-tasks-actions-newtasks.html.html", "check": { "mode": 0, "element": "#both_15 a", "data": ["title", "领取此奖励"] }, "sign": [ { "remark": "完成每日任务", "data": "#both_15 a", "delay": "0", "last": false }, { "remark": "完成每周任务", "data": "#both_14 a", "delay": "0", "last": true } ], "refresh": false, "close": true }, { "remark": "绯月", "url": "https://bbs.kfpromax.com/kf_growup.php", "check": { "mode": 2, "element": ".gro_divhui:nth-child(5) + div a:not(a[href=\"javascript:;\"])" }, "sign": [ { "remark": "执行签到", "data": ".gro_divhui:nth-child(5) + div a:not(a[href=\"javascript:;\"])", "delay": 0, "last": true } ], "refresh": false, "close": true }, { "remark": "绅士仓库", "url": "https://cangku.moe/", "check": { "mode": 1, "element": ".footer li:nth-child(2) a", "data": ["签到"] }, "sign": [ { "remark": "执行签到", "data": ".footer li:nth-child(2) a", "delay": 0, "last": true } ], "refresh": false, "close": false }, { "remark": "紳士の庭", "url": "https://gmgard.moe/", "check": { "mode": 1, "element": "#checkw", "data": ["点此签到"] }, "sign": [ { "remark": "执行签到", "data": "#checkin", "delay": 0, "last": true } ], "refresh": false, "close": false } ], URL = location.href, $ = ele => document.querySelector(ele); function close() { window.close(); }; // 等待 5 秒 setTimeout(() => { // 遍历配置信息 config.forEach(data => { // 如果链接匹配且未签到 if(URL === data.url && data.check.mode === 0 && $(data.check.element)?.getAttribute(data.check.data[0]) === data.check.data[1] || URL === data.url && data.check.mode === 1 && $(data.check.element)?.textContent === data.check.data[0] || URL === data.url && data.check.mode === 2 && $(data.check.element)) { // 执行签到 data.sign.forEach(data => { // 等待延时 setTimeout(() => { // 判断模式并执行对应操作 typeof data.data === "string" ? $(data.data)?.click() : data.data() ; // 如果是最后一步 if(data.last) { // 根据参数刷新和关闭 data.refresh ? location.reload() : 0 ; setTimeout(() => { data.close ? close() : 0 ; }, 500); } }, data.delay * 1000); }); }else if(URL === data.url) { // 根据参数刷新和关闭 data.refresh ? location.reload() : 0 ; setTimeout(() => { data.close ? close() : 0 ; }, 500); } }); }, 5000);