1.购买服务器
阿里云:
服务器购买地址
https://t.aliyun.com/U/wrtp9T
若失效,可用地址
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.代码如下
//游戏动力app*/
const axios = require("axios");
const code = config.gamepower.loginCode
const headers = {
packagename: "com.vgn.gamepower",
"user-agent": "okhttp/3.12.0",
Host: "api.vgn.cn",
version: "1.3.7",
version_code: 47,
device_name: "",
device_id: "",
screen_resolution: "2400*1080",
device_type: "android",
// "Content-Token": "",
"Content-Type": "application/json; charset=utf-8"
}
function get(task, method = "get", data = null) {
return new Promise(async (resolve) => {
try {
let url = `https://api.vgn.cn/apiv2/${task}`;
if (method == "get") res = await axios.get(url, {
headers
});
if (method == "post") res = await axios.post(url, data, {
headers
});
if (method == "patch") res = await axios.patch(url, data, {
headers
});
if (method == "delete") res = await axios.delete(url, {
headers
});
if (res.data.code == 200) console.log(" 操作成功")
else console.log(" " + res.data.msg)
resolve(res.data)
} catch (err) {
console.log(err);
resolve({
code: 500,
msg: "签到接口请求出错"
})
}
resolve();
});
}
async function getaskList() {
console.log("查询任务列表")
let res = await get("task/list")
if (res.code == 200 && res.data) return res.data.filter(x => x.task_type == 1 && x.status != 2)
return []
}
async function dotask(taskList) {
for (var task of taskList) {
console.log("开始任务:" + task.title)
if (task.status == 0) {
switch (task.id) {
case 14:
await get("v3/member/wish", "patch", {
"product_id": 1394330
})
break
case 10:
await get("v3/game/1394330/comment", "post", {
"difficulty": 1,
"score": 5,
"length": 0,
"progress": 1,
"sale_notice": 0,
"play_status": 2,
"content": "好玩ヾ ^_^♪"
})
break
case 7:
for (i = 0; i < 5; i++) await get("home/operate", "post", {
"operate": 1,
"type_id": 22312,
"type": 1
})
break
case 8:
let cres = await get("v3/group/comment/22179", "post", {
"revert_id": "0",
"revert_user_id": "0",
"content": "牛啊牛啊牛啊牛",
"p_id": "0"
})
await get("comment/" + cres.data, "delete")
break
case 11:
await get("task/share/6001", "post")
break
case 17:
await get("task/share/6002", "post")
break
default:
break
}
}
console.log(` 去领取奖励:经验值${task.exp} 瓶盖${task.reward_point}`)
await get("task/" + task.id, "post")
}
}
async function gamepower() {
rinfo = ""
let loginRes = await get("v2/login/qq", "post", {
"code": code
})
if (loginRes.code == 200) {
console.log("登陆成功")
headers["Content-Token"] = loginRes.data.token
let taskList = await getaskList()
console.log(`当前还有${taskList.length}任务待完成`)
console.log("去签到")
await get("v3/mine/reward/point/daily", "post")
await dotask(taskList)
console.log("\n查询个人信息")
let uinfo = await get("v3/login/userinfo")
if (uinfo.code == 200) rinfo = `\n昵称:${uinfo.data.member_nickname}\n等级:${uinfo.data.level_info.level}\n瓶盖:${uinfo.data.reward_point}\n连签:${uinfo.data.reward_days}`
else rinfo = uinfo.msg
} else rinfo = loginRes.msg
console.log(rinfo)
return "【游戏动力】:" + rinfo
}
module.exports = gamepower
解析
这个脚本的通过调用游戏动力APP的API接口,实现自动化的签到、任务执行和奖励领取功能。它通过 axios
进行HTTP请求,处理任务列表,完成不同类型的任务,最终获取奖励信息。
1. headers
配置
这些是请求时需要的 HTTP 请求头,用于模拟APP客户端与服务器的通信:
packagename
: 固定的包名"com.vgn.gamepower"
。user-agent
: 用户代理,模拟的是okhttp
版本。Host
: 请求的服务器域名"api.vgn.cn"
。version
和version_code
: 模拟APP版本号和版本代码。device_name
,device_id
: 设备信息,这里是空的,可能需要通过具体设备来填充。screen_resolution
: 屏幕分辨率"2400*1080"
。device_type
: 设备类型,这里为"android"
。Content-Type
: 请求内容类型,"application/json; charset=utf-8"
表示请求体为JSON格式。
2. get
函数
这是一个通用的HTTP请求函数,根据指定的请求方式(GET、POST、PATCH、DELETE)发送请求,并返回响应结果:
通过
axios
的get
,post
,patch
,delete
方法来发起请求。如果返回的
code
为200
,说明操作成功,否则输出错误信息。如果出现错误,返回
{ code: 500, msg: "签到接口请求出错" }
。
3. getaskList
函数
这个异步函数用于获取任务列表:
它通过调用
get("task/list")
来请求任务列表。如果任务列表返回成功并且包含任务数据,它会过滤出
task_type == 1
且status != 2
的任务(假设task_type == 1
表示有效任务,status != 2
表示任务未完成)。返回过滤后的任务列表。
4. dotask
函数
这个异步函数用于执行任务:
对于每个任务,判断任务的
status
是否为0
,表示任务未完成。根据任务的
id
,执行不同的操作,支持:任务ID为14时,调用
v3/member/wish
接口。任务ID为10时,调用
v3/game/1394330/comment
接口,发表评论。任务ID为7时,调用
home/operate
接口,执行5次操作。任务ID为8时,评论并删除评论。
任务ID为11和17时,执行分享任务。
对于每个任务,完成后都会调用
get("task/" + task.id, "post")
来领取奖励。
5. gamepower
函数
这是主要的执行函数,包含了登录、任务处理、签到和用户信息查询的逻辑:
登录:调用
v2/login/qq
接口进行登录,登录成功后会设置Content-Token
为登录返回的 token。获取任务列表:登录成功后,调用
getaskList()
获取待完成的任务列表。签到:调用
get("v3/mine/reward/point/daily", "post")
来进行每日签到。执行任务:调用
dotask()
执行任务。查询个人信息:登录后,查询用户的昵称、等级、瓶盖数量和连续签到天数等信息,并输出。
6. 返回结果
在整个操作完成后,返回一个包含用户信息的字符串,格式如下:
【游戏动力】:
昵称:xxxx
等级:xx
瓶盖:xx
连签:xx
主要功能
登录到"游戏动力"APP。
获取未完成的任务列表。
执行任务,根据任务ID执行不同的API请求。
完成任务后领取奖励。
最后查询并输出用户的基本信息,包括昵称、等级、瓶盖数量和连续签到天数。
8. 模块导出
module.exports = gamepower
使得 gamepower
函数可以在其他模块中被调用,返回签到、任务完成和用户信息的结果。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论