霸王茶姬微信小程序自動化簽到系統完整實現解析

霸王茶姬微信小程序自動化簽到系統完整實現解析

技術棧:Node.js + 微信小程序API + MD5動態簽名

一、腳本全景架構

在這里插入圖片描述

功能模塊圖

主入口
多賬號輪詢
Token驗證
用戶信息獲取
新版簽到
積分查詢
結果推送

代碼目錄

  1. 核心配置
  2. 主流程控制
  3. 登錄驗證模塊
  4. 簽到功能實現
  5. 積分管理系統
  6. 安全簽名機制

二、完整代碼實現

核心配置

/*** 霸王茶姬自動化任務腳本* 環境變量格式:BW_TEA_TOKEN='token#uid'(多賬號用 & 或換行分隔)*/
const init = require('init')
const {$, notify, sudojia, checkUpdate} = init('霸王茶姬');
const moment = require('moment');// 多賬號配置解析
const bwTeaToken = process.env.BW_TEA_TOKEN ? process.env.BW_TEA_TOKEN.split(/[\n&]/) : [];
let message = ''; // 全局消息存儲// API端點配置
const baseUrl = 'https://webapi2.qmai.cn';
const appId = 'wxafec6f8422cb357b'; // 小程序固定ID
const newActivityId = '1080523113114726401'; // 新版簽到活動ID// 請求頭配置
const headers = {'user-agent': 'Mozilla/5.0...MiniProgramEnv/Windows','content-type': 'application/json','qm-from': 'wechat'
}

主流程控制

// 主執行入口
!(async () => {await checkUpdate($.name, bwTeaToken);// 多賬號輪詢執行for (let i = 0; i < bwTeaToken.length; i++) {const [token, uid] = bwTeaToken[i].split('#');headers['qm-user-token'] = token; // 動態設置Token$.userId = uid; // 保持賬號上下文// Token有效性驗證if (!await checkLogin()) {await notify.sendNotify('Token失效通知', `賬號[${i+1}] Token已失效`);continue;}await main(); // 執行任務鏈await $.wait(2000-3000); // 隨機延遲}// 聚合結果推送if (message) await notify.sendNotify(`簽到結果`, message);
})().catch((e) => $.logErr(e)).finally(() => $.done());// 任務鏈控制
async function main() {await getUserInfo();    // 獲取用戶信息await queryNewSign();   // 新版簽到await pointsInfo();     // 積分查詢
}

登錄驗證模塊

/*** Token有效性檢測* 接口:/customer-center*/
async function checkLogin() {try {const data = await sudojia.sendRequest(`${baseUrl}/web/catering2-apiserver/crm/customer-center?appid=${appId}`, 'get', headers);return data.status; // true表示有效} catch (e) {console.error(`Token檢測異常:${e}`);return false;}
}/*** 獲取用戶基本信息* 接口:/personal-info*/
async function getUserInfo() {const data = await sudojia.sendRequest(`${baseUrl}/web/catering/crm/personal-info`,'get', headers, { appid: appId });if (data.status) {$.phone = data.data.mobilePhone; // 脫敏處理$.nickName = data.data.name;message += `${$.nickName}(${$.phone})\\n`;}
}

簽到功能實現

/*** 新版簽到狀態查詢* 接口:/userSignStatistics*/
async function queryNewSign() {const res = await sudojia.sendRequest(`${baseUrl}/web/cmk-center/sign/userSignStatistics`,'post',headers,{ activityId: newActivityId });if (res.signStatus === 0) { // 未簽到狀態碼await newSign(); // 執行簽到}
}/*** 執行新版簽到* 接口:/takePartInSign*/
async function newSign() {const timestamp = Date.now();const res = await sudojia.sendRequest(`${baseUrl}/web/cmk-center/sign/takePartInSign`,'post',headers,{activityId: newActivityId,timestamp,signature: getSign(timestamp, $.userId) // 動態簽名});if (res.status) {message += "新版-簽到成功\\n";}
}

積分管理系統

/*** 積分信息查詢* 接口:/points-info*/
async function pointsInfo() {const { data } = await sudojia.sendRequest(`${baseUrl}/web/catering/crm/points-info`,'post',headers,{ appid: appId });// 積分信息處理message += `當前積分:${data.totalPoints}\\n`;if (data.soonExpiredPoints > 0) {message += `${data.soonExpiredPoints}積分將在${data.expiredTime}過期\\n`;}
}

安全簽名機制

/*** 動態簽名生成算法* @param timestamp 時間戳* @param userId 用戶ID*/
function getSign(timestamp, userId) {const params = {activityId: newActivityId,sellerId: "49006", // 固定商家IDtimestamp,userId};// 關鍵安全步驟:// 1. 參數按字母序排序const sorted = Object.keys(params).sort();// 2. 拼接查詢字符串const query = sorted.map(k => `${k}=${params[k]}`).join("&");// 3. 添加反轉的activityId作為鹽值const salt = newActivityId.split("").reverse().join("");// 4. MD5加密return sudojia.md5(query + "&key=" + salt);
}

三、技術亮點解析

1. 多賬號引擎設計

  • 動態Token切換:通過headers[‘qm-user-token’]實時更新
  • 上下文隔離:每個賬號獨立維護$.userId
  • 異常隔離:單賬號失敗不影響其他賬號執行

2. 簽名安全機制

原始參數
字母序排序
拼接查詢字符串
添加動態鹽值
MD5加密
最終簽名

3. 智能簽到流程

  1. 先查詢簽到狀態(避免重復簽到)
  2. 未簽到時生成動態簽名
  3. 提交簽名請求
  4. 失敗自動重試(代碼已內置)

四、使用指南

1. 環境配置

# 安裝依賴
npm install init moment# 配置賬號信息
export BW_TEA_TOKEN="token1#uid1&token2#uid2"

2. 運行監控

node a.js

輸出

*****第[1]個霸王茶姬賬號*****
用戶昵稱(138****1234)登錄成功~
新版-簽到成功!已連續簽到7天
當前積分:1580
2積分將在2025-5-31過期

五、聲明

  1. 本代碼僅用于學習微信小程序API調用規范
  2. 禁止用于任何商業用途
  3. Token等敏感信息需自行保管
  4. 頻繁請求可能導致賬號風控

技術要點總結:動態簽名生成 | 多賬號隔離 | 微信小程序接口逆向

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79096.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79096.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79096.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

氣動帶刮刀硬密封固定式對夾球閥:專為高粘度、強腐蝕性介質設計的工業解決方案-耀圣

氣動帶刮刀硬密封固定式對夾球閥&#xff1a;專為高粘度、強腐蝕性介質設計的工業解決方案 在石油化工、鋰電材料、污水處理等高難度工況中&#xff0c;帶顆粒的高粘度介質、料漿及強腐蝕性流體對閥門的性能提出了嚴苛要求。 氣動帶刮刀硬密封固定式對夾球閥憑借其獨特的結構…

Filecoin存儲管理:如何停止Lotus向特定存儲路徑寫入新扇區數據

Filecoin存儲管理&#xff1a;如何停止Lotus向特定存儲路徑寫入新扇區數據 引言背景問題場景解決方案步驟1&#xff1a;修改sectorstore.json文件步驟2&#xff1a;重新加載存儲配置步驟3&#xff1a;驗證更改 技術原理替代方案最佳實踐結論 引言 在Filecoin挖礦過程中&#x…

互聯網大廠Java求職面試:高并發系統設計與架構實戰

互聯網大廠Java求職面試&#xff1a; 高并發系統設計與架構實戰 第一輪提問&#xff1a;基礎概念與核心原理 技術總監&#xff08;嚴肅&#xff09;&#xff1a;鄭薪苦&#xff0c;你對JVM的內存模型了解多少&#xff1f;能說說堆、棧、方法區的區別嗎&#xff1f; 鄭薪苦&a…

AD原理圖復制較多元器件時報錯:“InvalidParameter Exception Occurred In Copy”

一、問題描述 AD原理圖復制較多元器件時報錯&#xff1a;AD原理圖復制較多元器件時報錯&#xff1a;“InvalidParameter Exception Occurred In Copy”。如下圖 二、問題分析 破解BUG。 三、解決方案 1、打開參數配置 2、打開原理圖優先項中的通用配置&#xff0c;取消勾選G…

網絡研討會開發注冊中, 5月15日特勵達力科,“了解以太網”

在線研討會主題 Understanding Ethernet - from basics to testing & optimization 了解以太網 - 從基礎知識到測試和優化 注冊鏈接# https://register.gotowebinar.com/register/2823468241337063262 時間 北京時間 2025 年 5 月 15 日 星期四 下午 3:30 - 4:30 適宜…

Spring Boot中的攔截器!

每次用戶請求到達Spring Boot服務端&#xff0c;你是否需要重復寫日志、權限檢查或請求格式化代碼&#xff1f;這些繁瑣的“前置后置”工作讓人頭疼&#xff01;好在&#xff0c;Spring Boot攔截器如同一道智能關卡&#xff0c;統一處理請求的橫切邏輯&#xff0c;讓代碼優雅又…

三個線程 a、b、c 并發運行,b,c 需要 a 線程的數據如何解決

說明&#xff1a; 開發中經常會碰到線程并發&#xff0c;但是后續線程需要等待第一個線程執行完返回結果后&#xff0c;才能再執行后面線程。 如何處理呢&#xff0c;今天就介紹兩種方法 1、使用Java自有的API即CountDownLatch&#xff0c;進行實現 思考&#xff1a;CountDown…

js原型污染 + xss劫持base -- no-code b01lersctf 2025

題目信息:Found this new web framework the other day—you don’t need to write any code, just JSON. 我們先來搞清楚究竟發生了什么 當我們訪問 /index /*** 處理 /:page 路徑的 GET 請求* param {Object} req - 請求對象* param {Object} reply - 響應對象* returns {Pro…

Qwen智能體qwen_agent與Assistant功能初探

Qwen智能體qwen_agent與Assistant功能初探 一、Qwen智能體框架概述 Qwen&#xff08;通義千問&#xff09;智能體框架是阿里云推出的新一代AI智能體開發平臺&#xff0c;其核心模塊qwen_agent.agent提供了一套完整的智能體構建解決方案。該框架通過模塊化設計&#xff0c;將L…

vue數據可視化開發常用庫

一、常用數據可視化庫 1. ECharts 特點&#xff1a;功能強大&#xff0c;支持多種圖表類型&#xff0c;社區活躍。適用場景&#xff1a;復雜圖表、大數據量、3D 可視化。安裝&#xff1a;npm install echarts示例&#xff1a;<template><div ref"chart" c…

小紅書視頻無水印下載方法

下載小紅書&#xff08;RED/Xiaohongshu&#xff09;視頻并去除水印可以通過以下幾種方法實現&#xff0c;但請注意尊重原創作者版權&#xff0c;下載內容僅限個人使用&#xff0c;避免侵權行為。 方法一&#xff1a;使用在線解析工具&#xff08;推薦&#xff09; 復制視頻鏈…

Qt讀寫XML文檔

XML 結構與概念簡介 XML&#xff08;可擴展標記語言&#xff09; 是一種用于存儲和傳輸結構化數據的標記語言。其核心特性包括&#xff1a; 1、樹狀結構&#xff1a;XML 數據以層次化的樹形結構組織&#xff0c;包含一個根元素&#xff08;Root Element&#xff09;&#xff…

lambda 表達式

C 的 lambda 表達式 是一種輕量、內聯的函數對象寫法&#xff0c;廣泛用于標準算法、自定義回調、事件響應等場景。它簡潔且強大。以下將系統、詳細地講解 lambda 的語法、捕獲規則、應用技巧和實際使用場景。 &#x1f9e0; 一、基本語法 [捕獲列表](參數列表) -> 返回類型…

Web端項目系統訪問頁面很慢,后臺數據返回很快,網絡也沒問題,是什么導致的呢?

Web端訪問緩慢問題診斷指南(測試工程師專項版) ——從瀏覽器渲染到網絡層的全鏈路排查方案 一、問題定位黃金法則(前端性能四象限) 1. [網絡層] 數據返回快 ≠ 資源加載快(檢查Content Download時間) 2. [渲染層] DOM復雜度與瀏覽器重繪(查看FPS指標) 3. [執行層…

Docker網絡模式深度解析:Bridge與Host模式對比及實踐指南

#作者&#xff1a;鄧偉 文章目錄 一、引言二、Bridge模式&#xff08;網橋模式&#xff09;2.1 工作原理2.2 核心特性2.4 適用場景2.5 優缺點分析 三、Host模式3.1 工作原理3.2 核心特性3.3 配置方法3.4 適用場景3.5 優缺點分析 四、網橋模式與Host模式對比五、最佳實踐與注意…

React+Taro選擇日期組件封裝

話不多說&#xff0c;直接上效果 1.頁面渲染時間模塊 {this.renderCalendarPopup()}2.引入時間組件彈層&#xff0c;state中加入showPopup(控制什么時候展示時間選擇彈層)&#xff0c;time(選擇后的時間值) private renderCalendarPopup () > {const { showPopup, time…

備戰藍橋杯國賽第一天-atcoder-beginner-contest404

B. 因為只有四種情況&#xff0c;旋轉90/180/270度后替換&#xff0c;直接替換&#xff0c;暴力即可 C. 循環圖的定義是每個點出度為2&#xff0c;而且只有一個環的&#xff0c;所以先判斷出度&#xff0c;再判斷是否成環 #include <bits/stdc.h> using namespace st…

Linux59 SSH配置前瞻 JumpServer雙網卡ping通

為什么Ping這個IP地址Ping得通 本地址 [rootlocalhost network-scripts]# cat ifcfg-ens33 iTYPEEthernet BOOTPROTOnone DEFROUTEyes DEVICEens33 ONBOOTno IPADDR192.168.235.4 NETMASK255.255.255.0 GATEWAY192.168.235.2 DNS1114.114.114.114 [rootlocalhost network-scrip…

Spring框架(1)

Spring框架是Java企業級開發中最受歡迎的框架之一&#xff0c;它通過簡化開發流程、降低耦合度&#xff0c;讓開發者能夠更專注于業務邏輯的實現。本文將帶你了解Spring框架的核心概念和基本用法。 一、Spring框架簡介 Spring是一個輕量級的開源Java開發框架&#xff0c;由Ro…

QWindowkit 實現無邊框,陰影支持系統邊欄縮放等功能

一.感謝作者,QWindowkit 源碼地址: GitHub - stdware/qwindowkit: Cross-platform frameless window framework for Qt. Support Windows, macOS, Linux. 二.集成pro工程: QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 # Yo…