Files
qinglong/脚本库/微信小程序/抓包版/多合一账号失效检测/2025-04-28_sudojia_authCheck_8a73edf8.js
2026-05-24 05:33:05 +00:00

464 lines
23 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/other/sudojia_authCheck.js
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/other/sudojia_authCheck.js
// # Repo: sudojia/AutoTaskScript
// # Path: src/other/sudojia_authCheck.js
// # UploadedAt: 2025-04-28T19:26:13+08:00
// # SHA256: 8a73edf83b124c7f50ae534f4d472a9694a2899547eff0f426935ecfc498077c
// # Category: 微信小程序/抓包版
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
//
/**
* 检测现有脚本仓库https://github.com/sudojia/AutoTaskScript凭证Token、Cookie等是否失效
* 目前只推送失效的账号,每天跑两次即可,没有推送消息就说明没有账号失效
* 默认关闭,如需启用设置变量为 true
* export ENABLE_CHECK_TOKEN = 'true'
*
* @author Telegram@sudojia
* @site https://blog.imzjw.cn
* @date 2024/09/24
*
* const $ = new Env('多合一账号失效检测')
* cron: 10 12,21 * * *
*/
const initScript = require('../utils/initScript')
const {$, notify, sudojia} = initScript('多合一账号失效检测');
const cheerio = require("cheerio");
const crypto = require("crypto");
// 消息推送
let message = '';
// 环境变量
const enableCheckToken = process.env.ENABLE_CHECK_TOKEN || false;
// 账号列表
const accounts = [
{
name: '所有女生',
list: process.env.ALL_GIRLS_TOKEN ? process.env.ALL_GIRLS_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://7.wawo.cc/api/account/wx/member/base`, 'get', createHeaders('wx_mini', `authorization@bearer ${token}`, 'Content-Type@application/json', 'referer@https://servicewechat.com/wx7d1403fe84339669/1076/page-frame.html'));
return '000' !== data.code || !data.data;
},
},
{
name: '安慕希',
list: process.env.AMX_TOKEN ? process.env.AMX_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://amxshop.yili.com/api/user/getUser`, 'get', createHeaders('wx_mini', `accesstoken@${token}`, 'Content-Type@application/x-www-form-urlencoded', 'referer@https://servicewechat.com/wxf2a6206f7e2fd712/666/page-frame.html'));
return '未登陆或登陆超时' === data.msg || !data.data;
},
},
{
name: '霸王茶姬',
list: process.env.BW_TEA_TOKEN ? process.env.BW_TEA_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
token = token.split('#')[0];
const data = await sudojia.sendRequest(`https://webapi2.qmai.cn/web/catering2-apiserver/crm/customer-center?appid=wxafec6f8422cb357b`, 'get', createHeaders('wx_mini', `qm-user-token@${token}`, 'Content-Type@application/json', 'qm-from@wechat'));
return !data.status;
},
},
{
name: '飞牛私有云',
list: process.env.FN_NAS_COOKIE ? process.env.FN_NAS_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://club.fnnas.com`, 'get', createHeaders('PC', `Cookie@${token}`, 'Accept-Encoding@gzip, deflate, br, zstd'));
const $ = cheerio.load(data);
const uid = $('a', '.icon_msg').attr('href').match(/uid=(\d+)/)[1];
return 0 > uid;
},
},
{
name: '国乐酱酒',
list: process.env.GYJ_TOKEN ? process.env.GYJ_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://member.guoyuejiu.com/api/user/info`, 'get', createHeaders('wx_mini', `Authorization@${token}`, 'Content-Type@application/json', 'Host@member.guoyuejiu.com', 'referer@https://servicewechat.com/wxeff120e4d11594c0/72/page-frame.html'));
return 1011 === data.code;
},
},
{
name: '厚工坊',
list: process.env.HGF_COOKIE ? process.env.HGF_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://api.hgf1862.com/YUN//Game/2021/QianDao/QianDaoAjax_By28.aspx?op=now&vers=`, 'post', createHeaders('wx_mini', `Cookie@user=SessionID=${token}`, 'Accept@application/json, text/javascript, */*; q=0.01'));
return -10000 === data.status;
},
},
{
name: '海澜之家-游戏',
list: process.env.HLZJ_UNID ? process.env.HLZJ_UNID.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://gmdevpro.hlzjppgl.cn/server/api/authorized-login`, 'post', createHeaders('wx_mini', `Cookie@user=SessionID=${token}`, 'Content-Type@application/json', 'Host@gmdevpro.hlzjppgl.cn'), {
"union_id": token,
"invite_user_id": "78630"
});
return 200 !== data.code || !data.data.token;
},
},
{
name: '媓钻护肤品',
list: process.env.HZHFP_TOKEN ? process.env.HZHFP_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const headers = createHeaders(
'wx_mini',
`Authorization@Bearer ${token}`,
'Content-Type@application/json;charset=UTF-8',
'Host@api.hzyxhfp.com',
'referer@https://servicewechat.com/wx3df7476c42cace5d/377/page-frame.html',
'app@wx3df7476c42cace5d',
);
const data = await sudojia.sendRequest(`https://api.hzyxhfp.com/api/users/getUserDetailInfo`, 'post', headers);
return 0 !== data.code || !data.data;
},
},
{
name: '玩拍由我俱乐部',
list: process.env.INSTAX_TOKEN ? process.env.INSTAX_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
token = token.split('#')[0];
const data = await sudojia.sendRequest(`https://instax.app.xcxd.net.cn/api/me`, 'get', createHeaders('wx_mini', `Authorization@Bearer ${token}`, 'Content-Type@application/json', 'Host@instax.app.xcxd.net.cn', 'referer@https://servicewechat.com/wx3cb572fbf3aa30c8/136/page-frame.html'));
return data.error || !data.data;
},
},
{
name: '金典有机生活+',
list: process.env.JINDIAN_TOKEN ? process.env.JINDIAN_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://msmarket.msx.digitalyili.com/gateway/api/auth/account/user/info`, 'get', createHeaders('wx_mini', `access-token@${token}`, 'Content-Type@application/json', 'referer@https://servicewechat.com/wxf32616183fb4511e/616/page-frame.html'));
return !data.status || !data.data.userId;
},
},
{
name: '嘉立创',
list: process.env.JLC_TOKEN ? process.env.JLC_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://m.jlc.com/api/appPlatform/center/setting/selectPersonalInfo`, 'get', createHeaders('PC', `x-jlc-accesstoken@${token}`, 'x-jlc-clienttype@WEB', 'accept@application/json, text/plain, */*', 'referer@https://m.jlc.com/mapp/pages/my/index'), '');
return 200 !== data.code || !data.data.customerLinkPhone
},
},
{
name: '植白说官方商城',
list: process.env.KOZBS_TOKEN ? process.env.KOZBS_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://www.kozbs.com/demo/wx/user/getUserIntegral`, 'get', createHeaders('wx_mini', `x-dts-token@${token}`, 'Content-Type@application/json', 'referer@https://servicewechat.com/wx6b6c5243359fe265/153/page-frame.html'));
return '无效用户' === data.errmsg || 0 !== data.errno;
},
},
{
name: '开天工作室',
list: process.env.KTGZS_TOKEN ? process.env.KTGZS_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://api.box.vipinfinity.com/user`, 'get', createHeaders('wx_mini', `Authorization@${token}`, 'Client-Name@default', 'Content-Type@application/json', 'Client-Type@wechat--miniapp-windows', 'Host@api.box.vipinfinity.com', 'referer@https://servicewechat.com/wxa1ff7cf5ddff1da2/9/page-frame.html'));
return 0 !== data.code || !data.data.user;
},
},
{
name: '库街区',
list: process.env.KURO_TOKEN ? process.env.KURO_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
$.source = 'h5';
let data = await sudojia.sendRequest(`https://api.kurobbs.com/gamer/widget/game3/refresh`, 'post', {
"source": $.source,
'token': token,
}, `type=2&sizeType=1`);
if (220 === data.code) {
$.source = 'android';
await $.wait(sudojia.getRandomWait(1000, 1500));
data = await sudojia.sendRequest(`https://api.kurobbs.com/gamer/widget/game3/refresh`, 'post', {
"source": $.source,
'token': token,
}, `type=2&sizeType=1`);
return 220 === data.code || !data.data;
}
return 220 === data.code || !data.data;
},
},
{
name: '老板电器服务微商城',
list: process.env.LAOBAN_OPENID ? process.env.LAOBAN_OPENID.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://vip.foxech.com/index.php/api/member/get_member_info`, 'post', createHeaders('wx_mini', 'Content-Type@application/json', 'referer@https://servicewechat.com/wxc8c90950cf4546f6/157/page-frame.html'), getLaoBanToken(token));
return '200' !== data.code || !data.data;
},
},
{
name: '龙湖天街',
list: process.env.LONG_FOR_TOKEN ? process.env.LONG_FOR_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://gw2c-hw-open.longfor.com/riyuehu-miniapp-prod/service/ryh/user/info`, 'post', createHeaders('wx_mini', 'X-Gaia-Api-Key@646fce29-3a77-462a-aabe-0fe77bc3023f', `token@${token}`, 'Content-Type@application/json'), {
"data": {
"projectId": "B379F9F1-C176-4925-B6F6-92555AC62E61"
}
});
return 10000 !== data.code || !data.data;
},
},
{
name: '欣都龙城',
list: process.env.MALLCOO_TOKEN ? process.env.MALLCOO_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://m.mallcoo.cn/api/user/user/GetUserAndMallCard`, 'post', createHeaders('wx_mini', 'Content-Type@application/json', 'referer@https://servicewechat.com/wx7ef63cf605a639fb/18/page-frame.html'), {
"MallId": 10144,
"Header": {
"Token": token,
"systemInfo": {
"model": "microsoft",
"SDKVersion": "3.5.0",
"system": "Windows 11 x64",
"version": "3.9.10",
"miniVersion": "2.67.7"
}
}
});
return 1 !== data.m || 320 === data.m;
},
},
{
name: '馬伍旺饮料厂',
list: process.env.MAWUW_TOKEN ? process.env.MAWUW_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
token = token.split('#')[0];
const data = await sudojia.sendRequest(`https://webapi.qmai.cn/web/catering/crm/customer-center?appid=wxc1381dc6f2213b72`, 'get', createHeaders('wx_mini', `qm-user-token@${token}`, 'Content-Type@application/json', 'qm-from@wechat'));
return !data.status || !data.data;
},
},
{
name: '美的会员',
list: process.env.MIDEA_COOKIE ? process.env.MIDEA_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://mvip.midea.cn/next/mucuserinfo/getmucuserinfo`, 'get', createHeaders('wx_mini', `Cookie@${token}`, 'Content-Type@application/json', 'referer@https://servicewechat.com/wx03925a39ca94b161/437/page-frame.html'));
return 0 !== data.errcode || !data.data.userinfo;
},
},
{
name: '摩托范',
list: process.env.MOTO_TOKEN ? process.env.MOTO_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const [ck, uid] = token.split('#')
const headers = createHeaders(
'H5',
`token@${ck}`,
'Content-Type@application/x-www-form-urlencoded',
'referer@api.58moto.com',
`timestamp@${Date.now()}`,
'version@3.57.63'
);
const data = await sudojia.sendRequest(`https://api.58moto.com/user/center/info/v2/principal`, 'post', headers, `uid=${uid}`);
return 0 !== data.code || !data.data.mobile
},
},
{
name: '南方航空',
list: process.env.NFHK_COOKIE ? process.env.NFHK_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://wxapi.csair.com/marketing-tools/activity/join?type=APPTYPE&chanel=ss&lang=zh`, 'post', createHeaders('wx_mini', `Cookie@${[`sign_user_token=${token}`, `TOKEN=${token}`, `cs1246643sso=${token}`,].join('; ')}`, 'User-Agent@okhttp/3.12.1;jdmall;android;version/10.3.4;build/92451;', 'Content-Type@application/json'), {
"activityType": "sign",
"channel": "app",
"entrance": 1,
});
return 'S00011' === data.respCode || !data.data;
},
},
{
name: '胖哥俩肉蟹煲',
list: process.env.PANG_GE_TOKEN ? process.env.PANG_GE_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const headers = createHeaders(
'wx_mini',
'deviceWidth@400',
'Host@saash5.namek.com.cn',
'tenantId@24',
'Accept@*/*',
'Content-Type@application/json;charset=UTF-8',
'Accept-Encoding@gzip, deflate, br',
'referer@https://servicewechat.com/wxe61905cae01a6c7d/67/page-frame.html',
'clientVersion@3.2.0',
`timestamp@${Date.now()}`,
`token@${token}`
)
const data = await sudojia.sendRequest(`https://saash5.namek.com.cn//api/v1/member/personal?shopId=24`, 'get', headers);
return !data.body.member;
},
},
{
name: '皮皮世界',
list: process.env.PPX_COOKIE ? process.env.PPX_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://api.pipix.com/bds/user/user_profile/`, 'get', createHeaders('H5', 'Accept-Encoding@gzip', 'host@api.pipix.com', `Cookie@sessionid=${token}`), {});
return 11002 === data.status_code || 'no_login' === data.message;
},
},
{
name: '水费易签到',
list: process.env.SHUI_FEI_COOKIE ? process.env.SHUI_FEI_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const [cookie, mId] = token.split('#');
const data = await sudojia.sendRequest(`https://m.ipaiyun.cn/PersonalCenter/PersonalCenter/GetShopMemberDetail`, 'post', createHeaders('PC', `Cookie@${cookie}`, 'Accept@*/*', 'referer@https://m.ipaiyun.cn/Ipai/Home/Index?code=031sLtFa11eBTH0d0uFa1NqtY53sLtFQ&state=wxbe5b7a2bc0467240', 'Content-Type@application/x-www-form-urlencoded; charset=UTF-8'), `memberId=${mId}`);
return 0 !== data.code || !data.resultJson.meberinfo;
},
},
{
name: '特步会员中心',
list: process.env.TEBU_JSON ? process.env.TEBU_JSON.split(/[\n&]/) : [],
checkFn: async (token) => {
const headers = createHeaders('wx_mini', 'ezr-source@weapp', 'content-type@application/json', 'referer@https://servicewechat.com/wx12e1cb3b09a0e6f0/121/page-frame.html')
for (const [key, value] of Object.entries(JSON.parse(token))) {
headers[key] = value;
}
const data = await sudojia.sendRequest(`https://wxa-tp.ezrpro.com/myvip/FamilyCard/GetVipCardInfoByVipId`, 'get', headers);
return 200 !== data.Status || !data.Result.VipInfo;
},
},
{
name: '贴吧签到',
list: process.env.TIE_BA_COOKIE ? process.env.TIE_BA_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const headers = createHeaders('H5', 'Content-Type@application/x-www-form-urlencoded');
const matchList = token.match(/BDUSS=([^;]+);?/);
if (matchList) {
headers.Cookie = `BDUSS=${matchList[1]}`;
} else {
headers.Cookie = `BDUSS=${token}`;
}
const data = await sudojia.sendRequest(`http://tieba.baidu.com/dc/common/tbs`, 'get', headers);
return !data.tbs || 1 !== data.is_login;
},
},
{
name: '贴吧任务签到',
list: process.env.TIE_BA_COOKIE ? process.env.TIE_BA_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest(`https://tieba.baidu.com/mo/q/usergrowth/showUserGrowth?client_type=2&client_version=12.60.1.2`, 'get', createHeaders('H5', `Cookie@${token}`));
return !data.data.tbs || !data.data.user;
},
},
{
name: 'V2EX每日签到',
list: process.env.V2EX_COOKIE ? process.env.V2EX_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest('https://www.v2ex.com', 'get', createHeaders('PC', `Cookie@${token}`, 'Accept-Encoding@gzip, deflate, br', 'Accept@text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'));
return !(data.indexOf('登出') > -1);
},
},
{
name: '心喜',
list: process.env.XINXI_TOKEN ? process.env.XINXI_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest('https://api.xinc818.com/mini/user', 'get', createHeaders('wx_mini', `sso@${token}`, 'Accept-Encoding@gzip, deflate, br', 'Content-Type@application/json', 'referer@https://servicewechat.com/wx673f827a4c2c94fa/276/page-frame.html'));
return 40001 === data.code || !data.data.nickname;
},
},
{
name: '兴攀农场',
list: process.env.XPFARM_TOKEN ? process.env.XPFARM_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest('https://p.xpfarm.cn/treemp/user.PersonalCenter/getInfo', 'post', createHeaders('wx_mini', `authorization@${token}`, 'Accept-Encoding@gzip, deflate, br', 'Content-Type@application/json', 'referer@https://servicewechat.com/wx27e219ff3142b7c8/63/page-frame.html'));
return 1000 !== data.code || !data.data.id;
},
},
{
name: '智能电视',
list: process.env.ZNDS_COOKIE ? process.env.ZNDS_COOKIE.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest('https://www.znds.com/', 'post', createHeaders('PC', `Cookie@${token}`, 'Accept-Encoding@gzip, deflate, br', 'Content-Type@text/html; charset=utf-8', 'Accept@text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'));
return !(data.indexOf('退出') > -1);
},
},
{
name: '甄稀冰淇淋',
list: process.env.ZX_ICE_TOKEN ? process.env.ZX_ICE_TOKEN.split(/[\n&]/) : [],
checkFn: async (token) => {
const data = await sudojia.sendRequest('https://msmarket.msx.digitalyili.com/gateway/api/auth/account/user/info', 'get', createHeaders('wx_mini', `access-token@${token}`, 'Content-Type@application/json', 'referer@https://servicewechat.com/wx21fd8b5d6d4cf1ca/195/page-frame.html'));
return !data.status || !data.data.userId;
},
},
];
!(async () => {
if (!enableCheckToken) {
console.log('\n如需执行请先配置环境变量【ENABLE_CHECK_TOKEN】为 true');
return;
}
for (const account of accounts) {
if (!account.list.length) {
console.log(`\n未配置${account.name}环境变量,跳过...`);
await $.wait(sudojia.getRandomWait(500, 1000));
continue;
}
let totalAccounts = account.list.length;
let failedAccounts = 0;
let failedIndices = [];
for (let i = 0; i < totalAccounts; i++) {
if (account.name === '贴吧任务签到') {
if (!account.list[i].includes('CUID=')) {
console.log('\n检测到贴吧任务签到变量缺少 CUID将跳过...');
continue;
}
}
const index = i + 1;
console.log(`\n${account.name}账号[${index}]`);
const isLoginFailed = await checkAccount(account, account.list[i]);
await $.wait(sudojia.getRandomWait(800, 1100));
if (isLoginFailed) {
console.error(`失效!❌`);
failedAccounts++;
failedIndices.push(index);
} else {
console.log(`有效!✅`);
}
}
if (failedAccounts > 0) {
message += `${account.name}\n`;
message += `共计[${totalAccounts}]个账号\n`;
message += `第[${failedIndices.join(', ')}]个账号失效\n\n`;
message += `------------\n\n`;
}
}
if (message) {
await notify.sendNotify(`${$.name}`, `${message}`);
} else {
console.log('\n检测完毕暂无失效账号✅');
}
})().catch((e) => $.logErr(e)).finally(() => $.done());
async function checkAccount(account, token) {
try {
return await account.checkFn(token);
} catch (e) {
return true;
}
}
/**
* 创建请求头
*
* @param type
* @param customHeaders
*/
function createHeaders(type, ...customHeaders) {
const headers = {
'User-Agent': sudojia.getRandomUserAgent(type),
};
customHeaders.forEach(customHeader => {
const [key, value] = customHeader.split('@');
if (key && value) {
headers[key] = value;
}
});
return headers;
}
/**
* 老板电器 token 获取
*
* @param openId
* @returns {{openid, is_need_sync: number, timestamp: number, token: string}}
*/
function getLaoBanToken(openId) {
const currentTimestampMs = Date.now();
const rawString = `${currentTimestampMs}wqewq${openId}`;
return {
is_need_sync: 1,
timestamp: currentTimestampMs,
token: sudojia.md5(rawString),
openid: openId
}
}