阿里云:
服务器购买地址
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=201905
2.部署教程
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.token
u = config.shanyi.u
const gids= config.shanyi.gids.split("&")
//const gids = [116993]
urlpara = "&v=1.0.0&app_version=2.4.5&client=" + config.shanyi.client
datapara = "&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.name
console.log(game_name)
qzid = ginfo.data.circle_id
await 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].id
await 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请求的处理。通过模拟用户行为和处理服务器响应,该脚本可以自动化完成在闪艺平台上的常见互动任务,极大地减少了重复性工作的需要。同时,通过加密传输敏感信息来增加操作的安全性。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论