Add some task.

This commit is contained in:
rainerosion 2023-08-20 22:26:24 +08:00
parent 7ec484dc7f
commit 2baa8acf51
3 changed files with 93 additions and 129 deletions

115
daily.js
View File

@ -1,115 +0,0 @@
const axios = require('axios');
const qs = require('qs');
const headers = {
'Host': 'huodong3.3839.com',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Linux; Android 13; RMX3562 Build/TP1A.220905.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36Androidkb/1.5.6.903(android;RMX3562;13;1080x2316;4G);@4399_sykb_android_activity@',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'https://huodong3.3839.com',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://huodong3.3839.com/n/hykb/grow/daily.php',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie': process.env.HYKB_COOKIE
};
const api = 'https://huodong3.3839.com/n/hykb/grow/ajax.php';
const daily_list_api = 'https://huodong3.3839.com/n/hykb/grow/daily.php';
const share_callback_action = 'DailyShareCallb';
const share_daily_action = 'DailyShare';
/**
* random
* @returns
*/
function generateRandom() {
const randomNum = Math.random();
return randomNum.toFixed(17);
}
/**
* 获取数据
* @param {*} action DailyShareCallb-分享回调
* @param {*} id
*/
function getApiData(action, id) {
let data = qs.stringify({
'ac': action,
'id': id,
'mode': 'weixin',
'r': generateRandom(),
'scookie': process.env.HYKB_SCOOKIE,
'device': process.env.HYKB_DEVICE
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: api,
headers: headers,
data: data
};
let json_data = null;
axios.request(config)
.then((response) => {
// console.log(JSON.stringify(response.data));
let json_data = JSON.stringify(response.data);
if (action === share_callback_action && json_data && response.data['key'] === "501") {
config['data']['ac'] = share_daily_action;
axios.request(config)
.then((res) => {
let daily_json = JSON.stringify(res.data);
if (daily_json && res.data['key'] === "503") {
let csd = res.data['reward_csd_num'];
let today_csd = res.data['day_rw_csd'];
console.log("分享获得成熟度 " + csd + " 今日总共获取成熟度 " + today_csd);
} else {
console.log(JSON.stringify(data));
console.log("执行领取任务失败,原始数据 => " + JSON.stringify(res.data) + " id => " + id);
}
})
.catch((err) => {
console.log(err);
});
} else {
console.log(JSON.stringify(data));
console.log("执行分享任务失败,原始数据 => " + JSON.stringify(response.data) + " id => " + id);
}
})
.catch((error) => {
console.log(error);
});
return null;
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
let config = {
method: 'get',
url: daily_list_api,
headers: headers,
};
let id_list = [];
let response = await axios.request(config);
let html = response.data;
// console.log(html);
//DailyGameLing、DailyAppLing、DailyGameCateLing、DailyDati、DailyFriendLing、DailyJiaoHu
const regexPattern = /DailyShare\((\d+)\)/g;
let matches = [...html.matchAll(regexPattern)]; // 进行全局匹配
if (matches.length > 0) {
let values = matches.map(match => match[1]); // 获取所有匹配的数值部分
console.log('Found values:', values); // 输出所有匹配到的数值
for (const id of values) {
console.log("执行分享任务 id => " + id);
getApiData(share_callback_action, id);
await sleep(15000);
}
} else {
console.log('Values not found.');
}
}
main();

30
fileOperations.js Normal file
View File

@ -0,0 +1,30 @@
const fs = require("fs");
// 保存题目和答案到txt文件但仅当题目不存在时保存
function saveToFile(data) {
try {
const existingData = readFromFile(); // Read existing data
const newData = { ...existingData, ...data }; // Merge existing and new data
fs.writeFileSync("questions.txt", JSON.stringify(newData), "utf-8");
console.log("Data saved to questions.txt");
} catch (error) {
console.error("Error saving data:", error);
}
}
// 从txt文件中读取题目和答案
function readFromFile(question) {
try {
const data = fs.readFileSync("questions.txt", "utf-8");
const savedData = JSON.parse(data);
if (question) {
return savedData[question] || "Question not found";
} else {
return savedData;
}
} catch (error) {
console.error("Error reading file:", error);
return {};
}
}
module.exports = { saveToFile, readFromFile };

77
sign.js
View File

@ -1,8 +1,6 @@
const axios = require('axios'); const axios = require('axios');
const qs = require('qs'); const qs = require('qs');
const {parse} = require("qs"); const {saveToFile, readFromFile} = require("./fileOperations");
const {post} = require("axios");
const API = 'https://huodong3.3839.com/n/hykb/grow/ajax.php'; const API = 'https://huodong3.3839.com/n/hykb/grow/ajax.php';
const DAILY_URL = 'https://huodong3.3839.com/n/hykb/grow/daily.php'; const DAILY_URL = 'https://huodong3.3839.com/n/hykb/grow/daily.php';
@ -13,10 +11,12 @@ const ACTION = {
DAILY_GAME_LING: 'DailyGameLing', DAILY_GAME_LING: 'DailyGameLing',
DAILY_GAME_PLAY: 'DailyGamePlay', DAILY_GAME_PLAY: 'DailyGamePlay',
DAILY_APP_LING: 'DailyAppLing', DAILY_APP_LING: 'DailyAppLing',
DAILY_APP_JUMP: 'DailyAppJump',
DAILY_DATI: 'DailyDati', DAILY_DATI: 'DailyDati',
DAILY_DATI_ANSWER: 'DailyDatiAnswer', DAILY_DATI_ANSWER: 'DailyDatiAnswer',
DAILY_DATI_ID: 4, DAILY_DATI_ID: 4,
DAILY_GAME_CATE_JUMP: 'DailyGameCateJump', DAILY_GAME_CATE_JUMP: 'DailyGameCateJump',
DAILY_GAME_CATE_LING: 'DailyGameCateLing',
DAILY_WATERING: 'Watering', // 浇水 DAILY_WATERING: 'Watering', // 浇水
GOU_MAI: 'GouMai', // 购买种子 GOU_MAI: 'GouMai', // 购买种子
PLANT_SOW: 'PlantSow', // 种植 PLANT_SOW: 'PlantSow', // 种植
@ -175,6 +175,7 @@ async function execTodayTask() {
const shareRegexPattern = /DailyShare\((\d+)\)/g; const shareRegexPattern = /DailyShare\((\d+)\)/g;
const gameRegexPattern = /DailyGameLing\((\d+)\)/g; const gameRegexPattern = /DailyGameLing\((\d+)\)/g;
const appRegexPattern = /DailyAppLing\((\d+)\)/g; const appRegexPattern = /DailyAppLing\((\d+)\)/g;
const cateRegexPattern = /DailyGameCateLing\((\d+)\)/g;
// 每日浇水 // 每日浇水
await doWateringTask(scookie, deviceId); await doWateringTask(scookie, deviceId);
@ -194,6 +195,12 @@ async function execTodayTask() {
let dailyAppIdList = [...html.matchAll(appRegexPattern)] let dailyAppIdList = [...html.matchAll(appRegexPattern)]
.filter(match => !dailyIdList.includes(match[1])) .filter(match => !dailyIdList.includes(match[1]))
.map(match => match[1]); .map(match => match[1]);
await doDailyAppJumpTask(dailyAppIdList, scookie, deviceId);
let cateAppIdList = [...html.matchAll(cateRegexPattern)]
.filter(match => !dailyIdList.includes(match[1]))
.map(match => match[1]);
await doDailyGameCateJumpTask(cateAppIdList, scookie, deviceId);
// 答题任务 // 答题任务
await doDatiTask(scookie, deviceId); await doDatiTask(scookie, deviceId);
@ -283,9 +290,14 @@ async function doDatiTask(scookie, deviceId) {
let dati = await postApiData(API, buildData(ACTION.DAILY_DATI, ACTION.DAILY_DATI_ID, scookie, deviceId, false), headers); let dati = await postApiData(API, buildData(ACTION.DAILY_DATI, ACTION.DAILY_DATI_ID, scookie, deviceId, false), headers);
if (dati.key === '501') { if (dati.key === '501') {
let answerData = buildData(ACTION.DAILY_DATI_ANSWER, ACTION.DAILY_DATI_ID, scookie, deviceId, false); let answerData = buildData(ACTION.DAILY_DATI_ANSWER, ACTION.DAILY_DATI_ID, scookie, deviceId, false);
const optionKeys = Object.keys(dati).filter(key => key.startsWith('option')); // 查询题目答案
const randomOptionKey = optionKeys[Math.floor(Math.random() * optionKeys.length)]; let queryAnswer = readFromFile(dati.title);
answerData += "&option=" + dati[randomOptionKey]; if (queryAnswer) {
const optionKeys = Object.keys(dati).filter(key => key.startsWith('option'));
const randomOptionKey = optionKeys[Math.floor(Math.random() * optionKeys.length)];
queryAnswer = dati[randomOptionKey];
}
answerData += "&option=" + queryAnswer;
let answer = await postApiData(API, answerData, headers); let answer = await postApiData(API, answerData, headers);
if (answer.key === '501') { if (answer.key === '501') {
await sleep(3000); await sleep(3000);
@ -293,6 +305,12 @@ async function doDatiTask(scookie, deviceId) {
if (result.key === '501') { if (result.key === '501') {
console.log(JSON.stringify(result)); console.log(JSON.stringify(result));
console.log("每日答题完成,随机选择的答案" + answerData.option); console.log("每日答题完成,随机选择的答案" + answerData.option);
} else if (result.key === '503') {
//保存题目信息
let backTimu = result.back_timu;
let question = {};
question[backTimu] = result.back_answer;
saveToFile(question);
} else { } else {
console.log(JSON.stringify(result)); console.log(JSON.stringify(result));
console.log("每日答题失败,原因:" + result.info); console.log("每日答题失败,原因:" + result.info);
@ -308,16 +326,47 @@ async function doDatiTask(scookie, deviceId) {
} }
/** async function doDailyAppJumpTask(idList, scookie, deviceId) {
* 收割 for (const id of idList) {
* @param scookie let res = await postApiData(API, buildData(ACTION.DAILY_APP_JUMP, id, scookie, deviceId, false), headers);
* @param deviceId if (res.key === 'ok') {
* @returns {Promise<void>} await sleep(180000);
*/ let reward = await postApiData(API, buildData(ACTION.DAILY_APP_LING, id, scookie, deviceId, false), headers);
async function doHarvestTask(scookie, deviceId) { if (reward.key === '503') {
let csd = reward.reward_csd_num;
let bmh = reward.reward_bmh_num;
console.log("体验任务【在线玩频道】领取成功,成熟度+" + csd + "爆米花+" + bmh);
} else {
console.log(JSON.stringify(reward));
console.log("体验任务【在线玩频道】领奖失败, 失败原因:" + reward.info);
}
} else {
console.log(JSON.stringify(res));
console.log("任务执行失败,任务id:" + id + "失败原因:" + res.info);
}
}
} }
async function doDailyGameCateJumpTask(idList, scookie, deviceId) {
for (const id of idList) {
let res = await postApiData(API, buildData(ACTION.DAILY_GAME_CATE_JUMP, id, scookie, deviceId, false), headers);
if (res.key === 'ok') {
await sleep(180000);
let reward = await postApiData(API, buildData(ACTION.DAILY_GAME_CATE_LING, id, scookie, deviceId, false), headers);
if (reward.key === '503') {
let csd = reward.reward_csd_num;
let bmh = reward.reward_bmh_num;
console.log("体验任务【近期爆友热玩游戏】领取成功,成熟度+" + csd + "爆米花+" + bmh);
} else {
console.log(JSON.stringify(reward));
console.log("体验任务【近期爆友热玩游戏】领奖失败, 失败原因:" + reward.info);
}
} else {
console.log(JSON.stringify(res));
console.log("任务执行失败,任务id:" + id + "失败原因:" + res.info);
}
}
}
/** /**
* 种植 * 种植
* @param scookie * @param scookie