您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
SparkAi 无感知自动签到
// ==UserScript== // @name SparkAi 自动签到 // @icon https://ai.sparkaigf.com/logo.png // @namespace https://github.com/NPC2000 // @version 1.0.0 // @description SparkAi 无感知自动签到 // @author NPC // @match https://ai.sparkaigf.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 获取并解析 Authorization 令牌 const secretToken = localStorage.getItem('SECRET_TOKEN'); let token; if (secretToken) { try { const parsedToken = JSON.parse(secretToken); // 解析 JSON token = parsedToken.data; // 提取 data 字段中的令牌 } catch (e) { console.error('无法解析 SECRET_TOKEN:', e); return; } } else { console.error('未找到 SECRET_TOKEN'); return; } // 确保 token 存在 if (!token) { console.error('未找到有效的 Authorization 令牌'); return; } // 自动获取 X-Website-Domain 和 Fingerprint const xWebsiteDomain = document.querySelector('meta[name="x-website-domain"]')?.getAttribute('content') || 'ai.sparkaigf.com'; // 生成一个随机的 Fingerprint(长度为10的随机数字) const randomFingerprint = Math.floor(Math.random() * 9000000000) + 1000000000; const fingerprint = document.querySelector('meta[name="fingerprint"]')?.getAttribute('content') || randomFingerprint.toString() ; // 获取用户信息 const parsedToken = JSON.parse(atob(token.split('.')[1])); // 解码 JWT 获取用户信息 const username = parsedToken.username; // 获取用户名 // 获取当前日期 const today = new Date().toISOString().split('T')[0]; // 格式化为 YYYY-MM-DD // 从 localStorage 检查此用户是否已经签到 const lastSignInDate = localStorage.getItem(`lastSignIn_${username}`); if (lastSignInDate === today) { console.log(`用户 ${username} 今天已经签到,跳过签到`); return; // 如果用户今天已经签到,直接返回 } // 定义签到的 URL 和请求体 const signInUrl = 'https://ai.sparkaigf.com/api/signin/sign'; const requestBody = JSON.stringify({}); // 请求体为空的 JSON 对象 // 发送 POST 请求 fetch(signInUrl, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, // 使用从 localStorage 中解析的 Authorization 令牌 'Content-Type': 'application/json', 'X-Website-Domain': xWebsiteDomain, // 自动获取的自定义头部字段 'Fingerprint': fingerprint, // 自动获取的自定义头部字段 }, body: requestBody }) .then(response => response.json()) // 解析为 JSON .then(data => { console.log('签到请求已发送'); console.log(data); // 打印返回的响应,以便检查是否成功 // 检查签到是否成功 if (data.code === 200 || data.message.includes('今日已签到')) { console.log(`用户 ${username} 签到成功`); // 签到成功后,记录签到日期 localStorage.setItem(`lastSignIn_${username}`, today); } else { console.error('签到失败:', data.message); } }) .catch((error) => { console.error('签到请求失败:', error); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址