Files
qinglong/脚本库/web版/抓包/104-抖音极速版/2023-09-20_dyjsbxg_7be80b49.js
2026-05-24 05:33:05 +00:00

980 lines
44 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// # Source: https://github.com/xfmeng970526/ql/blob/main/dyjsbxg.js
// # Raw: https://raw.githubusercontent.com/xfmeng970526/ql/main/dyjsbxg.js
// # Repo: xfmeng970526/ql
// # Path: dyjsbxg.js
// # UploadedAt: 2023-09-20T12:13:28+08:00
// # SHA256: 7be80b498ea2c88b44462164bebb3eadc4a69c9191d943228f5fdae00b6c5c2f
// # Category: web版/抓包
// # Evidence: web/H5关键词 + cookie/token/header
//
/**
* 抖音极速版按理来说只需要传sessionid就行
* cron: * 30 0-23 * * *
* new Env('104-抖音极速版');
* 项目名称:抖音极速版
* 变量名 dyjsbck
* 格式export dyjsbck="sessionid=xxxx&device_id=xxxxx&iid=xxxx"
* sessionid必填device_id和iid实在抓不到不填应该问题不大
* 多账户用 @ 隔开
* 更新日志:
* 修复开宝箱金币溜走问题
* by 偷CK的六舅哥
*/
const $ = new Env('抖音极速版-测试');
let tokens = $.getdata('dyjsbck') || process.env['dyjsbck'] || '';
let is_bf = $.getdata('dyjsb_bf') || process.env['dyjsb_bf'] ||
'1'; //是否并发 0否 1是
!(async () => {
$.log("当前版本 v1.0.0")
$.log("更新日志1.修复开宝箱金币溜走问题\n------------------");
$.log("有问题请联系https://t.me/jiangyutck \n------------------");
is_bf = parseInt(is_bf);
if (tokens.indexOf("@") != -1) {
tokens = tokens.split('@') || [];
} else {
tokens = tokens.split('\n') || [];
}
if (!tokens[0]) {
$.log(`请设置环境变量添加抖音极速版账号`)
return;
}
$.log(`共获取到${tokens.length}个账号`);
let userList = [];
tokens.forEach(token => {
let user = jxUser(token);
if (user.sessionid) {
userList.push(new UserInfo(user.sessionid, user
.device_id, user.iid));
} else {
console.log("账号格式错误");
}
})
for (let i = 0; i < userList.length; i++) {
let userInfo = userList[i];
if (is_bf) {
userInfo.main(i);
} else {
await userInfo.main(i);
}
}
})()
.catch((e) => $.logErr(e))
.finally(() => {
if (is_bf) {
$.done();
}
});
function jxUser(val) {
let res = {};
let arrs = val.split("&");
arrs.forEach(arr => {
let kvs = arr.split("=");
res[kvs[0]] = kvs[1];
})
return res;
}
function UserInfo(seesion = '', device_id = '', iid = '') {
let isbreak = false;
let cookie = 'sessionid=' + seesion;
let $user_agent = 'com.ss.android.ugc.aweme.lite/250101 (Linux; U; Android 13; zh_CN; V2185A; Build/TP1A.220624.014;tt-ok/3.12.13.1)';
let version_name = '25.01.01';
let aid = 2329;
let app_name = 'douyin_lite';
let index = 0;
let isOpenBox = false;
let treasurebox = false;
let task_list = [];
function randomString(e, t = "abcdefhijkmnprstwxyz123456789") {
e = e || 32;
let a = t.length,
n = "";
for (let i = 0; i < e; i++)
n += t.charAt(Math.floor(Math.random() * a));
return n
}
this.main = async function (i) {
let startTime = new Date().getTime();
index = i + 1;
if (!device_id) {
device_id = randomString(16, "0123456789")
}
if (!iid) {
iid = randomString(16)
}
await get_info();
if (!isbreak) {
await sign();
await task('excitation_ad_signin','签到广告视频');
if (task_list.filter(item => item.name === '走路赚金币').length > 0) {
await upload_step();
}
await task('read','观看同城视频');
await one_more_detail();
await excitation_ad();
if (task_list.filter(item => item.name === '逛街赚钱').length > 0) {
await shopping_gold();
}
await excitation_ad_treasure_box();
await ad_append('excitation_ad', '看广告追加');
await ad_append('walk_excitation_ad', '步行额外视频');
if (task_list.filter(item => item.name === '搜索赚金币').length > 0) {
await search_excitation();
}
if (task_list.filter(item => item.name === '填写好友邀请码').length > 0) {
//await task('post_invite_code', '填写邀请码', {invite_code: ""});
}
if (task_list.filter(item => item.name === '吃饭补贴').length > 0) {
await meal_check_in();
}
if (task_list.filter(item => item.name === '看小说赚金币').length > 0) {
await task('read_novel', '看小说赚金币');
}
await get_info(false);
}
const e = (new Date).getTime(), s = (e - startTime) / 1e3;
$.log(`账号[${index}] 运行完毕, 结束! 🕛 ${s}`);
}
function get_info(open = true) {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/page?mode=done&update_version_code=250100&os_api=33&device_platform=android&iid=${iid}&device_id=${device_id}&aid=${aid}`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'user-agent': $user_agent,
'Cookie': cookie
}
}
$.get(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.data.is_login) {
if (open) {
if (data.data.treasure_stats) {
task_list = data.data.task_list;
let treasure_stats = data.data.treasure_stats;
if (treasure_stats.next_time <= treasure_stats.cur_time) {
$.log(`==================开宝箱====================\n💣账号[${index}]准备开宝箱,这里可能会卡一会哦~`);
//可以开宝箱
let openCount = 0;
while (!isOpenBox) {
openCount++;
await open_box();
// if(openCount>100){
// isOpenBox=true;
// }
// await $.wait(1000);
}
} else {
$.log(`==================开宝箱====================\n🧧账号[${index}]下次开宝箱时间:${$.time('yyyy-MM-dd HH:mm:ss', treasure_stats.next_time * 1000)}\n==================开宝箱结束====================`);
}
}
} else {
$.log(`======================================\n🧧小主,账号[${index}]资产情况如下:\n金币余额:${data.data.income_data?.amount1} 现金余额:${data.data.income_data?.amount2 / 100}\n======================================`);
}
isbreak = false;
} else {
$.log(`账号[${index}]登录失败!`);
isbreak = true;
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function sign() {
return new Promise(resolve => {
let t = new Date().getTime(), ts = parseInt((t / 1000) + '');
let url = `https://api26-normal-lq.amemv.com/luckycat/aweme/v1/task/done/sign_in?iid=${iid}&device_id=${device_id}&ac=5g&channel=31575073k&aid=${aid}&app_name=${app_name}&version_code=250100&version_name=${version_name}&device_platform=android&os=android&ssmix=a&device_type=SHARK+KSR-A10&device_brand=blackshark&language=zh&os_api=33&os_version=12&manifest_version_code=250101&resolution=1080*2190&dpi=440&update_version_code=25109900&_rticket=${t}&package=com.ss.android.ugc.aweme.lite&mcc_mnc=46001&gold_container=1&cpu_support64=true&host_abi=armeabi-v7a&is_guest_mode=0&app_type=normal&minor_status=0&appTheme=dark&need_personal_recommend=1&is_android_pad=0&ts=${ts}&status_bar_height=29`;
const options = {
url: url,
headers: {
'Host': 'api26-normal-lq.amemv.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie
},
body: '{}'
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
$.log(`账号[${index}]签到: ${data.err_tips}`);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function excitation_ad_signin() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/excitation_ad_signin?mode=done&update_version_code=25109900&oaid=5992671818827601&os_api=29&device_platform=android&ac=wifi&channel=bf_1007913_2329_47_3&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie
},
body: '{}'
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
$.log(`账号[${index}]签到视频: ${data.err_tips}`);
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function open_box() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/treasure_task?_request_from=web&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie
},
body: '{}'
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
isOpenBox = true;
$.log(`账号[${index}]${data.data.success_desc}: ${data.data.amount}金币`);
$.log(`账号[${index}]下次开宝箱时间为:${$.time('yyyy-MM-dd HH:mm:ss', data.data.next_time * 1000)}\n================开宝箱结束====================`);
let excitation_ad_info = data.data.excitation_ad_info;
if (excitation_ad_info) {
excitation_ad_info.amount = data.data.amount;
excitation_ad_info.ad_alias_position = 'box';
$.log(`账号[${index}]开宝箱-看广告视频预计再赚${excitation_ad_info.score_amount}金币`);
await show_ad(excitation_ad_info);
$.log(`账号[${index}]等待45s广告`);
await $.wait(15000);
$.log(`账号[${index}]45s广告success`);
$.log(`==================开宝箱1200金币=================\n💣账号[${index}]准备看宝箱视频,这里可能会卡一会哦~`);
let openbox = 0;
while (!treasurebox) {
openbox++;
await excitation_ad_treasure_box()
if(openbox>250){
isOpenBox=true;
}
await $.wait(1000);
}
}
} else {
//$.log(`账号[${index}]开宝箱: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function ad_append(task_key = 'excitation_ad', name = '', one_more_round = 0) {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/excitation_ad/one_more?_request_from=web&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: '{"task_key":"' + task_key + '","rit":"28038","creator_id":"12315000","one_more_round":' + one_more_round + '}'
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]${name ? name : task_key}: 获得${data.data.amount}金币`);
} else {
$.log(`账号[${index}]${name ? name : task_key}: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function show_ad(ad_info) {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/${ad_info.task_key}?_request_from=web&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie
},
body: `{"task_key":"${ad_info.task_key}","amount":"${ad_info.score_amount}","ad_rit":"${ad_info.ad_id}","ad_inspire":"{"score_amount":"${ad_info.score_amount}","amount":"${ad_info.amount}","req_id":"${ad_info.req_id}"}","ad_alias_position":"${ad_info.ad_alias_position}","timeout":4000}`
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]${data.data.content}: ${data.data.amount}金币`);
} else {
$.log(`账号[${index}]看广告视频: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function upload_step() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/walk/step_submit?iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: `{"step":${parseInt((10000 + Math.random() * 10000) + "")},"submit_time":${parseInt((new Date().getTime() / 1000) + "")}}`
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]上传步数:今日步数${data.data.today_step}`);
await receive_step_reward();
} else {
$.log(`账号[${index}]上传步数: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function receive_step_reward() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/walk/receive_step_reward?iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: ``
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]领取步数奖励:${data.data.reward_amount}金币`);
} else {
$.log(`账号[${index}]领取步数奖励: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function excitation_ad() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/excitation_ad?mode=done&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: `{"from":"excitation_ad"}`
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]看广告: 获得${data.data.amount}金币`);
} else {
$.log(`账号[${index}]看广告: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function shopping_gold() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/shopping_gold?mode=done&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=2509900&device_platform=android&ssmix=a&device_type=16s%20Pro&device_brand=meizu&language=zh&os_api=29&os_version=10&openudid=24f98283275a56fc&manifest_version_code=250101&resolution=1080*2232&dpi=480&_rticket=1683899803704&mcc_mnc=46011&tool_grey_user=0&cpu_support64=true&host_abi=armeabi-v7`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: `body=11222`
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]逛街: ${data.data.reward_text}`);
} else {
$.log(`账号[${index}]逛街: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function excitation_ad_treasure_box() {
return new Promise(resolve => {
let t = new Date().getTime(),
ts = parseInt((t / 1000) + '');
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/excitation_ad_treasure_box?mode=done&iid=${iid}&device_id=${device_id}&ac=5g&channel=31575073k&aid=2329&app_name=douyin_lite&version_code=250100&version_name=25.1.0&device_platform=android&os=android&ssmix=a&device_type=RNA-AN00&device_brand=HONOR&language=zh&os_api=31&os_version=12&openudid=acb2c7481f3d2737&manifest_version_code=250101&resolution=1236*2562&dpi=520&update_version_code=25109900&_rticket=1683983540390&package=com.ss.android.ugc.aweme.lite&mcc_mnc=46001&gold_container=0&cpu_support64=true&host_abi=arm64-v8a&is_guest_mode=0&app_type=normal&minor_status=0&appTheme=light&need_personal_recommend=1&is_android_pad=0&ts=${ts}&cdid=bb4348ff-60c6-4b34-9628-c402fe361bb5&oaid=0c6cd837-6830-4145-8447-9f6cb10aa5fd&rom=EMUI&has_alipay=1&p_switch=1&launch_method=enter_launch&rom_version=MagicOS_7.0.0&luckydog_base=Zm_1GzCIIb6IlT10frcgpm8hjRXTDXRajr68axrvNYdWMeXGAwpi7e36pHTOLD3IdMDam-LbJRy6yf1ZRhL4S4RUI6YsZ5lXIT8ejEUNWGeNnWz8iAZ0A-ViioikSAYM8wU1QcxHFAppiurXM14a1kNHWVtI51PHIme6tzI-vnzGeYulkAdY33cMM8ARxvIj&luckydog_data=FKlxq4aSv2hw07vieQgQ2FHCovzbGKLHnIkn6OuUEZ2ohD29G2CyRKSveldgOt6869_W-eomGhKBksgB4wIKtBPXibAViAW41B71N359xVfVRPE4ypf4af341-U-DWoxkn0DzdtLD_-RZK0ut45UU7h5WlCVprjpYRPA581YgGaOlmdbKURUNCmyFjqaGuUv0waRO0ujC9ZcsSALldeZKo5u0zz6b2Ud1zTbZ9RC4xaEpLJVXC1StX6wkujPsoUxTnMD8htSd-_55U8fV6zVG0706oiXlp4JblplVPm1z5g&luckydog_token=UYSEyUkWlD-DG9bw9rO1wLQu2vhO4Stn9igoVS1fVrcT_OwtMMGPTdSzADtgS-iQdYKU_eXfb1JjaWxhV3BAZw&luckydog_sdk_version=8.1.0-rc.17-dy&luckydog_api_version=8.1.0-rc.17-dy&static_settings_version=49&dynamic_settings_version=49&polling_settings_version=0&luckycat_version_name=8.1.0-rc.17-dy&luckycat_version_code=810017&lucky_is_32=0&lucky_device_score=9.0435&lucky_device_type=RNA-AN00&status_bar_height=34&md=0`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: `body=11222`
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
treasurebox = true;
$.log(`账号[${index}]开宝箱视频: ${data.data.amount} 金币 \n================开宝箱1200结束==================`);
} else {
//$.log(`账号[${index}]开宝箱视频: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function one_more_detail() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/excitation_ad/one_more/detail?task_key=excitation_ad_treasure_box&rit=28038&creator_id=12317000&one_more_round=0&mode=done&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
}
$.get(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
if (data.data.has_one_more) {
//$.log(`账号[${index}]宝箱连续视频下次奖励: ${data.data.amount}金币`);
await ad_append('excitation_ad_treasure_box', '宝箱连续视频');
}
} else {
$.log(`账号[${index}]宝箱连续视频下次奖励: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function search_excitation() {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/search_excitation?mode=done&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: ``
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]领取搜索奖励: ${data.data.score_amount}金币`);
} else {
$.log(`账号[${index}]领取搜索奖励: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function task(taskKey, taskName, body = {}) {
return new Promise(resolve => {
let url = `https://aweme.snssdk.com/luckycat/aweme/v1/task/done/${taskKey}?mode=done&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'aweme.snssdk.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: JSON.stringify(body)
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.err_no == 0) {
$.log(`账号[${index}]${taskName}: ${data.data.score_amount}金币`);
} else {
$.log(`账号[${index}]${taskName}: ${data.err_tips}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
function meal_check_in(taskName = "吃饭补贴") {
return new Promise(resolve => {
let timeHours = parseInt($.time('HH'));
let meal_index = 0;
if (timeHours > 5 && timeHours < 9) {
meal_index = 0;
} else if (timeHours > 11 && timeHours < 14) {
meal_index = 1;
} else if (timeHours > 17 && timeHours < 19) {
meal_index = 2;
} else if (timeHours > 21 && timeHours < 23) {
meal_index = 3;
} else {
resolve();
return;
}
let body = {"meal_index": meal_index, "aid": "2329"}
let url = `https://gecko.zijieapi.com/ttgame/meal/check_in?mode=done&iid=${iid}&device_id=${device_id}&app_name=${app_name}&version_name=${version_name}&aid=${aid}&device_platform=android&dpi=411&update_version_code=25109900`;
const options = {
url: url,
headers: {
'Host': 'gecko.zijieapi.com',
'content-type': 'application/json; charset=utf-8',
'user-agent': $user_agent,
'Cookie': cookie,
},
body: JSON.stringify(body)
}
$.post(options, async (err, resp, data) => {
try {
if (data) {
data = JSON.parse(data);
if (data.code == 0) {
$.log(`账号[${index}]${taskName}: ${data.data.reward}金币`);
await ad_append('meal_excitation_ad', '吃饭补贴视频');
} else {
$.log(`账号[${index}]${taskName}: ${data.message}`);
}
}
} catch (e) {
$.logErr(e, resp);
} finally {
resolve(data);
}
});
})
}
}
function Env(t, e) {
"undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0);
class s {
constructor(t) {
this.env = t
}
send(t, e = "GET") {
t = "string" == typeof t ? {url: t} : t;
let s = this.get;
return "POST" === e && (s = this.post), new Promise((e, i) => {
s.call(this, t, (t, s, r) => {
t ? i(t) : e(s)
})
})
}
get(t) {
return this.send.call(this.env, t)
}
post(t) {
return this.send.call(this.env, t, "POST")
}
}
return new class {
constructor(t, e) {
this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`)
}
isNode() {
return "undefined" != typeof module && !!module.exports
}
isQuanX() {
return "undefined" != typeof $task
}
isSurge() {
return "undefined" != typeof $httpClient && "undefined" == typeof $loon
}
isLoon() {
return "undefined" != typeof $loon
}
toObj(t, e = null) {
try {
return JSON.parse(t)
} catch {
return e
}
}
toStr(t, e = null) {
try {
return JSON.stringify(t)
} catch {
return e
}
}
getjson(t, e) {
let s = e;
const i = this.getdata(t);
if (i) try {
s = JSON.parse(this.getdata(t))
} catch {
}
return s
}
setjson(t, e) {
try {
return this.setdata(JSON.stringify(t), e)
} catch {
return !1
}
}
getScript(t) {
return new Promise(e => {
this.get({url: t}, (t, s, i) => e(i))
})
}
runScript(t, e) {
return new Promise(s => {
let i = this.getdata("@chavy_boxjs_userCfgs.httpapi");
i = i ? i.replace(/\n/g, "").trim() : i;
let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");
r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r;
const [o, h] = i.split("@"), n = {
url: `http://${h}/v1/scripting/evaluate`,
body: {script_text: t, mock_type: "cron", timeout: r},
headers: {"X-Key": o, Accept: "*/*"}
};
this.post(n, (t, e, i) => s(i))
}).catch(t => this.logErr(t))
}
loaddata() {
if (!this.isNode()) return {};
{
this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path");
const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile),
s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e);
if (!s && !i) return {};
{
const i = s ? t : e;
try {
return JSON.parse(this.fs.readFileSync(i))
} catch (t) {
return {}
}
}
}
}
writedata() {
if (this.isNode()) {
this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path");
const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile),
s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data);
s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r)
}
}
lodash_get(t, e, s) {
const i = e.replace(/\[(\d+)\]/g, ".$1").split(".");
let r = t;
for (const t of i) if (r = Object(r)[t], void 0 === r) return s;
return r
}
lodash_set(t, e, s) {
return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t)
}
getdata(t) {
let e = this.getval(t);
if (/^@/.test(t)) {
const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : "";
if (r) try {
const t = JSON.parse(r);
e = t ? this.lodash_get(t, i, "") : e
} catch (t) {
e = ""
}
}
return e
}
setdata(t, e) {
let s = !1;
if (/^@/.test(e)) {
const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i),
h = i ? "null" === o ? null : o || "{}" : "{}";
try {
const e = JSON.parse(h);
this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i)
} catch (e) {
const o = {};
this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i)
}
} else s = this.setval(t, e);
return s
}
getval(t) {
return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null
}
setval(t, e) {
return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null
}
initGotEnv(t) {
this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar))
}
get(t, e = (() => {
})) {
t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {"X-Surge-Skip-Scripting": !1})), $httpClient.get(t, (t, s, i) => {
!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i)
})) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {hints: !1})), $task.fetch(t).then(t => {
const {statusCode: s, statusCode: i, headers: r, body: o} = t;
e(null, {status: s, statusCode: i, headers: r, body: o}, o)
}, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => {
try {
if (t.headers["set-cookie"]) {
const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();
s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar
}
} catch (t) {
this.logErr(t)
}
}).then(t => {
const {statusCode: s, statusCode: i, headers: r, body: o} = t;
e(null, {status: s, statusCode: i, headers: r, body: o}, o)
}, t => {
const {message: s, response: i} = t;
e(s, i, i && i.body)
}))
}
post(t, e = (() => {
})) {
if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {"X-Surge-Skip-Scripting": !1})), $httpClient.post(t, (t, s, i) => {
!t && s && (s.body = i, s.statusCode = s.status), e(t, s, i)
}); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {hints: !1})), $task.fetch(t).then(t => {
const {statusCode: s, statusCode: i, headers: r, body: o} = t;
e(null, {status: s, statusCode: i, headers: r, body: o}, o)
}, t => e(t)); else if (this.isNode()) {
this.initGotEnv(t);
const {url: s, ...i} = t;
this.got.post(s, i).then(t => {
const {statusCode: s, statusCode: i, headers: r, body: o} = t;
e(null, {status: s, statusCode: i, headers: r, body: o}, o)
}, t => {
const {message: s, response: i} = t;
e(s, i, i && i.body)
})
}
}
time(t, e = null) {
const s = e ? new Date(e) : new Date;
let i = {
"M+": s.getMonth() + 1,
"d+": s.getDate(),
"H+": s.getHours(),
"m+": s.getMinutes(),
"s+": s.getSeconds(),
"q+": Math.floor((s.getMonth() + 3) / 3),
S: s.getMilliseconds()
};
/(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length)));
for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length)));
return t
}
msg(e = t, s = "", i = "", r) {
const o = t => {
if (!t) return t;
if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? {"open-url": t} : this.isSurge() ? {url: t} : void 0;
if ("object" == typeof t) {
if (this.isLoon()) {
let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"];
return {openUrl: e, mediaUrl: s}
}
if (this.isQuanX()) {
let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl;
return {"open-url": e, "media-url": s}
}
if (this.isSurge()) {
let e = t.url || t.openUrl || t["open-url"];
return {url: e}
}
}
};
if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) {
let t = ["", "==============📣系统通知📣=============="];
t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t)
}
}
log(...t) {
t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator))
}
logErr(t, e) {
const s = !this.isSurge() && !this.isQuanX() && !this.isLoon();
s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t)
}
wait(t) {
return new Promise(e => setTimeout(e, t))
}
done(t = {}) {
const e = (new Date).getTime(), s = (e - this.startTime) / 1e3;
this.log("", `🔔${this.name}, 结束! 🕛 ${s}`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t)
}
}(t, e)
}