1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/Bg6shY若失效,可用地
阿里云:
服务器购买地址
https://t.aliyun.com/U/Bg6shY若失效,可用地址
https://www.aliyun.com/daily-act/ecs/activity_selection?source=5176.29345612&userCode=49hts92d腾讯云:
https://curl.qcloud.com/wJpWmSfU若失效,可用地址
https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console华为云
https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=2019052.部署教程
3.代码如下
/*cron: 0 0 9 * * **/const notify = require('./Notify')const axios = require('axios')function version() {return new Promise(function (resolve, reject) {resolve(axios.get("scripts"))})}const formattedDate = new Date().toISOString().slice(0, 10);async function main() {await version().then(data => { console.log(data.data) })axios.get('https://card.ly2456.com/jxcard/api/booking/v1/storeBooking/listShowConfig', {params: {'uuid': '4f016263126d49958e9bbbf3689aee59','bookingDate': '2025-10-25'},headers: {'Host': 'card.ly3618.com','Connection': 'keep-alive','burialDataEvId': 'D45602D582F15150','content-type': 'application/x-www-form-urlencoded;charset=utf-8','Authorization': 'bearer eb0050c4-ea3c-4cc7-bf11-eff6eebc1ab0','X-WECHAT-HOSTSIGN': '{"noncestr":"51db2d7efcdac705ab268fc88e07a094","timestamp":1753454277,"signature":"1540823a8626fd579ae04a4b9149852e144cea86"}','Accept-Encoding': 'gzip,compress,br,deflate','User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.60(0x18003c32) NetType/WIFI Language/zh_CN','Referer': 'https://servicewechat.com/wx34582ffaf5e753a0/97/page-frame.html'}}).then((res) => {(res.data.data)[0].surplusNum > 0 ? notify.sendNotify('有票了!',(res.data.data)[0].surplusNum+'张' ): console.log((res.data.data)[0].surplusNum+'王')}).catch((error) => {console.error(error)})}main()
解析
该脚本为江西文旅一卡通余票监控脚本。
主要作用
定时(cron:每天 09:00)请求江西文旅接口,查询指定
uuid和bookingDate的余票数量;若余票
surplusNum > 0,通过本地的sendNotify模块推送通知"有票了!";否则在控制台打印余票张数。
执行流程(main)
axios.get(listShowConfig, { params, headers }):请求接口:
https://card.ly2456.com/jxcard/api/booking/v1/storeBooking/listShowConfig携带查询参数:
uuid(场馆/商品标识)、bookingDate(查询的预约日期)携带请求头(含 UA、Authorization、X-WECHAT-HOSTSIGN 等)
回包处理:
从
res.data.data[0].surplusNum读取余票;> 0⇒notify.sendNotify('有票了!', '<张数>张')否则
console.log('<张数>张')catch:打印错误。
关键参数与请求头说明
uuid:资源唯一标识(哪个园区/项目)。bookingDate:查询日期(示例中固定为"2025-10-25")。
你可以改成今日或任意日期。Authorization:bearer <token>——接口鉴权;通常会过期,需要按实际小程序/接口流程获取并更新。X-WECHAT-HOSTSIGN:签名(含
noncestr/timestamp/signature)。通常是按服务端/小程序规则生成,时间戳或签名不匹配会导致 401/403。其它头:
User-Agent、Referer、content-type等用于模拟微信小程序环境。
可改的地方
bookingDate:改为你要盯的日期。X-WECHAT-HOSTSIGN:按最新规则/时间戳实时生成或更新;否则很快失效。也可替换/刷新
Authorization。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论