2025年3月4日星期二

联想任务脚本

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 CryptoJS= require('crypto-js');const baseinfo =config.lenovo.baseinfo?config.lenovo.baseinfo:"eyJpbWVpIjoiODY1MzE1MDMxOTg1ODc4IiwicGhvbmVicmFuZCI6Imhvbm9yIiwicGhvbmVNb2RlbCI6IkZSRC1BTDEwIiwiYXBwVmVyc2lvbiI6IlY0LjIuNSIsInBob25laW5jcmVtZW50YWwiOiI1NTYoQzAwKSIsIlBhZ2VJbmZvIjoiTXlJbmZvcm1hdGlvbkFjdGlvbkltcGwiLCJwaG9uZWRpc3BsYXkiOiJGUkQtQUwxMCA4LjAuMC41NTYoQzAwKSIsInBob25lTWFudWZhY3R1cmVyIjoiSFVBV0VJIiwibGVub3ZvQ2x1YkNoYW5uZWwiOiJ5aW5neW9uZ2JhbyIsImxvZ2luTmFtZSI6IjE3NjQwNDA4NTM3IiwicGhvbmVwcm9kdWN0IjoiRlJELUFMMTAiLCJzeXN0ZW1WZXJzaW9uIjoiOC4wLjAiLCJhbmRyb2lkc2RrdmVyc2lvbiI6IjI2In0="const $http=require("axios")let result = "【联想延保每日签到】:"const account = config.lenovo.accountconst password =config.lenovo.passwordconst parsedWordArray = CryptoJS.enc.Base64.parse(baseinfo);const info=JSON.parse(parsedWordArray.toString(CryptoJS.enc.Utf8))let deviceid = info.imeiconst url = {    "login": `https://uss.lenovomm.com/authen/1.2/tgt/user/get?msisdn=${account}`,    "session""https://api.club.lenovo.cn/users/getSessionID",    "sign1""https://api.club.lenovo.cn/common/signin/add",    "sign2""https://api.club.lenovo.cn/signin/v2/add"}let lpsutgt = ""headers = {    baseinfo: baseinfo,    unique: deviceid,    "User-Agent""LenovoClub/4.1.2 (iPad; iOS 13.6; Scale/2.00)",    token: "",    //"User-Agent":"Apache-HttpClient/UNAVAILABLE (java 1.5)",    Authorization: "",    "itemid":"1",    "sversion""0",    "X-Lenovo-APPID""1",    "versionCode":"1000082"}
function lxlogin() {    return new Promise(async (resolve) => {        try {            let data = `lang=zh-CN-%23Hans&source=android%3Acom.lenovo.club.app-V4.2.5&deviceidtype=mac&deviceid=${deviceid}&devicecategory=unknown&devicevendor=${info.phoneManufacturer}&devicefamily=unknown&devicemodel=${info.phoneModel}&osversion=${info.systemVersion}&osname=Android&password=${password}`            let res = await $http.post(url["login"], data);            let lpsutgt = res.data.match(/<Value>(.+?)<\/Value>/)            if (lpsutgt) {                let res2 = await $http.get(`https://uss.lenovomm.com/authen/1.2/st/get?lpsutgt=${lpsutgt[1]}&source=ios%3Alenovo%3Aclub%3A4.1.0&lang=zh-CN&realm=club.lenovo.com.cn`)                let lpsutgt2 = res2.data.match(/<Value>(.+?)<\/Value>/)                lpsutgt = lpsutgt2 ? lpsutgt2[1] : null            }            //预约游戏id            result += "登陆成功!|| "            console.log("login:" + lpsutgt)            resolve(lpsutgt);        } catch (err) {            console.log(err.response);            lpsutgt = null            result += "登陆失败! ||  "        }        resolve();    });}
function getsession(lpsutgt) {    return new Promise(async (resolve) => {        //  let json =""        try {            headers.Authorization = "Lenovosso " + lpsutgt            headers["token"] = lpsutgt            let s = aesEncrypto(`{"sessionid":"Lenovosso ${lpsutgt}","time":"${new Date().getTime()}"}`)            url["session"] = url["session"] + `?s=${s}`            let res3 = await $http.get(url["session"], {                headers            })            let json = {                lenovoid: res3.data.res.lenovoid,                sessionid: res3.data.res.sessionid,                token: res3.data.res.token            }            resolve(json)        } catch (err) {            console.log(err)            console.log(decodeURI(err.response.data.res.error_CN))            result += "获取token失败" + decodeURI(err.response.data.res.error_CN) + "\n"        }        resolve();    });}
function addsign(session) {    return new Promise(async (resolve) => {        try {            headers.Authorization = "Lenovo " + session.sessionid            headers["token"] = session.token            headers["User-Agent"] = "Apache-HttpClient/UNAVAILABLE (java 1.5)"            headers["Content-Type"] = "text/json"            data = aesEncrypto(`{"uid":"${session.lenovoid}","imei":"${deviceid}","source":"0","sessionid":"Lenovo ${session.sessionid}","time":"${new Date().getTime()}"}`)            let res = await $http.post(url["sign2"], data, {                headers            })            console.log(res.data)
            if (typeof(res.data) === "object" & res.data.status == 0) {                //  msg+=res.data.res.add_yb_tip                if (!res.data.res.success) {                    result += "今天已经签到过啦!  "                    console.log("今天已经签到过啦")                } else {                    result += "签到成功||" + res.data.res.rewardTips.replace(/\\n/g," || ") + " || 连续签到" + res.data.res.continueCount + "天"                    console.log("签到成功    " + res.data.res.rewardTips + "连续签到" + res.data.res.continueCount + "天")
                }
            }            //  console.log(res.data)            // console.log(typeof(res.data)=="object"&&res.data.status==0)        } catch (err) {            //    console.log(err)            //    console.log(decodeURI(err.response.data.res.error_CN))            result += "签到失败" + decodeURI(err.response.data.res.error_CN)        }        resolve();    });}
function aesEncrypto(text) {    key = CryptoJS.enc.Utf8.parse('nihao_liu#zh*9@7');    iv = CryptoJS.enc.Utf8.parse('A*8@Stii_jin)*%6');    var encrypto =  CryptoJS.AES.encrypt(text, key, {        iv: iv,        mode: CryptoJS.mode.CBC,        padding: CryptoJS.pad.Pkcs7    })    return encrypto.ciphertext.toString()}
async function lxyb() {    console.log("任务开始")    lpsutgt = await lxlogin()
    let session = await getsession(lpsutgt)    if (session) {        console.log(session)        await addsign(session)    }    return result}
module.exports=lxyb

解析

这个脚本是用于自动化 联想延保 每日签到的,主要流程包括登录、获取会话信息、然后进行签到并返回签到的结果。

主要功能

  • 登录
    :通过账户和设备信息登录联想平台。
  • 获取会话信息
    :成功登录后获取会话信息(如 sessionId、token 等)。
  • 每日签到
    :使用获取到的会话信息进行签到操作,并返回签到的结果。

主要方法解析:

1. lxlogin 方法

  • 功能
    :用于登录联想平台。
  • 流程
    1. 通过发送包含设备信息和账户密码的 POST 请求到登录接口 url["login"]
    2. 从响应中提取 lpsutgt,这是用于后续请求的临时会话标识符。
    3. 如果登录成功,则返回 lpsutgt;如果失败,记录失败信息。

2. getsession 方法

  • 功能
    :获取会话信息(如 lenovoidsessionidtoken)。
  • 流程
    1. 使用登录返回的 lpsutgt 获取会话信息。
    2. 加密请求参数(sessionid 和 token)使用 aesEncrypto 方法进行加密。
    3. 发送请求,获取并解析返回的 JSON 数据,提取 lenovoidsessionid 和 token,用于后续签到。

3. addsign 方法

  • 功能
    :执行签到操作。
  • 流程
    1. 使用获取到的 sessionid 和 token 发送 POST 请求到签到接口 url["sign2"]
    2. 如果签到成功,会返回奖励信息,包含连续签到天数和奖励内容。
    3. 如果今天已经签到过了,返回 "今天已经签到过啦!"。
    4. 如果签到失败,会记录错误信息。

4. aesEncrypto 方法

  • 功能
    :用于加密请求数据。
  • 流程
    :使用 CryptoJS.AES.encrypt 对文本进行 AES 加密,生成密文。

5. lxyb 方法

  • 功能
    :主函数,按顺序执行登录、获取会话、签到等操作。
  • 流程
    1. 调用 lxlogin 方法进行登录。
    2. 获取会话信息。
    3. 如果会话信息有效,调用 addsign 方法进行签到。
    4. 返回签到结果。


这个脚本自动化了联想延保的每日签到过程,适用于需要定期签到的用户,通过调用 API 完成签到任务。通过加密请求数据和处理响应数据,确保了安全性和功能的实现。


注意

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


没有评论:

发表评论

2025,香港依然是亚洲金融中心,地位进一步巩固!附香港保司排名~

3月20日,英国Z/Yen集团与中国(深圳)综合开发研究院联合发布第37期" 全球金融中心指数 "报告, 香港综合排名全球第三位,在亚太区第一 ,其中投资管理、保险业、融资排名全球第一 。 01 全球顶级金融中心排名稳定,香港地位进一步巩固 本期排名前十的...