Files
qinglong/脚本库/web版/账密/飞牛私有云/2025-04-28_sudojia_fnnas_5d809252.js
2026-05-24 05:33:05 +00:00

196 lines
7.2 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/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);
}