阿里云:
服务器购买地址
https://t.aliyun.com/U/2s8buw若失效,可用地址
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 mixin = {baseUrl: "https://app.3000.com",standardFlag: true,timeout: 15000,withCredentials: false};let sleep = ms => new Promise(resolve => setTimeout(resolve, ms));const axios = require("axios")token = config.shanyi.tokenu = config.shanyi.uconst gids= config.shanyi.gids.split("&")//const gids = [116993]urlpara = "&v=1.0.0&app_version=2.4.5&client=" + config.shanyi.clientdatapara = "&u=" + encodeURIComponent(u) + "&token=" + encodeURIComponent(token)function post(options) {//let params = Object.assign({}, para, options.para);return new Promise((resolve, reject) => {axios.post(mixin.baseUrl + options.url + urlpara, options.data + datapara, {headers: {"User-Agent": config.shanyi.UA}}).then(response => {// if(options.url.match(/topic/))console.log(response)resolve(response.data);}).catch(err => {console.log(err)resolve({tip: err});});});}let mds = ""let yxList = []var task = async function(name, url, data) {return await post({url: url,data: data}).then(res => {console.log(`${name}:${res.msg}`)return res;});};function jm(data) {let algorithm = 'aes-128-cbc'let passwd = 'WDF#$H*#SJN*&G$&'let iv = 'JH&$GF$DR%*K@SC%'let cryptojs = require('crypto-js');str = cryptojs.AES.encrypt("" + data, cryptojs.enc.Utf8.parse(passwd), {iv: cryptojs.enc.Utf8.parse(iv),mode: cryptojs.mode.CBC,// padding: cryptojs.pad.Pkcs7})return encodeURIComponent(str.toString())}function randC() {let key = ["日常", "爱了", "咪", "好","☝"]let i = Math.floor((Math.random() * key.length))return key[i]}async function shanyi() {let res = await task("获取任务列表", "/?m=user&op=daily_task&ac=index", "")if (JSON.stringify(res).match(/你还未登录|另一台设备|已过期/)) {return "token和u已失效或填写错误";} else {for (gid of gids) {let ginfo = await task("作品详情", "/?m=game_info&op=index&ac=game_detail", "gid=" + jm(gid))if (ginfo.status == 0 && ginfo.data) {game_name = ginfo.data.game_info.nameconsole.log(game_name)qzid = ginfo.data.circle_idawait task("阅读", "/?m=user&op=index&ac=add_user_play_time", "minute=" + jm(120) + "&gid=" + jm(gid))for (i = 0; i < 5; i++) {await task(`第${i+1}次分享`, "/?m=share&op=index&ac=game_share", "game_id=" + jm(gid) + "&op_from=5nXP9qADvw3bmKOnRJA5Xw%3D%3D")await sleep(13000)}await task("评论作品", "/?m=comment&op=index&ac=do_comment", "game_id=" + jm(gid) + "&type=2jyfrX4gfTvnrWc%2BorX%2Bog%3D%3D&content=" + jm(randC()))let cres = await task("获取评论列表", "?m=comment&op=index&ac=list", "list_type=W%2FWdZKs5lJhcLOK5XBhwXA%3D%3D&game_id=" + jm(gid) + "&page=2jyfrX4gfTvnrWc%2BorX%2Bog%3D%3D")if (cres.status == 0 && cres.data.comment_list) {comment_list = cres.data.comment_list.list || []for (c = 0; c < 6; c++) {if (comment_list[c]) {cid = jm(comment_list[c].id)await task("作品评论点赞", "/?m=comment&op=index&ac=love_comment", "comment_id=" + cid)await task("作品评论回复", "/?m=reply&op=index&ac=do_reply", "comment_id=" + cid + "&content=" + jm("dd"))await sleep(2000)}}}if (qzid) {let qres = await task("获取圈子评论列表", "/?m=qz&op=circle&ac=topic_list", `page=2jyfrX4gfTvnrWc%2BorX%2Bog%3D%3D&type=2jyfrX4gfTvnrWc%2BorX%2Bog%3D%3D&limit=W%2FWdZKs5lJhcLOK5XBhwXA%3D%3D&circle_id=${jm(qzid)}`)if (qres.status == 0 && qres.data && qres.data.list) {let qzlist = qres.data.list || []for (q = 0; q < 7; q++) {if (qzlist[q]) {console.log(qzlist[q].topic_name)qid = qzlist[q].idawait task(" 点赞", "/?m=qz&op=topic&ac=praise", "topic_id=" + jm(qid))await task(" 回复", "?m=qz&op=topic&ac=add_topic_comment", "topic_id=" + jm(qid) + "&content=" + jm("dd"))await sleep(2000)}}}} else console.log("该作品还没有开通圈子哦")}}}}module.exports = shanyi
解析
这脚本是一个用于自动化操作的JavaScript程序,设计用于在某艺平台上自动执行一系列与内容互动相关的任务,如阅读、分享、评论、点赞等。该脚本使用Node.js环境运行,依赖于axios库来进行HTTP请求,并使用AES加密来处理敏感参数。
脚本的主要功能和组成部分:
配置和全局变量
mixin: 包含基础的API URL和其他HTTP请求配置。 token,u,gids: 用户身份验证用的令牌、用户ID和要操作的作品ID列表,这些ID通过配置读取并通过AES加密传输。
加密函数
jm: 对给定数据进行AES加密,用于安全地传输敏感信息如用户ID、作品ID等。
异步任务执行函数
task: 执行具体的操作任务,如获取任务列表、提交评论等,返回操作结果。
主要逻辑处理
shanyi: 主函数,控制整个脚本的执行流程。它首先验证用户的登录状态,然后遍历 gids列表中的每一个作品ID来执行一系列任务:- 获取作品详情
:包括作品名和相关圈子ID。 - 阅读作品
:模拟用户阅读行为。 - 分享作品
:多次分享作品。 - 评论作品
:提交评论。 - 点赞和回复评论
:在获取到的评论列表中对评论进行点赞和回复。 - 操作圈子评论
:在相关圈子内进行评论的点赞和回复。
辅助函数和流程控制
sleep: 延时函数,用于在连续操作间添加等待时间以模拟人类用户行为。 randC: 生成随机评论内容,用于评论作品和回复。
这个脚本充分利用了现代JavaScript异步编程的特点,通过async/await语法来简化异步HTTP请求的处理。通过模拟用户行为和处理服务器响应,该脚本可以自动化完成在闪艺平台上的常见互动任务,极大地减少了重复性工作的需要。同时,通过加密传输敏感信息来增加操作的安全性。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论