阿里云:
服务器购买地址
https://t.aliyun.com/U/8qaNGK
若失效,可用地址
https://www.aliyun.com/activity/wuying/dj?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=201905
2.部署教程
3.代码如下
const axios = require("axios");
const {
MTMC_userId,
MTMC_fingerprint,
MTMC_token,
MTMC_uuid
} = config.MeiTuan
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
function get(task, method = "get", data = null) {
return new Promise(async (resolve) => {
try {
let url = `https://mall.meituan.com/api/c/mallcoin/${task}&app_tag=union&bizId=2&ci=2&page_type=h5&poi=10000380&poiId=66&tenantId=1&t=${MTMC_token}&uci=-1&userid=${MTMC_userId}&utm_medium=android&utm_term=5.38.0&uuid=${MTMC_uuid}&xuuid=`
const headers = {
t: MTMC_token,
"user-agent": "Mozilla/5.0 (Linux; Android 11; MEIZU 18 Pro Build/RKQ1.201105.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/104.0.5112.69 Mobile Safari/537.36 TitansX/20.12.6 KNB/1.2.0 android/11 com.meituan.retail.v.android/armv7 App/11g20/5.38.0 com.meituan.retail.v.android/5.38.0",
Host: "mall.meituan.com",
"X-Requested-With": "com.meituan.retail.v.android",
"Content-Type": "application/json; charset=utf-8"
}
//console.log(headers)
if (method == "get") res = await axios.get(url, {
headers
});
if (data) {
xxstr = {
"platform": 4,
"app": 95,
"utm_term": "5.38.0",
"uuid": MTMC_uuid,
"fingerprint": MTMC_fingerprint,
"utm_medium": 95
}
data.riskMap ==
Object.assign(data.riskMap, xxstr)
}
// console.log(data)
if (method == "post") res = await axios.post(url, data, {
headers
});
if (res.data.code == 0) console.log(" 操作成功")
// console.log(headers)
// console.log(res.data)
resolve(res.data)
} catch (err) {
console.log(err);
resolve({
code: 500,
error: {
msg: "签到接口请求出错"
}
})
}
resolve();
});
}
async function getaskList() {
console.log("查询任务列表")
let res = await get("checkIn/queryTaskListInfoV3?&channel=1", "post", {
"riskMap": {
"partner": 109,
"campaignId": 1002,
"campaignName": "买菜币"
}
})
if (res.code == 0 && res.data) return res.data.checkInTaskInfos.filter(x => x.id == 52 && x.taskFinishCount != x.taskChance || x.status == 100)
return []
}
async function sign() {
signmsg = ""
console.log("去签到:")
let signRes = await get("checkIn/userCheckInNew?", "post", {
"userId": MTMC_userId,
"riskMap": {}
})
if (signRes.code == 0) {
if (signRes.data.result) signmsg = `签到成功!获得 ${signRes.data.rewardValue} 买菜币`
else signmsg = `签到失败!可能签到过啦`
console.log(" " + signmsg)
} else signmsg = signRes.error.msg
//console.log(signRes)/
//
for (rewardDate of [3, 7]) {
await get("checkIn/getWeekContinuousRewardNew?", "post", {
userId: MTMC_userId,
rewardDate: rewardDate,
"riskMap": {}
})
}
return signmsg
}
//浏览任务
async function view() {
let taskList = await getaskList()
if (taskList.length != 0) {
let task = taskList[0]
//领取
console.log("浏览任务开始:\n 去领取浏览任务:")
console.log(" " + task.buttonDesc)
if (task) {
if (task.buttonDesc == "领任务" || task.status == 10) {
let lqRes = await get("checkIn/takeTask?activityId=33&taskId=52&channel=1")
if (lqRes && lqRes.code == 0) {
console.log(" 领取成功\n等待17s")
await sleep(17 * 1000)
await get("checkIn/taskEventComplete?eventType=6&channel=1")
} else console.log(" " + lqRes.error.msg)
taskList = await getaskList()
task = taskList[0]
}
if (task.buttonDesc == "领奖励") {
await sleep(3 * 1000)
console.log(" 去领取奖励:")
let lqReward = await get(`checkIn/takeTaskReward?activityId=33&taskId=52&rewardId=774&taskType=6&userTaskId=${task.userTaskId}&channel=1`)
if (lqReward && lqReward.code == 0) {
console.log(` 领取成功!获得 ${lqReward.data.rewardType} ${lqReward.data.rewardValue}`)
}
}
} else console.log(" 暂无可领取任务")
}
}
async function getmyb() {
let res = await get("checkIn/getCheckInMainView?")
if (res && res.code == 0) return `\n 我的菜币:${res.data.userInfo.balance}\n 签到天数:${res.data.checkInCount}\n smjb:${res.data.noticeDetail}\n`
else return ""
}
async function share() {
console.log("去分享:")
let res = await get("checkIn/getShareReward?shareBusinessType=2&")
if (res.code == 0) {
if (res.data.result) console.log(` 分享成功!获得 ${res.data.rewardValue}菜币`)
else console.log(" 分享过啦")
}
}
async function meituanmc() {
let signMsg = await sign()
await view()
await share()
myInfo = await getmyb()
content = ` 【美团买菜】 签到:${signMsg} ${myInfo}`
console.log(myInfo)
return content
}
module.exports = meituanmc
这个脚本用于自动化处理美团买菜的一系列任务,如签到、领取奖励、浏览任务、分享等。它通过API请求实现与美团买菜服务的交互。
get函数:
通用函数,用于发送GET或POST请求。 接受任务名称、请求方法、以及数据包(如果是POST请求)。 构建完整的请求URL,包括用户的认证信息和其他参数。 根据请求方法,使用axios库发送请求,并处理返回的数据。 如果请求成功,打印操作成功的消息;如果失败,则捕获错误并返回错误代码和消息。 getaskList函数:
查询任务列表,特别是检查是否有未完成的任务。 调用 get
函数发送POST请求获取任务列表。过滤返回的任务列表,找出满足特定条件的任务(例如未完成的任务)。 sign函数:
执行签到操作。 调用 get
函数发送POST请求进行签到。根据返回的数据判断签到是否成功,并打印相应的消息。 还会调用 get
函数来获取连续签到的奖励。view函数:
处理浏览任务。 先获取任务列表,然后根据任务的状态执行相应的操作(如领取任务、完成任务、领取奖励)。 使用 sleep
函数等待一定时间模拟用户浏览。getmyb函数:
查询并返回用户的菜币余额、签到天数等信息。 share函数:
执行分享操作以获取奖励。 调用 get
函数发送请求并处理返回的数据,判断分享是否成功。meituanmc函数:
主函数,按顺序调用 sign
、view
、share
和getmyb
函数。将所有操作的结果汇总并打印。
这个脚本通过模拟用户行为来自动完成美团买菜平台上的日常任务,以获取奖励或积分。每个操作均通过API请求实现,脚本中还嵌入了一些简单的逻辑来处理请求的结果和可能的错误情况。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论