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 请求来模拟用户在触站平台上的各种任务操作,包括签到、分享、点赞、评论等。
- 通过并行请求获取用户的账户信息,最后返回一个格式化的字符串,包含任务结果和用户账户信息。 
- 可以在此基础上进一步优化错误处理、并发控制和请求频率控制,以提高脚本的稳定性和效率。 
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
 
没有评论:
发表评论