云闪付自动签到脚本
脚本功能概述
该脚本用于自动完成云闪付每日签到任务,主要功能包括:
- 自动发起签到请求
- 使用环境变量读取
Authorization
和Cookie
- 推送签到结果通知
- 支持定时任务执行
脚本代码
以下是完整的脚本代码:
云闪付任务脚本/*
cron: 59 15 8 * * *
云闪付签到
说明:
参数Authorization和Cookie分别对应变量名YSF_TOKEN和YSF_COOKIE
*/
const notify = require('sendNotify')
const axios = require('axios')function version() {return new Promise(function(resolve, reject) {resolve(axios.get("https://cn.unionpay.com"))})
}async function main() {await version().then(data => { console.log(data.data) })const header = {"Host": "cn.unionpay.com/","Accept": "application/json, text/plain, /","Authorization": process.env.YSF_TOKEN,"Sec-Fetch-Site": "same-origin","Accept-Language": "zh-CN,zh-Hans;q=0.9","x-city": "360900","Sec-Fetch-Mode": "cors","Accept-Encoding": "gzip, deflate, br","Origin": "https://cn.unionpay.com/","Content-Length": "2","User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148/sa-sdk-ios (com.unionpay.chsp) (cordova 4.5.4) (updebug 0) (version 938) (UnionPay/1.0 CloudPay) (clientVersion 198) (language zh_CN) (upHtml) (walletMode 00)","Referer": "https://cn.unionpay.com/newsign/public/app/index.html","Connection": "keep-alive","Content-Type": "application/json","Sec-Fetch-Dest": "empty","Cookie": process.env.YSF_COOKIE}const payload = {}axios.post('https://cn.unionpay.com/newsign/api/daily_sign_in', payload, { headers: header }).then((res) => {result = res.data.signedIn ? '成功' : '失败'notify.sendNotify('云闪付签到结果', '签到' + result + '\n' + '目前连续签到天数为:' + res.data.signInDays['days'] + '\n' + '这个月连续签到天数:' + res.data.signInDays['current']['days'])console.log('签到' + result + '\n' + '目前连续签到天数为:' + res.data.signInDays['days'] + '\n' + '这个月连续签到天数:' + res.data.signInDays['current']['days'])}).catch((error) => {console.error(error)})
}
main()
技术解析
1. 定时任务
脚本通过 cron
表达式 59 15 8 * * *
设定每天 8:15:59 执行签到任务。这是典型的定时任务配置方式。
2. 依赖模块
axios
:用于发起 HTTP 请求。sendNotify
:用于推送签到结果通知。
3. 环境变量
脚本依赖以下环境变量:
YSF_TOKEN
:云闪付签到接口所需的Authorization
令牌。YSF_COOKIE
:云闪付请求所需的Cookie
。
4. 请求逻辑
- 请求地址:
POST https://cn.unionpay.com/newsign/api/daily_sign_in
- 请求头:包含
Authorization
和Cookie
。 - 请求体:空 JSON 对象
{}
。
5. 返回值处理
res.data.signedIn
:签到成功为true
,否则为false
。res.data.signInDays.days
:累计签到天数。res.data.signInDays.current.days
:本月连续签到天数。
6. 通知推送
通过 notify.sendNotify
推送签到结果,格式如下:
云闪付签到结果
签到成功
目前连续签到天数为:12
这个月连续签到天数:5
流程图
@startuml
start
:定时任务 (cron 触发);
:调用 version() 打印版本公告;
:构造 headers(带 token 和 cookie);
:POST 请求签到接口;
if (请求成功?) then (是):解析返回数据;:推送签到成功通知;
else (否):记录错误日志;
endif
stop
@enduml
脚本分段解析
1. 定时任务配置
/*
cron: 59 15 8 * * *
云闪付签到
说明:
参数Authorization和Cookie分别对应变量名YSF_TOKEN和YSF_COOKIE
*/
- 功能:通过
cron
表达式设定每天 8:15:59 执行签到任务。 - 依赖:环境变量
YSF_TOKEN
和YSF_COOKIE
。
2. 依赖模块引入
const notify = require('sendNotify')
const axios = require('axios')
- 功能:
axios
:用于发起 HTTP 请求。sendNotify
:用于推送签到结果通知。
3. 请求逻辑
async function main() {await version().then(data => { console.log(data.data) })const header = {"Host": "cn.unionpay.com/","Authorization": process.env.YSF_TOKEN,"Cookie": process.env.YSF_COOKIE}const payload = {}axios.post('https://cn.unionpay.com/newsign/api/daily_sign_in', payload, { headers: header }).then((res) => {result = res.data.signedIn ? '成功' : '失败'notify.sendNotify('云闪付签到结果', '签到' + result + '\n' + '目前连续签到天数为:' + res.data.signInDays['days'] + '\n' + '这个月连续签到天数:' + res.data.signInDays['current']['days'])}).catch((error) => {console.error(error)})
}
- 功能:
- 构造请求头并发送签到请求。
- 处理返回结果并推送通知。
- 捕获并记录错误。
4. 结果处理
result = res.data.signedIn ? '成功' : '失败'
notify.sendNotify('云闪付签到结果', '签到' + result + '\n' + '目前连续签到天数为:' + res.data.signInDays['days'] + '\n' + '这个月连续签到天数:' + res.data.signInDays['current']['days'])
- 功能:根据返回结果判断签到是否成功,并推送通知。
总结
该脚本通过自动化方式完成云闪付签到任务,结合定时任务和通知推送功能,非常适合日常使用。如需扩展功能,可以增加多账号支持或优化通知渠道。