美团外卖领红包
环境变量,名称:MT_TOKEN,值:xxxxx
关于MT_TOKEN获取方法,手机浏览器打开http://i.meituan.com 登录后,抓包查看请求头Cookie 找到http://i.meituan.com 然后找到token的值
定时规则0 11,14,17,21,0,1,2,3 * * *
附脚本
/*
美团外卖领红包
环境变量,名称:MT_TOKEN,值:xxxxx
关于MT_TOKEN获取方法,手机浏览器打开http://i.meituan.com 登录后,抓包查看请求头Cookie 找到http://i.meituan.com 然后找到token的值
定时规则0 11,14,17,21,0,1,2,3 * * *
[task_local]
#美团外卖领红包
0 11,14,17,21,0,1,2,3 * * *
[Script]
cron "0 11,14,17,21,0,1,2,3 * * *" script-path=mt.js, tag=美团外卖领红包
*/
const $ = new Env('美团领红包');
let parActivityId="Gh1tkq-wvFU2xEP_ZPzHPQ"
let wm_ctype="mtandroid"
let propIdforuse =2
let portraitId=498
let mt_token = process.env.MT_TOKEN;
let wm_latitude = process.env.wm_latitude;
let wm_longitude = process.env.wm_longitude;
if (!mt_token) {
console.log('请先添加美团Token,环境变量MT_TOKEN')
return
}
!(async () => {
if (mt_token.indexOf('@') >= 0){
let mt_tokens = mt_token.split('@')
console.log('发现' + mt_tokens.length + '个美团账号')
for (let i = 0; i < mt_tokens.length; i++) {
console.log('====账号' + ( i + 1 ) + '====' )
await getCoupons(mt_tokens[i])
console.log('====End====')
}
}else{
await getCoupons(mt_token)
await corepage(mt_token)
await sendTaskRedBean(mt_token)
await doAction(mt_token)
await myRedBeanRecords(mt_token)
}
})()
.catch((e) => {
$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')
})
.finally(() => {
$.done();
})
function getCoupons(token){
return new Promise(resolve => {
let cookie = "token=" + token
const options = {
"url": `https://mediacps.meituan.com/gundam/gundamGrabV3`,
"headers": {
"Accept": "application/json,text/plain, */*",
"Content-Type": "application/json;charset=UTF-8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-cn",
"Connection": "keep-alive",
"Cookie": cookie,
"Referer": "https://market.waimai.meituan.com/",
"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"
},
"body":'{"gundamId":20625,"grabKey":"4E35567E5DAB45E5B7CC2B3BDE2E67B7,AA41950DF11D44AA8324A7E0E32CE806,211BCD47900F43D1AAC3864049DB1400,0084BF0333F844A2846DA0827C21EBF7,34BCA492BAEA4D2E8CD0394B31D5CB26,AD317E383B064F84ACE3A8DCDC8C2572,DFEAE6C5C7664DBBB5A64E5F52297B5C,CF56C7F89ADF4933990684F91F88E4A0,5B4653A4388947249D9DEFBE53BC22E7,30941E32462A42AB9B3D741B77A96A6E","defaultGrabKey":"E28198A627324F85B4FF89FA10D093EC","actualLongitude":"","actualLatitude":"","needTj":true,"couponConfigIdOrderCommaString":"464617074,464617087,464617110,464617124,464573157,464573265,464574741,464577259,458043537,459036220,459956075,458056972,458056406,458047734,392417289,452275501,452275388,452275365,452275482,452447814,452446826,452446582,452447692,392417317,412809091,446694745,418776149,277807308,431529548","couponAllConfigIdOrderString":"","rubikCouponKey":""}'
}
$.post(options, (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`)
}else{
if (resp.statusCode == 200){
let d = JSON.parse(data);
if (d.code != 0){
console.log(d.msg)
return
}
let str = ''
str += d.msg + '\n'
d.data.coupons.forEach(el => {
str += '======' + el.couponName + '=====\n'
str += '' + el.amountLimit + '减' + el.couponAmount + '\n'
});
console.log(str)
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve()
}
})
})
}
async function corepage(token){
return new Promise(resolve => {
const options = {
"url": `https://i.waimai.meituan.com/cfeplay/playcenter/batchgrabred/corepage`,
"headers": {
"Host": "i.waimai.meituan.com",
"User-Agent":"MeituanGroup/11.9.208",
"x-requested-with": "XMLHttpRequest",
"content-type":"application/x-www-form-urlencoded"
},
"body":'parActivityId='+parActivityId+'&wm_ctype=mtandroid&wm_latitude='+wm_latitude+'&wm_longitude='+wm_longitude+'&token='+token
}
$.post(options, async(err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`)
}else{
if (resp.statusCode == 200){
let d = JSON.parse(data);
if (d.code == 0){
console.log('获取batchId:'+d.data.batchId)
batchId = d.data.batchId
await signForBeans(mt_token)
await drawlottery(mt_token)
await acceptRed(mt_token)
await redtobean(mt_token)
}e