您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动或半自动地签到。
当前为
- // ==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
- // ==/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);