2025年2月28日星期五

考试宝任务脚本

1.购买服务器

阿里云:

服务器购买地址

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=201905

2.部署教程

2024年最新青龙面板跑脚本教程(一)持续更新中

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 = timestamp            let 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.msg    let 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"                })                //获取题目id                if (ids && ids.code == 200) idss = ids.data.rows                console.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. 签到
    :自动进行签到,并返回签到结果。
  2. 获取任务
    :从平台获取任务列表,筛选特定的任务(如答题、观看视频等),并执行。
  3. 答题任务
    :自动获取题目并提交答案,模拟答题过程。
  4. 领取奖励
    :完成任务后自动领取积分奖励。
  5. 查询信息
    :查询用户的积分和签到状态。

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 自动化执行签到、任务完成、答题、领取奖励等操作。它模拟了用户的行为,从获取任务到完成任务,最终获取积分奖励,并查询用户的积分和签到状态。




注意

本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。


没有评论:

发表评论

来了!保诚集团公布了2024年年报,快来看看~

3月20日,作为伦敦、纽约、新加坡和香港四地上市的保诚集团公布了2024年财务报告。 整个财报内容很多,我们今天只看作为港险投资者最关注的三个方面,安全性、经营能力、投资能力。 考察下我们的财富管家过去一年干得怎么样? 大家好,我是Steven川哥,CFA持证人、12年投行经...