访问指定网页时,自动检查并每日一次在后台新标签页中打开需要签到的网站。
// ==UserScript==
// @name 每日自动打开签到网页(any router等)
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 访问指定网页时,自动检查并每日一次在后台新标签页中打开需要签到的网站。
// @author Gemini
// @match *://*/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_openInTab
// @grant GM_log
// @run-at document-start
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// --- 您需要配置的部分 ---
// 【重要】要自动打开并签到的网页地址
const SIGN_IN_URL = 'https://anyrouter.top/console';
// 脚本日志的统一前缀,方便在控制台查看
const LOG_PREFIX = '[触发式自动签到]';
// --- 配置结束 ---
// 核心执行函数
async function dailyOpenOnce() {
// 用于存储的键名,确保唯一性
const storageKey = 'lastOpenedDateFor_' + SIGN_IN_URL;
// 获取 YYYY-MM-DD 格式的今天日期
const today = new Date().toISOString().slice(0, 10);
// 从存储中读取上次打开的日期
const lastOpenedDate = await GM_getValue(storageKey, null);
GM_log(`${LOG_PREFIX} 脚本在 ${window.location.href} 被触发。`);
GM_log(`${LOG_PREFIX} 今天是: ${today}, 上次记录的打开日期是: ${lastOpenedDate}`);
// 检查今天是否已经执行过
if (today !== lastOpenedDate) {
GM_log(`${LOG_PREFIX} 检测到是新的一天,准备在后台打开签到页面: ${SIGN_IN_URL}`);
// 在后台打开新的标签页
// a. active: false => 在后台打开,不跳转过去
// b. insert: true => 在当前标签页旁边打开
// c. setParent: true => 关闭后台标签页时,焦点会返回到当前页
GM_openInTab(SIGN_IN_URL, { active: false, insert: true, setParent: true });
// 【重要】立即更新存储中的日期,防止重复执行
await GM_setValue(storageKey, today);
GM_log(`${LOG_PREFIX} 已成功打开页面并更新日期记录。`);
} else {
GM_log(`${LOG_PREFIX} 今天已经执行过了,无需操作。`);
}
}
// 脚本主入口
dailyOpenOnce();
})();