功能概述
該腳本用于自動完成奈雪點單小程序的每日任務,包括:
- 自動檢測 Token 有效性
- 自動簽到(如果未簽到)
- 獲取用戶基礎信息(昵稱、手機號)
- 查詢當前奈雪幣余額
- 記錄連續簽到天數
- 支持多賬號執行,適用于 Node.js 腳本自動化平臺(如青龍面板)定時運行。
使用方法
- 配置環境變量
NAIXUE_TOKEN
,內容為 Bearer Token(去掉 Bearer)。 - 多賬號用
&
或換行分隔。 - 定時運行腳本。
完整代碼實現
以下是完整的腳本代碼:
const init = require('init')
const {$, notify, sudojia, checkUpdate} = init('奈雪點單');
const crypto = require('crypto');
const naiXueList = process.env.NAIXUE_TOKEN ? process.env.NAIXUE_TOKEN.split(/[\n&]/) : [];
let message = '';
// 接口地址
const baseUrl = 'https://tm-web.pin-dao.cn'
// openId
const openId = 'AsaSsGzbziPlZwfiXM';!(async () => {await checkUpdate($.name, naiXueList);for (let i = 0; i < naiXueList.length; i++) {const index = i + 1;$.token = naiXueList[i];console.log(`\n*****第[${index}]個${$.name}賬號*****`);const isLogin = await baseUserInfo();if (!isLogin) {console.error(`Token 已失效`);await notify.sendNotify(`【Token失效通知】`, `${$.name}賬號[${index}] Token 已失效,請重新登錄獲取 Token\n\n`);continue;}message += `📣====${$.name}賬號[${index}]====📣\n`;message += `${$.nickName}(${$.mobile})\n`;await $.wait(sudojia.getRandomWait(800, 1200));await main();await $.wait(sudojia.getRandomWait(2000, 2500));}if (message) {await notify.sendNotify(`【${$.name}】`, `${message}`);}
})().catch((e) => $.logErr(e)).finally(() => $.done());// ... existing code ...
功能說明
方法列表
方法名 | 作用描述 |
---|---|
baseUserInfo() | 校驗當前用戶 Token 是否有效,獲取用戶昵稱、手機號等基礎信息 |
queryAndHandleSignIn() | 查詢當前是否已簽到,未簽到則調用 performSignIn() 執行簽到 |
performSignIn(nowDate) | 執行當天的簽到操作(POST 提交簽到日期) |
queryUserCoin() | 查詢用戶當前奈雪幣余額與連續簽到天數 |
sendRequest(apiOptions) | 所有接口請求的封裝方法,自動附帶簽名和通用參數 |
getBody() | 生成請求簽名和結構,包括 HMAC-SHA1 簽名邏輯和時間戳 |
randomString() | 生成用于簽名的 nonce 隨機字符串(默認6位) |
formatDate(date) | 格式化日期為 YYYY-MM-DD 格式,用于簽到接口參數 |
關鍵變量
變量名 | 說明 |
---|---|
NAIXUE_TOKEN | 環境變量,內容是 Bearer Token(去掉 Bearer) |
$.token | 當前用戶的 token,用于 Authorization |
$.signCount | 連續簽到的天數 |
$.nickName | 當前用戶昵稱 |
$.mobile | 當前用戶手機號 |
openId | 固定寫死的 openId,簽名計算需要 |
執行流程圖
以下是腳本的主要執行流程(Mermaid 語法):
注意事項
本文部分僅用于測試和學習研究,禁止用于商業用途,不能保證其合法性、準確性、完整性和有效性,請根據情況自行判斷。