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=2019052.部署教程
3.代码如下
const axios = require("axios")const url1 = "https://www.huashi6.com/"const url2 = "https://www.huashi6.com/app"function get(url, method = "get", data = null) {return new Promise(async (resolve) => {try {let headers = { "cookie": config.huashi6.cookie }if (method == "get") res = await axios.get(url, {headers});headers ["content-type"] = "application/json;charset=utf-8"if (method == "post") res = await axios.post(url, data, {headers});resolve(res.data)} catch (err) {console.log(err);resolve({msg:"签到接口请求出错"})}resolve();});}async function task() {let taskres = await get(`${url1}/front/growthTask/user/list`, "post")if (taskres.success) {taskList = ((taskres && taskres.data && taskres.data.daily) ?? []).filter(x => !x.finish)if (taskList) {for (t of taskList) {console.log("去做任务:"+t.name)if (t.id == 4) await get(`${url2}/growthTask/share`, "post") //分享else if (t.id == 23) { //点赞await get(`${url2}/like/like`, "post", {"like": false,"requestId": "","objectId": 638,"objectType": 80})await get(`${url2}/like/like`, "post", {"like": true,"requestId": "","objectId": 638,"objectType": 80})} else if (t.id == 9) {await get(`${url2}/comment/add`,"post", {"resourceId": 955042,"requestId": "","content": "🤤🤤","resourceType": 1})} else if (t.id == 19){await get(`${url2}/user/currentUser`,"post", {"requestId": ""}) }//评论}}console.log("\n\n")//签到let signres = await get(`${url1}/app/user/signin`, "post")signInfo =""if (signres.success) signInfo=`签到:连签${signres.data.continueCount}天\n`//查询let [coinInfo,levelInfo] = await Promise.all([get(`${url2}/user/coinAccount`, "post",{"requestId":""}),get(`${url2}/user/levelInfo`,"post", {"requestId":""})]);let coin = coinInfo&&coinInfo.data&&coinInfo.data.currentCoinCountlet level = levelInfo.data.levelInfo.fullLevelNamemsg = signInfo+ "cc币:"+coin+"\n"+"等级:"+level+"\n"+ `升级进度:${levelInfo.data.currentExp}/${levelInfo.data.nextLevelExp}`} else msg = taskres.msgreturn "【触站】:\n"+msg}module.exports = task
解析
这个脚本用于自动化完成触站平台上的任务,包括签到、分享、点赞、评论等操作,最后返回任务完成情况和账户信息。
1. 请求功能 (get 函数):
get是一个通用的网络请求函数,支持 GET 和 POST 请求:若请求失败,捕获异常并返回一个错误消息
{ msg: "签到接口请求出错" }。包含
cookie来保持用户登录状态,cookie来源于config.huashi6.cookie。如果是 POST 请求,还设置了
content-type为application/json;charset=utf-8。url: 请求的目标 URL。method: 请求方法(默认为get)。data: POST 请求时发送的数据。参数:
请求头:
错误处理:
2. 任务执行 (task 函数):
task函数完成以下任务:同时通过
Promise.all并行查询coinAccount和levelInfo,分别获取用户的当前 CC 币数量和等级信息。coinInfo返回当前的coinCount,levelInfo返回当前等级和升级进度。调用
/app/user/signin执行签到操作,并返回连续签到天数。通过调用
get函数获取用户的成长任务列表(growthTask/user/list)。过滤出未完成的任务 (
!x.finish)。遍历每个未完成的任务,执行不同的任务操作:
任务类型 4(分享):调用
/growthTask/share执行分享任务。任务类型 23(点赞):先调用
/like/like取消点赞,再调用/like/like进行点赞操作。任务类型 9(评论):调用
/comment/add提交评论。任务类型 19(查询用户信息):调用
/user/currentUser获取当前用户信息。获取任务列表:
签到操作:
查询账户信息:
根据返回结果拼接消息,包含签到信息、CC 币数量、等级和升级进度。
3. 返回结果:
如果任务列表和签到操作成功,返回一个格式化的字符串,包含任务的执行情况和账户信息:
【触站】:
签到:连签X天
cc币:Y
等级:Z
升级进度:A/B如果获取任务列表失败或其它操作失败,则返回失败信息。
4. 模块导出:
module.exports = task;使得外部可以调用task函数执行这些任务。
总结:
脚本通过
axios发起 HTTP 请求来模拟用户在触站平台上的各种任务操作,包括签到、分享、点赞、评论等。通过并行请求获取用户的账户信息,最后返回一个格式化的字符串,包含任务结果和用户账户信息。
可以在此基础上进一步优化错误处理、并发控制和请求频率控制,以提高脚本的稳定性和效率。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论