阿里云:
服务器购买地址
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")let token = config.kurobbs.tokenlet userId = JSON.parse(base64Decode(token.split(".")[1])).userIdlet devCode = config.kurobbs.devCodefunction sleep(n) {let start = new Date().getTime()while (true) {if (new Date().getTime() - start > n) {break}}}function base64Decode(data) {return Buffer.from(data, 'base64').toString('utf-8')}async function post(option) {return await axios({url: `https://api.kurobbs.com/${option.url}`,method: "post",params: option.data,headers: {osVersion: "Android",devCode: devCode,countryCode: "CN",ip: "",model: "Mi 13",source: "android",lang: "zh-Hans",version: "1.0.5",versionCode: 1050,token: token,"User-Agent": "okhttp/3.10.0"}}).then(res => {return res.data})}//帖子列表async function bbsList() {return await post({url: "forum/list",data: {forumId: 10,gameId: 3,pageIndex: 1,pageSize: 20,searchType: 1,timeType: 0}})}//社区签到async function bbsSign() {return await post({url: "user/signIn",data: {gameId: 3}})}//分享async function share() {return await post({url: "encourage/level/shareTask",data: {gameId: 3}})}//点赞 type 1是点赞,2是取消点赞async function like(type, bbs) {return await post({url: "forum/like",data: {forumId: bbs.gameForumId,gameId: 3,likeType: 1,operateType: type,postCommentId: 0,postCommentReplyId: 0,postId: bbs.postId,postType: bbs.postType,toUserId: bbs.userId}})}//浏览帖子async function getBbs(bbs) {return post({url: "forum/getPostDetail",data: {isOnlyPublisher: 0,postId: bbs.postId,showOrderType: 2}})}//任务列表async function task() {return post({url: "encourage/level/getTaskProcess",data: {gameId: 0,userId: userId}})}async function main() {let result = "【库街区】:"await bbsSign()let bbslist = await bbsList()for (let i = 1; i <= 5; i++) {let random = Math.floor(Math.random() * 20)let bbs = bbslist.data.postList[random]await like(1, bbs)await like(2, bbs)}await share()for (let j = 3; j <= 3; j++) {let random = Math.floor(Math.random() * 20)let bbs = bbslist.data.postList[random]await getBbs(bbs)sleep(3000)}let taskList = await task()for (let i of taskList.data.dailyTask) {let taskName = i.remarklet status = i.completeTimes === i.needActionTimes ? "已完成" : "未完成"result += `${taskName}:${status} `}console.log(result)return result}module.exports = main
解析
这个脚本是一个针对库街区社区的自动化任务脚本,主要功能包括签到、点赞、分享、浏览帖子等,完成任务后返回任务完成状态。它通过调用该社区的 API 实现自动化操作
https://www.kurobbs.com/main.html主要功能
- 社区签到
:自动执行签到操作。 - 点赞帖子
:随机选择帖子进行点赞,支持取消点赞操作。 - 浏览帖子
:随机浏览帖子。 - 分享任务
:自动完成分享任务。 - 获取任务进度
:获取用户的任务列表,并查看每个任务的完成状态。
1. sleep 方法:
这是一个自定义的睡眠函数,用于让程序在执行过程中暂停一定时间,防止过快的请求触发反作弊机制。 它通过不断检查当前时间与开始时间的差异来实现阻塞等待。
2. base64Decode 方法:
该方法用来解码 base64 编码的数据。主要用于解析 token中的userId信息。
3. post 方法:
这是一个通用的 HTTP 请求函数,封装了 axios请求,用于发送 POST 请求到"库街区"的 API。- 参数
url:API 的接口地址。 data:请求的参数。 - 功能
设置请求头,包含了认证信息(如 token)和其他请求参数。发送 POST 请求并返回响应数据。
4. bbsList 方法:
获取帖子列表,通过调用 post方法请求 API 接口forum/list,获取指定论坛的帖子列表。该接口请求了一个固定的 forumId(10)和gameId(3),分页获取帖子列表。
5. bbsSign 方法:
执行签到操作,调用 user/signIn接口进行签到。请求的 gameId为 3,表示签到的是"库街区"社区。
6. share 方法:
执行分享任务,通过调用 encourage/level/shareTask接口完成分享任务。
7. like 方法:
实现点赞操作, type为 1 表示点赞,2 表示取消点赞。调用 forum/like接口,向指定帖子发送点赞或取消点赞的请求。
8. getBbs 方法:
浏览帖子,通过调用 forum/getPostDetail接口查看帖子详情。
9. task 方法:
获取用户的任务列表,通过调用 encourage/level/getTaskProcess接口,获取当前用户的任务进度。返回的任务列表包含了每日任务的完成状态。
10. main 方法:
这是脚本的核心逻辑,执行一系列操作来模拟用户行为。 - 流程
- 签到
:调用 bbsSign方法进行签到。 - 点赞
:从帖子列表中随机选择 5 个帖子,执行点赞和取消点赞操作。 - 分享
:调用 share方法完成分享任务。 - 浏览帖子
:从帖子列表中随机选择一个帖子,调用 getBbs浏览帖子。 - 任务进度
:通过 task方法获取任务进度,返回任务的完成状态(已完成/未完成)。 最后,将任务结果拼接成字符串并返回。
异常处理:
- 请求错误
:如果 API 请求失败,会捕获错误并输出相关信息。
主要 API 请求:
- 签到接口
: user/signIn - 获取帖子列表
: forum/list - 点赞接口
: forum/like - 浏览帖子接口
: forum/getPostDetail - 任务进度接口
: encourage/level/getTaskProcess - 分享任务接口
: encourage/level/shareTask
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论