196 lines
7.2 KiB
JavaScript
196 lines
7.2 KiB
JavaScript
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/web/sudojia_fnnas.js
|
||
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/web/sudojia_fnnas.js
|
||
// # Repo: sudojia/AutoTaskScript
|
||
// # Path: src/web/sudojia_fnnas.js
|
||
// # UploadedAt: 2025-04-28T19:26:13+08:00
|
||
// # SHA256: 5d80925231190e241d959facb5f7ae099c4bb2122c415e04975ba821f3c30271
|
||
// # Category: web版/账密
|
||
// # Evidence: web/H5关键词 + username/password/login
|
||
//
|
||
|
||
/**
|
||
* 飞牛私有云
|
||
*
|
||
* 官网:https://club.fnnas.com
|
||
* 获取 Cookie,格式:pvRK_2132_auth=46exxxxxxxx; pvRK_2132_saltkey=F3xxxxx
|
||
* export FN_NAS_COOKIE = 'pvRK_2132_auth=46exxxxxxxx; pvRK_2132_saltkey=F3xxxxx'
|
||
* 多账号用 & 或换行
|
||
*
|
||
* @author Telegram@sudojia
|
||
* @site https://blog.imzjw.cn
|
||
* @date 2024/09/20
|
||
*
|
||
* const $ = new Env('飞牛私有云')
|
||
* cron: 10 0 * * *
|
||
*/
|
||
const initScript = require('../utils/initScript')
|
||
const {$, notify, sudojia, checkUpdate} = initScript('飞牛私有云');
|
||
const cheerio = require("cheerio");
|
||
const fnNasList = process.env.FN_NAS_COOKIE ? process.env.FN_NAS_COOKIE.split(/[\n&]/) : [];
|
||
// 消息推送
|
||
let message = '';
|
||
// 获取配置信息
|
||
let formHash, signLink, uid;
|
||
// 接口地址
|
||
const baseUrl = 'https://club.fnnas.com'
|
||
// 请求头
|
||
const headers = {
|
||
'User-Agent': sudojia.getRandomUserAgent('PC'),
|
||
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
||
};
|
||
|
||
!(async () => {
|
||
await checkUpdate($.name, fnNasList);
|
||
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
|
||
for (let i = 0; i < fnNasList.length; i++) {
|
||
const index = i + 1;
|
||
headers.Cookie = fnNasList[i];
|
||
console.log(`\n*****第[${index}]个${$.name}账号*****`);
|
||
message += `📣====${$.name}账号[${index}]====📣\n`;
|
||
await main();
|
||
await $.wait(sudojia.getRandomWait(2000, 2500));
|
||
}
|
||
if (message) {
|
||
await notify.sendNotify(`「${$.name}」`, `${message}`);
|
||
}
|
||
})().catch((e) => $.logErr(e)).finally(() => $.done());
|
||
|
||
async function main() {
|
||
await getUidAndUserName();
|
||
await $.wait(sudojia.getRandomWait(800, 1200));
|
||
await follow();
|
||
await $.wait(sudojia.getRandomWait(1200, 1800));
|
||
await checkIn();
|
||
await $.wait(sudojia.getRandomWait(1200, 1800));
|
||
await getCount();
|
||
await $.wait(sudojia.getRandomWait(1200, 1800));
|
||
await getPoints();
|
||
}
|
||
|
||
/**
|
||
* 获取重要信息
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function getUidAndUserName() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}`, 'get', headers);
|
||
const $ = cheerio.load(data);
|
||
uid = $('a', '.icon_msg').attr('href').match(/uid=(\d+)/)[1];
|
||
const userName = $('.quater_phone_nav .z').text().trim();
|
||
console.log(`${userName}(${uid})`);
|
||
// 拿到 formhash 和签到地址
|
||
const logoutLink = $('li.l4 a').attr('href');
|
||
formHash = logoutLink.split('formhash=')[1];
|
||
signLink = $('a[href*="plugin.php?id=zqlj_sign"]').attr('href');
|
||
message += `${userName}(${uid})\n`;
|
||
} catch (e) {
|
||
console.error('获取重要信息时发生异常:', e);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 签到
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function checkIn() {
|
||
try {
|
||
let data = await sudojia.sendRequest(`${baseUrl}/${signLink}`, 'get', headers);
|
||
if (!data.includes('点击打卡')) {
|
||
console.log('今日已打卡');
|
||
return;
|
||
}
|
||
await $.wait(sudojia.getRandomWait(800, 1200));
|
||
data = await sudojia.sendRequest(`${baseUrl}/${signLink}&sign=${formHash}`, 'get', headers);
|
||
console.log('打卡成功!');
|
||
message += `打卡成功\n`;
|
||
} catch (e) {
|
||
console.error('签到时发生异常:', e);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 统计信息
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function getCount() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/${signLink}`, 'get', headers);
|
||
const $ = cheerio.load(data);
|
||
const items = {};
|
||
// 使用选择器提取信息
|
||
$('.xl li').each((index, element) => {
|
||
const text = $(element).text().trim();
|
||
switch (text.substring(0, 4)) {
|
||
case '最近打卡':
|
||
items['zjdk'] = text.substring(5).trim();
|
||
break;
|
||
case '本月打卡':
|
||
items['bydk'] = text.substring(5).trim();
|
||
break;
|
||
case '连续打卡':
|
||
items['lxdk'] = text.substring(5).trim();
|
||
break;
|
||
case '累计打卡':
|
||
items['ljdk'] = text.substring(5).trim();
|
||
break;
|
||
case '累计奖励':
|
||
items['ljjl'] = text.substring(5).trim();
|
||
break;
|
||
case '最近奖励':
|
||
items['zjjl'] = text.substring(5).trim();
|
||
break;
|
||
case '当前打卡':
|
||
items['currenDkLevel'] = text.substring(7).trim();
|
||
break;
|
||
}
|
||
});
|
||
console.log(`最近打卡:${items.zjdk}\n本月打卡:${items.bydk}\n连续打卡:${items.lxdk}\n累计打卡:${items.ljdk}\n累计奖励:${items.ljjl}\n最近奖励:${items.zjjl}\n当前打卡等级:${items.currenDkLevel}`);
|
||
message += `最近打卡:${items.zjdk}\n本月打卡:${items.bydk}\n连续打卡:${items.lxdk}\n累计打卡:${items.ljdk}\n累计奖励:${items.ljjl}\n最近奖励:${items.zjjl}\n当前打卡等级:${items.currenDkLevel}\n`;
|
||
} catch (e) {
|
||
console.error('获取统计信息时发生异常:', e);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取个人信息
|
||
*
|
||
* @returns {Promise<void>}
|
||
*/
|
||
async function getPoints() {
|
||
try {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/home.php?mod=space&uid=${uid}&do=profile&from=space`, 'get', headers);
|
||
const $ = cheerio.load(data);
|
||
const ulElement = $('.pf_l');
|
||
const item = {};
|
||
ulElement.find('li').each((index, element) => {
|
||
const label = $(element).find('em').text().trim();
|
||
const value = $(element).text().replace(label, '').trim();
|
||
switch (label) {
|
||
case '积分':
|
||
item.points = parseInt(value);
|
||
break;
|
||
case '牛值':
|
||
item.bullValue = parseInt(value);
|
||
break;
|
||
case '飞牛币':
|
||
item.flyingBullCoins = parseInt(value);
|
||
break;
|
||
case '登陆天数':
|
||
item.loginDays = parseInt(value);
|
||
break;
|
||
}
|
||
});
|
||
console.log(`当前积分:${item.points}\n当前牛值:${item.bullValue}\n当前飞牛币:${item.flyingBullCoins}\n当前登录天数:${item.loginDays}`);
|
||
message += `当前积分:${item.points}\n当前牛值:${item.bullValue}\n当前飞牛币:${item.flyingBullCoins}\n当前登录天数:${item.loginDays}\n\n`;
|
||
} catch (e) {
|
||
console.error('获取个人信息时发生异常:', e);
|
||
}
|
||
}
|
||
|
||
async function follow() {
|
||
const data = await sudojia.sendRequest(`${baseUrl}/home.php?mod=spacecp&ac=follow&op=add&hash=${formHash}&fuid=6441&infloat=yes&handlekey=followmod&inajax=1&ajaxtarget=fwin_content_followmod`, 'get', headers);
|
||
}
|