阿里云:
服务器购买地址
https://t.aliyun.com/U/C6sVsb若失效,可用地址
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=2019052.部署教程
3.代码如下
const axios = require('axios')const md5 = require('crypto-js').MD5const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));function KsGet(url, method = "get", data = null) {return new Promise(async (resolve) => {try {const headers = {'client-identifier': config.kaoshibao.clientid,authorization: config.kaoshibao.authorization}timestamp = new Date().getTime().toString()headers.sign = md5("12b6bb84e093532fb72b4d65fec3f00b" + config.kaoshibao.clientid + url + timestamp + '12b6bb84e093532fb72b4d65fec3f00b').toString()headers.timestamp = timestamplet res = await axios({method,url: "https://api.yisouti.com" + url,data,headers});// console.log(res)if (res.data.msg) console.log(" " + res.data.msg)resolve(res.data)} catch (err) {console.log(err);resolve({msg: "签到接口请求出错"})}resolve();});}//KsGet("请求链接后面那一坨 /user开始","请求方式 get就不用填了 其它的再填 如post","请求数据 同理 get的不用填")async function task() {idss = [];ans = null;pid = 876501;Info = "";let signres = await KsGet("/user/PointCenter/sign") //签到 写别的也这样if (signres && signres.code == 200) Info = `签到成功,获得${signres.data.point}积分,连签 ${signres.data.continue_days}天`else Info = signres.msglet task = await KsGet("/user/PointCenter/home") //获取任务列表if (task) {taskList = ((task && task.code == 200) ? task.data.tasks : []).filter(x => x.task_id == 10004 || x.task_id == 10010)}for (task of taskList) {console.log("任务:" + task.title)if (task.status == 1) {if (task.task_id == 10004) {let ids = await KsGet("/questions/fetch", "post", {"paperid": "876501"})//获取题目idif (ids && ids.code == 200) idss = ids.data.rowsconsole.log(`共获取到 ${idss.length}道题目`)for (i = 0; i < 201; i) {var n = Math.floor(Math.random() * idss.length + 1) - 1;// console.log(`抽取题目中: ${idss[n]}\n去查询答案`)let answer = await KsGet("/questions/ids", "post", {"ids": `[${idss[n]}]`})if (answer.code == 200) {ans = answer.data[0].answer//console.log(`Q:${answer.data[0].question}\nA:${answer.data[0].analysis}`)}if (ans) {let r = await KsGet("/questions/reportResult", "post", {"result": "1","answer": `${ans}`,"use_time": "1181","question_id": idss[n],"paperid": pid})if (r.code == 200) console.log(`答题进度 ${i++}/200`)}}await getprize(task.id, task.point)} else await KsGet("/user/PointCenter/taskCallback", "post", {"event": "view_video"}) //激励视频await getprize(task.id, task.point)} else {await getprize(task.id, task.point)} //领取奖励await sleep(2000)await getprize(task.id, task.point)}async function getprize(id, point) {let res = await KsGet("/user/PointCenter/getTaskReward", "post", {"id": id,"point": point})if (res.code == 200) console.log(`领取成功!!获得${res.data.point}积分`)}//查询let baseInfo = await KsGet("/user/pointCenter/getBase")if (baseInfo && baseInfo.code == 200) {sign = baseInfo.data.is_signed == 1 ? "已签" : "未签"Info = `今日${sign} ,连签${baseInfo.data.continue_days},总积分 ${baseInfo.data.user_point} `}return "【考试宝】:" + Info}module.exports = task;
解析
这个脚本是一个针对考试宝平台【https://www.kaoshibao.com/】的自动化签到和任务完成脚本。通过调用平台的 API,自动执行签到、答题任务、领取奖励等操作,并返回操作结果。
主要功能
- 签到
:自动进行签到,并返回签到结果。 - 获取任务
:从平台获取任务列表,筛选特定的任务(如答题、观看视频等),并执行。 - 答题任务
:自动获取题目并提交答案,模拟答题过程。 - 领取奖励
:完成任务后自动领取积分奖励。 - 查询信息
:查询用户的积分和签到状态。
1. KsGet 方法:
这是一个通用的 HTTP 请求函数,封装了 axios请求,用于向考试宝 API 发送请求。- 参数
url:请求的 URL。 method:请求的方法( get或post)。data:如果是 POST 请求,则传递的数据。 - 功能
设置请求头,其中包含 client-identifier和authorization等认证信息。生成请求签名: md5("12b6bb84e093532fb72b4d65fec3f00b" + clientid + url + timestamp + secretKey),确保请求的安全性。发送请求并返回响应数据。
2. task 方法:
这是脚本的主逻辑,负责执行签到、获取任务、答题、领取奖励等操作。 - 流程
如果任务是答题任务( task_id == 10004),通过KsGet("/questions/fetch", "post")获取题目 ID。随机抽取题目,通过 KsGet("/questions/ids", "post")获取题目答案。提交答案,通过 KsGet("/questions/reportResult", "post")完成答题任务。完成后调用 getprize方法领取奖励。- 签到
:调用 KsGet("/user/PointCenter/sign")执行签到操作,获取签到结果并打印。 - 获取任务
:调用 KsGet("/user/PointCenter/home")获取任务列表,筛选出特定的任务(task_id == 10004或task_id == 10010)。 - 答题任务
: - 激励视频
:如果任务是观看视频( task_id == 10010),则调用KsGet("/user/PointCenter/taskCallback", "post")完成视频任务。 - 领取奖励
:每完成一个任务后,通过 getprize方法领取任务奖励。 - 查询积分和签到状态
:通过 KsGet("/user/pointCenter/getBase")查询用户的积分和签到状态,并返回当前状态。
3. getprize 方法:
用于领取任务奖励。 通过 KsGet("/user/PointCenter/getTaskReward", "post")请求领取奖励,并输出领取结果。
4. sleep 方法:
用于让脚本在执行过程中暂停一段时间,以避免过快的请求导致被平台识别为异常行为。 通过 await sleep(2000),脚本会在执行任务时等待 2 秒。
异常处理:
如果在执行请求时遇到错误,会捕获并打印错误信息,返回错误消息"签到接口请求出错"。
这个脚本通过调用考试宝平台的 API 自动化执行签到、任务完成、答题、领取奖励等操作。它模拟了用户的行为,从获取任务到完成任务,最终获取积分奖励,并查询用户的积分和签到状态。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论