阿里云:
服务器购买地址
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 axios = require("axios");const md5 = require("crypto-js").MD5headers = {}let result = "【橙光游戏】: ";const {uid,token,skey,sflag,folder,gameid,did} = config.rpg66const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));//签到function check() {return new Promise(async (resolve) => {try {const url = "https://www.66rpg.com/Ajax/Home/new_sign_in.json";let data = `token=${token}&mobile_uid=&client=2&android_cur_ver=268`;const headers = {"user-agent": "Mozilla/5.0 (Linux; Android 10; Redmi K30 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/85.0.4183.127 Mobile Safari/537.36","content-type": "application/x-www-form-urlencoded; charset=UTF-8",};let res = await axios.post(url, data, {headers,});if (res.data.status == 1) {msg = `签到成功,获得:${res.data.data.today.award_name}明日继续签到🉑获得:${res.data.data.tomorrow.award_name}!! || `;} else {msg = "签到失败⚠️⚠️⚠️ " + res.data.msg + " || ";}console.log(" 签到结果:" + msg);result += msg;} catch (err) {msg = "签到接口请求出错!! ";console.log(err);}resolve();});}function get(url, method = "get", data = null, xsign) {return new Promise(async (resolve) => {try {if (xsign) headers["x-sign"] = xsignif (method == "get") res = await axios.get(url, {headers});// headers ["content-type"] = "application/json;charset=utf-8"headers["user-agent"] == "axios/0.19.0"if (method == "post") res = await axios.post(url, data, {headers})headers = {}if (res.data && res.data.data && (res.data.data.msg || res.data.msg)) console.log(" " + (res.data.data.msg || res.data.msg))resolve(res.data)} catch (err) {console.log(err);resolve({msg: "签到接口请求出错"})}resolve();});}//获取活跃任务列表async function getaskList() {let url = `https://www.66rpg.com/ActiveSystem/index/get_today_task_lists?jsonCallBack=&uid=&token=${token}&client=2&_=`let res = await get(url)if (res && res.status == 1) taskList = res.dataelse taskList = []return taskList}//登陆奖励function loginreward() {return new Promise(async (resolve) => {try {var url = `http://iapi.66rpg.com/user/v2/sso/launch_remind?pack_name=com.sixrpg.opalyer&sv=QKQ1.190825.002testkeys&android_cur_ver=2.25.268.1027&nt=4g&device_code=RedmiK30&channel=LYyingyongbao&skey=&device_unique_id=${did}&token=${token}`;let res = await get(url, "get", null, getsign(url))if (res.status == 1) {if (!res.data.integral.hidden) {msg =" 登陆成功,获得:" +res.data.integral.msg +"," +res.data.flower.msg;} else {msg = "今日已经领取过登陆奖励了";}} else {msg = "领取登陆奖励失败:" + res.msg;}result += msg;console.log(" 领取结果:" + msg);} catch (err) {console.log(err);}resolve();});}// x-sign生成function getsign(url) {data = url.split("?")[1]var str = data.split("&").sort(function(a, b) {return a.localeCompare(b);}).join("&");return md5(str + "a_744022879dc25b40").toString()}//评论任务function favor() {return new Promise(async (resolve) => {try {//先取消收藏var url0 = `http://iapi.66rpg.com/Favorite/v1/Favorite/editor_game_folders?device_code=MEIZU18Pro&sv=Flyme9.0.1.3A&nt=4g&token=${token}&skey=${skey}&action=editor_game_folders&ts=&android_cur_ver=2.32.288.0119`let data0 = `pack_name=com.sixrpg.opalyer&folder=&sv=Flyme9.0.1.3A&gindex=242004&android_cur_ver=2.32.288.0119&nt=4g&device_code=MEIZU18Pro&channel=XiaoMiReaderDYD&skey=${skey}&device_unique_id=${did}&token=${token}`let res0 = await get(url0 + "&sign=" + getsign(url0), "post", data0, getsign(url0))console.log(" 取消收藏:" + res0.msg);//收藏var url1 = `https://www.66rpg.com/api/client?pack_name=com.sixrpg.opalyer&sv=Flyme9.0.1.3A&android_cur_ver=2.32.288.0119&nt=4g&channel=XiaoMiReaderDYD&platform=2&token=${token}&folder=${folder}%2C&gindex=242004&device_code=&action=fav_game&skey=${skey}&device_unique_id=${did}&fav_type=1`let res = await get(url1, "get", null, getsign(url1))console.log(" 收藏结果:" + res.msg);} catch (err) {console.log(err);}resolve();});}async function uploadtime(id) {timm = 30 * 60let url = "https://c.66rpg.com/collect/v1/index/runtime"time = parseInt(new Date().getTime().toString() / 1000)let datas = `{"run":{"${id}":${timm}}}${uid}${time}MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtsvsk/MIEI9YXvHzLfg+eEJkY3d7RmVynKBZY35T0xg3WwZgmC6GSPZqrMMcht6aiZYPJywhm9JiE6kBo/0Mvxklm5Wd35wIKeDXcq8Aqb4aQXalcwsD3f829OR1P2AqGilr14Rftv4ixyQATG/BqP2/kgft2rcq4e/E7bDWNLQIDAQAB`let check = md5(datas).toString()let str = `data=%7B%22run%22%3A%7B%22${id}%22%3A${timm}%7D%7D&uid=${uid}&ts=${time}&check=${check}&platform=3&channel_id=0&online_plat=${timm}&nonce=b613b114-b3a8-4bb6-a444-7096b2abc5fe×tamp=${time}`let res = await get(url, "post", str)console.log(" 上传结果:" + res.msg)}async function cg() {console.log("橙光app每日签到开始...");//获取任务列表let taskList = await getaskList()//送花// gid = 1510209// ssurl =`https://www.66rpg.com/api/client?pack_name=com.sixrpg.opalyer&flower_place=4&sv=Flyme9.0.1.3A&android_cur_ver=2.32.288.0119&nt=network_unknown&num=1&channel=XiaoMiReaderDYD&token=${token}&gindex=${gid}&group_id=&device_code=MEIZU18Pro&action=send_flower&skey=${skey}&device_unique_id=${did}`// let aa = await get(ssurl, "get", null, getsign(ssurl))// console.log(aa)for (task of taskList) {console.log("去做任务:" + task.task_name)if (task.max_claim <= task.play_count) {} else {switch (task.task_type) {case 0: //每日登陆await loginreward();breakcase 1: //阅读5minawait uploadtime(1593227)await sleep(12 * 1000)await uploadtime(1593227)breakcase 2: //分享作品surl = `http://www.66rpg.com/api/newClient?pack_name=com.sixrpg.opalyer&sv=QKQ1.190825.002testkeys&android_cur_ver=2.27.273.1229&nt=4g&channel=vivoDYD&platform=2&token=${token}&gindex=${gameid}&share_msg_id=&device_code=RedmiK30&action=share_game&skey=${skey}&device_unique_id=${did}&share_channel=3`;await get(surl, "get", null, getsign(surl))breakcase 3: //分享别人看for (c of new Array(5)) {await get(`https://m.66rpg.com/main/ajax/game/add_game_share.json?token=&client=0&stype=1&starget=${gameid}&sflag=${sflag}&platform=2&share_msg_id=&um_chnnl=share&um_from_appkey=60ab3e2453b67264990bf849`)await sleep(1000)}breakcase 4: //发表评论datac = `pack_name=com.avgorange.dating&sv=Flyme9.0.1.3A&auth=eyJhY3Rpb24iOiJjb21tZW50X3Bvc3QiLCJnaW5kZXgiOiIxNTY5ODQ0IiwicGFyZW50X2NpZCI6IiIsImNvbnRlbnQiOiLmiZPljaHmiZPljaHmiZPljaHmiZPljaHmiZPljaEiLCJkZXZpY2VfdHlwZSI6Ik1FSVpVMThQcm8iLCJyIjoiNTZGIn0%253D&android_cur_ver=2.32.292.0530&parent_cid=&nt=wifi&channel=talkingdata202106&device_type=MEIZU18Pro&content=%E6%89%93%E5%8D%A1%E6%89%93%E5%8D%A1%E6%89%93%E5%8D%A1%E6%89%93%E5%8D%A1%E6%89%93%E5%8D%A1&gindex=1569844&device_code=MEIZU18Pro&skey=${skey}&device_unique_id=${did}&call_source=game`surl = `http://www.66rpg.com/api/client?device_code=MEIZU18Pro&sv=Flyme9.0.1.3A&nt=wifi&token=${token}&skey=${skey}&action=comment_post&ts=1656227475&android_cur_ver=2.32.292.0530`aa = await get(surl + "&sign=" + getsign(surl), "post", datac, getsign(surl))breakdefault:break}}await get(`https://www.66rpg.com/ActiveSystem/index/claimReward?task_type=${task.task_type}&uid=${uid}&token=${token}&client=2&_=`)}console.log("去签到")await check();console.log("每日分享")surl = `http://www.66rpg.com/api/newClient?pack_name=com.sixrpg.opalyer&sv=QKQ1.190825.002testkeys&android_cur_ver=2.27.273.1229&nt=4g&channel=vivoDYD&platform=2&token=${token}&gindex=${gameid}&share_msg_id=&device_code=RedmiK30&action=share_game&skey=${skey}&device_unique_id=${did}&share_channel=3`;await get(surl, "get", null, getsign(surl))Info = ""urlyy = `https://www.66rpg.com/propShop/interapi/game/v1/game/get_user_gift_game?pack_name=com.sixrpg.opalyer&sv=Flyme9.0.1.3A&android_cur_ver=2.32.288.0119&nt=4g&device_code=MEIZU18Pro&channel=XiaoMiReaderDYD&skey=${skey}&page=1&sort=1&device_unique_id=${did}&token=${token}`let ri = await get(urlyy, "get", null, getsign(urlyy))count = ri && ri.data ? ri.data.count : "未知"var iurl = `http://iapi.66rpg.com/user/v2/user/user_info?uid=${uid}&pack_name=com.sixrpg.opalyer&sv=Flyme9.0.1.3A&android_cur_ver=2.32.288.0119&nt=network_unknown&device_code=&channel=XiaoMiReaderDYD&action=user_info&skey=${skey}&device_unique_id=${did}&token=${token}`let ires = await get(iurl, "get", null, getsign(iurl))if (ires.status == 1) {info = ires.data[uid]if (info.last_available_time != 0) hl = `\n 花篮:至${info.last_available_time_str.replace("花篮领取有效期 ","")}`else hl = ""Info = ` 昵称:${info.uname}\n 等级:${info.user_level}\n 鲜花:${info.rest_flower}\n 积分:${info.coin3}\n 橙子:${info.user_orange}${hl}\n 拥有:${count}部`}console.log(Info)return "【橙光】:\n " + Info}//cg()module.exports = cg;
解析
这脚本是为橙光游戏app设计的Node.js自动化脚本,用于处理每日签到、登录奖励、每日任务和分享功能。脚本中使用了axios库来发起网络请求,并通过自定义的get函数来简化HTTP请求的处理。此外,使用md5加密生成特定的签名(x-sign),这是API安全认证的一部分。
主要功能
签到(check函数):
向橙光游戏的签到接口发送POST请求。 根据响应判断签到是否成功,并记录结果。 获取活跃任务列表(getaskList函数):
从橙光游戏获取当日的任务列表。 处理API响应并返回任务列表。 登录奖励(loginreward函数):
访问登录奖励的API。 根据API的响应处理和记录领奖情况。 x-sign生成(getsign函数):
使用MD5算法生成所需的 x-sign,该签名用于验证请求的合法性。评论任务(favor函数):
处理特定的收藏与取消收藏任务,通过API请求实现。 上传时间(uploadtime函数):
为指定任务上传虚拟的运行时间。 主控制函数(cg函数):
顺序调用上述功能函数,实现自动化的任务执行。 处理并输出用户信息和任务执行结果。
特点
- Modular Approach
通过将功能拆分成多个函数,使代码更清晰、易于维护。 - Error Handling
使用try-catch语句处理可能的运行时错误,保证程序稳定性。 - Async/Await
利用JavaScript的异步特性,确保网络请求按顺序执行并正确处理响应。 - Task Automation
自动化多种日常任务,如签到、分享和评论,提高用户互动效率。
应用场景
这个脚本非常适合需要每日执行多项任务的橙光游戏用户,尤其是那些希望自动化日常操作以节省时间和精力的用户。通过运行这个脚本,用户可以无需手动干预即可完成签到、领取奖励和完成任务,从而更加专注于游戏本身的享受。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论