当前位置: 首页 > news >正文

淘米自动签到脚本

一、功能概览

本脚本专为淘米网站 (mifan.61.com) 设计,实现自动化每日签到。核心功能包括:

  • 🕒 定时执行:通过 @crontab 0 9 * * * 实现每日 9 点自动运行
  • 🔐 身份认证:支持 withCredentials: true 带上登录态,自动完成身份验证
  • 📊 数据持久化:利用 GM_setValue 存储签到记录及响应数据
  • 🔔 通知提醒:基于 GM_notification 发送桌面通知,反馈签到动态
  • 🛡️ 异常处理:涵盖网络异常、响应数据解析及接口错误,支持重试机制增强稳定性
  • 📈 数据可视化:支持签到历史动态展示图表,提升用户体验
  • 🔒 安全加固:可选请求签名功能,提升请求安全性

二、核心代码详解

1. 请求头伪装

const headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36','Accept': 'application/json, text/plain, */*','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Accept-Encoding': 'gzip, deflate, br','Connection': 'keep-alive','Content-Type': 'application/json','Origin': 'https://mifan.61.com','Referer': 'https://mifan.61.com/','X-Requested-With': 'XMLHttpRequest'
};
  • 模拟主流浏览器请求,防止被反爬拦截。
  • 严格匹配 OriginReferer,确保请求合法。
  • 明确声明 Content-Typeapplication/json

2. 重试机制融合的签到请求逻辑

通过重试机制提升脚本稳定性,出错时自动尝试多次请求,最大化签到成功率。

let retryCount = 0;
const maxRetries = 3;function performCheckIn() {return new Promise((resolve, reject) => {function executeRequest() {GM_xmlhttpRequest({method: 'POST',url: 'https://mifan.61.com/api/v1/event/dailysign/',headers,data: JSON.stringify({}),withCredentials: true,onload: function(response) {try {const data = JSON.parse(response.responseText);const currentDate = new Date().toLocaleDateString('zh-CN');if (response.status === 200) {let successMsg = `淘米签到成功!日期:${currentDate}`;if (data.message) successMsg += ` - ${data.message}`;if (data.data && data.data.reward) successMsg += ` - 获得奖励:${data.data.reward}`;console.log('签到成功:', data);// 数据持久化GM_setValue('lastCheckInDate', currentDate);GM_setValue('lastCheckInTime', new Date().toLocaleString('zh-CN'));GM_setValue('lastResponse', JSON.stringify(data));GM_notification({title: '淘米自动签到成功',text: successMsg,timeout: 5000,onclick: () => window.open('https://mifan.61.com/', '_blank')});resolve();} else {const errorMsg = data.message || `签到失败,状态码:${response.status}`;console.error('签到失败:', response);GM_notification({ title: '淘米自动签到失败', text: errorMsg, timeout: 5000 });reject(new Error(errorMsg));}} catch (e) {const errorMsg = `解析响应数据失败:${e.message}`;console.error(errorMsg);GM_notification({ title: '淘米自动签到失败', text: errorMsg, timeout: 5000 });reject(new Error(errorMsg));}},onerror: function(error) {if (retryCount < maxRetries) {retryCount++;console.log(`请求失败,第${retryCount}次重试...`);setTimeout(executeRequest, 2000);} else {const errorMsg = `网络请求失败:${error}`;console.error(errorMsg);GM_notification({ title: '淘米自动签到失败', text: errorMsg, timeout: 5000 });reject(error);}}});}executeRequest();});
}
  • 通过计数控制重试次数,失败后间隔2秒自动尝试。
  • 所有错误均有详细日志及通知反馈,确保易于排查。

3. 签到历史数据可视化

function renderCheckinHistory() {const history = GM_getValue('checkinHistory', []);const chartData = history.map(entry => ({date: entry.date,reward: entry.reward || 0,status: entry.status || '成功'}));const ctx = document.getElementById('checkinChart').getContext('2d');new Chart(ctx, {type: 'bar',data: {labels: chartData.map(d => d.date),datasets: [{label: '每日奖励',data: chartData.map(d => d.reward),backgroundColor: 'rgba(75, 192, 192, 0.4)',borderColor: 'rgba(75, 192, 192, 1)',borderWidth: 1}]},options: {scales: { y: { beginAtZero: true } }}});
}
  • 读取持久化签到历史,实现动态奖励数据展示。
  • 采用 Chart.js 生成图表,支持直观查看签到成果。

4. 可选安全加固:请求签名

const generateSignature = (data, secret) => {const hmac = CryptoJS.HmacSHA256(JSON.stringify(data), secret);return CryptoJS.enc.Base64.stringify(hmac);
};const timestamp = Date.now();
const nonce = Math.random().toString(36).substring(2, 15);
const signature = generateSignature({ timestamp, nonce, path: '/api/v1/event/dailysign/' }, 'your_secret_key');headers['X-Timestamp'] = timestamp;
headers['X-Nonce'] = nonce;
headers['X-Signature'] = signature;
  • 通过 HMAC-SHA256 签名保证请求完整性与防篡改。
  • 需要服务端配合校验,提升安全防护等级。

三、架构流程图

未达上限
达到上限
开始签到
设置请求头
发送POST请求
请求是否成功?
检查重试次数
通知网络失败
响应状态码 = 200 ?
状态码错误处理
发送失败通知
解析响应JSON
JSON解析成功?
响应数据解析异常处理
保存签到数据
发送签到成功通知
签到结束
  • 网络请求失败自动重试,直到达到重试上限。
  • 状态码非200和 JSON 解析异常同样触发失败通知。
  • 成功路径执行数据保存与通知,确保用户获知签到状态。

四、部署与使用指南

安装步骤

  1. 在 Chrome/Firefox 浏览器安装 Tampermonkey 或 Violentmonkey。
  2. 创建新用户脚本,粘贴完整代码。
  3. 登录淘米网站,保证处于登录状态。
  4. 脚本自动执行且每天 9:00 定时签到。

典型脚本框架示例

// ==UserScript==
// @name         淘米自动签到
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  每日自动领取淘米超拉和金豆奖励
// @match        https://mifan.61.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_notification
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @crontab      0 9 * * *
// @require      https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
// @require      https://cdn.jsdelivr.net/npm/chart.js@3.7.0/dist/chart.min.js
// ==/UserScript==(function() {'use strict';GM_registerMenuCommand("查看签到历史", () => {renderCheckinHistory();});performCheckIn().catch(console.error);// 如果兼容 crontab 插件,可以用它定时执行if (typeof crontab !== 'undefined') {crontab('0 9 * * *', performCheckIn);}
})();

五、总结

本脚本集成了:

  • 跨域身份验证及接口调用
  • 丰富健壮的异常处理与重试机制
  • 签到状态持久化与桌面通知
  • 签到数据可视化历史追踪
  • 可选的请求安全加固

适用范围广泛,此框架可轻松移植改造为其他网站自动签到工具,快速适配不同API和业务场景。


仅供学习参考,欢迎交流!

http://www.dtcms.com/a/333020.html

相关文章:

  • 大气负氧离子自动监测站:解密空气的科技密码
  • 有红帽认证证书可以0元置换华为openEuler-HCIA/HCIP认证
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|13th Aug. , 2025
  • MyBatis StatementHandler核心原理详解
  • Nginx反向代理Tomcat实战指南
  • mysql-DDLy语句案例
  • 基于asp.net#C##VUE框架的独居老人物资配送系统的设计与实现#sql server#visual studio
  • OpenZeppelin Contracts 架构分层分析
  • 基于机器学习的赌博网站识别系统设计与实现
  • 【计算机视觉与深度学习实战】02基于形态学的权重自适应图像去噪系统
  • 【车联网kafka】常用参数及其命令总结(第八篇)
  • 【展厅多媒体】数字展厅小知识:实物识别桌是什么?
  • 杂记 02
  • Java研学-SpringCloud(四)
  • YOLO12 改进、魔改|幅度感知线性注意力MALA,提升小目标、遮挡的检测能力
  • FDBus CBaseWork运行在当前线程
  • AKShare开源金融数据接口库 | 1、介绍
  • 驱动-总线bus注册流程分析
  • QT开发中QString如何截取字符串
  • 怎样使用数据度量测试
  • Leetcode SQL基础50题
  • 旋钮键盘项目---foc讲解(开环)
  • 转换一个python项目到moonbit,碰到报错输出:编译器对workflow.mbt文件中的类方法要求不一致的类型注解,导致无法正常编译
  • 如何将堡塔云WAF迁移到新的服务器
  • 高精度标准钢卷尺优质厂家、选购建议
  • leetcode 342. 4的幂 简单
  • Flink Stream API 源码走读 - keyBy
  • MySQL知识解析
  • 设备管理系统如何改变制造业?_Hawkeye智能运维平台_璞华大数据
  • Docker安装——配置国内docker镜像源