Continue seeded Qinglong script collection

This commit is contained in:
Hermes Agent
2026-05-24 05:33:05 +00:00
parent ca1a4275e4
commit b082da3fe1
392 changed files with 131619 additions and 7 deletions

View File

@@ -0,0 +1,112 @@
# Source: https://github.com/xfmeng970526/ql/blob/main/mxbc.py
# Raw: https://raw.githubusercontent.com/xfmeng970526/ql/main/mxbc.py
# Repo: xfmeng970526/ql
# Path: mxbc.py
# UploadedAt: 2023-09-20T12:13:28+08:00
# SHA256: 5680c66085d13cc9bb6b3fe331c65dfe0c62e56d275a612ac9b92584c38946b3
# Category: 微信小程序/抓包版
# Evidence: appid/openid/session_key/encryptedData等小程序字段
#!/usr/bin/python3
# -- coding: utf-8 --
# -------------------------------
# @Time : 2023/1/7 10:45
# cron "4 8 * * *" script-path=mxbc.py,tag=匹配cron
# const $ = new Env('蜜雪冰城');
# 环境变量名 MXBC_TOKEN 多账号用#隔开
# pyhton依赖 先安装 wheel requests pycryptodome
# new Env('51-蜜雪冰城');
# 项目名称:蜜雪冰城
# -------------------------------
from requests import get
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from time import time
from base64 import b64encode, b64decode
from os import environ
try:
from notify import send
push = True
except:
print(f"青龙无法找到notify.py文件 无法推送")
push = False
def timestamp():
return int(round(time() * 1000))
def RSA_sign(data):
privateKey = '''MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCtypUdHZJKlQ9LL6lIJSphnhqjke7HclgWuWDRWvzov30du235cCm13mqJ3zziqLCwstdQkuXo9sOPIh94t6nzBHTuqYA1whrUnQrKfv9X4/h3QVkzwT+xWflE+KubJZoe+daLKkDeZjVWnUku8ov0E5vwADACfntEhAwiSZUALX9UgNDTPbj5ESeII+VztZ/KOFsRHMTfDb1GIR/dAc1mL5uYbh0h2Fa/fxRPgf7eJOeWGiygesl3CWj0Ue13qwX9PcG7klJXfToI576MY+A7027a0aZ49QhKnysMGhTdtFCksYG0lwPz3bIR16NvlxNLKanc2h+ILTFQbMW/Y3DRAgMBAAECggEBAJGTfX6rE6zX2bzASsu9HhgxKN1VU6/L70/xrtEPp4SLSpHKO9/S/Y1zpsigr86pQYBx/nxm4KFZewx9p+El7/06AX0djOD7HCB2/+AJq3iC5NF4cvEwclrsJCqLJqxKPiSuYPGnzji9YvaPwArMb0Ff36KVdaHRMw58kfFys5Y2HvDqh4x+sgMUS7kSEQT4YDzCDPlAoEFgF9rlXnh0UVS6pZtvq3cR7pR4A9hvDgX9wU6zn1dGdy4MEXIpckuZkhwbqDLmfoHHeJc5RIjRP7WIRh2CodjetgPFE+SV7SdjECmvYJbet4YLg+Qil0OKR9s9S1BbObgcbC9WxUcrTgECgYEA/Yj8BDfxcsPK5ebE9N2teBFUJuDcHEuM1xp4/tFisoFH90JZJMkVbO19rddAMmdYLTGivWTy PVsM1+9stq/NwsFJWHRUiMK7dttGiXuZry+xvq/SAZoitgI8tXdDXMw7368vatr0g6m7ucBKjZWxSHjK9/KVquVr7BoXFm+YxaECgYEAr3sgVNbr5ovx17YriTqe1FLTLMD5gPrzugJj7nypDYY59hLlkrA/TtWbfzE+vfrN3oRIz5OMi9iFk3KXFVJMjGg+M5eO9Y8m14e791/q1jUuuUH4mc6HttNRNh7TdLg/OGKivE+56LEyFPir45zw/dqwQM3jiwIzyPz/+bzmfTECgYATxrOhwJtc0FjrReznDMOTMgbWYYPJ0TrTLIVzmvGP6vWqG8rIS8cYEA5VmQyw4c7G97AyBcW/c3K1BT/9oAj0wA7wj2JoqIfm5YPDBZkfSSEcNqqy5Ur/13zUytC+VE/3SrrwItQf0QWLn6wxDxQdCw8J+CokgnDAoehbH6lTAQKBgQCE67T/zpR9279i8CBmIDszBVHkcoALzQtU+H6NpWvATM4WsRWoWUx7AJ56Z+joqtPKG1WztkYdn/L+TyxWADLvn/6Nwd2N79MyKyScKtGNVFeCCJCwoJp4R/UaE5uErBNnOH+gOJvPwHj5HavGC5kYENC1Jb+YCiEDu3CB0S6d4QKBgQDGYGEFMZYWqO6+LrfQZNDBLCI2G4+UFP+8ZEuBKy5NkDVqXQhHRbqr9S/OkFu+kEjHLuYSpQsclh6XSDks5x/hQJNQszLPJoxvGECvz5TN2lJhuyCupS50aGKGqTxKYtiPHpWa8jZyjmanMKnEdOGyw/X4SFyodv8AEloqd81yGg=='''
private_keyBytes = b64decode(privateKey)
priKey = RSA.importKey(private_keyBytes)
signer = PKCS1_v1_5.new(priKey)
hash_obj = SHA256.new(data.encode('utf-8'))
signature = b64encode(signer.sign(hash_obj)).decode()
return signature
class MXBC:
msg = ""
def __init__(self, token):
self.token = token
self.appid = "d82be6bbc1da11eb9dd000163e122ecb"
def check_in(self):
url = f"https://mxsa.mxbc.net/api/v1/customer/signin"
params = f"appId={self.appid}&t={timestamp()}"
params += "&sign=" + RSA_sign(params).replace("/", "_").replace("+", "-")
headers = {
"app": "mxbc",
"appchannel": "huawei",
"appversion": "3.0.3",
"Access-Token": self.token,
"Host": "mxsa.mxbc.net",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"User-Agent": "okhttp/4.4.1",
"Pragma": "no-cache",
"Cache-Control": "no-cache"
}
data = get(url, headers=headers, params=params).json()
if data.get("msg") == "":
print(f"签到成功")
MXBC.msg += "签到成功 "
else:
print(f"签到失败, 原因是{data.get('msg')}")
MXBC.msg += f"签到失败, 原因是{data.get('msg')} "
def get_userinfo(self):
url = "https://mxsa.mxbc.net/api/v1/customer/info"
params = f"appId={self.appid}&t={timestamp()}"
params += "&sign=" + RSA_sign(params).replace("/", "_").replace("+", "-")
headers = {
"app": "mxbc",
"appchannel": "huawei",
"appversion": "3.0.3",
"Access-Token": self.token,
"Host": "mxsa.mxbc.net",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"User-Agent": "okhttp/4.4.1",
"Pragma": "no-cache",
"Cache-Control": "no-cache"
}
data = get(url, headers=headers, params=params).json()
account = data.get('data').get('mobilePhone')
coin = data.get('data').get('customerPoint')
exp = data.get('data').get('growthValue')
level_exp = data.get('data').get('customerLevelVo').get('growthValueMax') - data.get('data').get('growthValue')
MXBC.msg += f"查询成功, 账号{account}, 共有雪王币{coin}, 共有成长值{exp}, 还差{level_exp}升级\n"
def main(self):
self.check_in()
self.get_userinfo()
if __name__ == '__main__':
token_list = environ.get("MXBC_TOKEN")
[MXBC(token).main() for token in token_list.split("#")]
if push:
send("蜜雪冰城签到", MXBC.msg)

View File

@@ -0,0 +1,174 @@
// # Source: https://github.com/sudojia/AutoTaskScript/blob/script/src/wx_mini/sudojia_mxbc.js
// # Raw: https://raw.githubusercontent.com/sudojia/AutoTaskScript/script/src/wx_mini/sudojia_mxbc.js
// # Repo: sudojia/AutoTaskScript
// # Path: src/wx_mini/sudojia_mxbc.js
// # UploadedAt: 2025-04-28T19:26:13+08:00
// # SHA256: 0c3119fed05ef054316041de922ab93ca91509c33cc39bea77ab72514ab23d89
// # Category: 微信小程序/抓包版
// # Evidence: appid/openid/session_key/encryptedData等小程序字段
//
/**
* 蜜雪冰城小程序
*
* 抓包 Hosthttps://mxsa.mxbc.net 获取请求头 Access-Token
* export MXBC_TOKEN = 'eyJ0xxxxxxxxxxxx'
* 多账号用 & 或换行
*
* @author Telegram@sudojia
* @site https://blog.imzjw.cn
* @date 2024/07/27
*
* const $ = new Env('蜜雪冰城')
* cron: 28 10 * * *
*/
const initScript = require('../utils/initScript')
const {$, notify, sudojia, checkUpdate} = initScript('蜜雪冰城');
const crypto = require('crypto');
const mxbcList = process.env.MXBC_TOKEN ? process.env.MXBC_TOKEN.split(/[\n&]/) : [];
let message = '';
// 接口地址
const baseUrl = 'https://mxsa.mxbc.net'
// appId
const appId = 'd82be6bbc1da11eb9dd000163e122ecb';
// 请求头
const headers = {
'Host': 'mxsa.mxbc.net',
'app': 'mxbc',
'appchannel': 'xiaomi',
'User-Agent': sudojia.getRandomUserAgent(),
'Content-Type': 'application/json',
'Accept': '*/*',
'Referer': `https://servicewechat.com/wx7696c66d2245d107/123/page-frame.html`,
'Accept-Encoding': 'gzip, deflate, br',
};
!(async () => {
await checkUpdate($.name, mxbcList);
console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);
for (let i = 0; i < mxbcList.length; i++) {
const index = i + 1;
headers['Access-Token'] = mxbcList[i];
$.isLogin = true;
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 getUserInfo();
if (!$.isLogin) {
console.error('Token 失效');
return;
}
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await signIn();
await $.wait(sudojia.getRandomWait(1e3, 2e3));
await getPoints();
}
/**
* 获取用户信息
*
* @return {Promise<void>}
*/
async function getUserInfo() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/api/v1/customer/info?appId=${appId}&t=${ts13()}&sign=${getSHA256withRSA(`appId=${appId}&t=${ts13()}`)}`, 'get', headers);
if (0 !== data.code) {
console.error(data.msg);
$.isLogin = false;
return;
}
console.log(`${data.data.mobilePhone}登陆成功~`);
message += `用户:${data.data.mobilePhone}\n`;
} catch (e) {
console.error(`获取用户信息时发生异常:${e}`);
$.isLogin = false;
}
}
/**
* 签到
*
* @return {Promise<void>}
*/
async function signIn() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/api/v1/customer/signin?appId=${appId}&t=${ts13()}&sign=${getSHA256withRSA(`appId=${appId}&t=${ts13()}`)}`, 'get', headers);
if (0 !== data.code) {
console.error(`签到失败:${data.msg}`);
return;
}
console.log(`签到成功,雪王币+${data.data.ruleValuePoint}`);
console.log(`已连续签到${data.data.ruleValueGrowth}`);
message += `签到成功,已连续签到${data.data.ruleValueGrowth}\n`;
} catch (e) {
console.error(`签到时发生异常:${e}`);
}
}
/**
* 获取雪王币
*
* @return {Promise<void>}
*/
async function getPoints() {
try {
const data = await sudojia.sendRequest(`${baseUrl}/api/v1/customer/info?appId=${appId}&t=${ts13()}&sign=${getSHA256withRSA(`appId=${appId}&t=${ts13()}`)}`, 'get', headers);
if (0 !== data.code) {
console.error(data.msg);
return;
}
console.log(`当前雪王币:${data.data.customerPoint}`);
message += `当前雪王币:${data.data.customerPoint}\n\n`;
} catch (e) {
console.error(`获取雪王币时发生异常:${e}`);
}
}
function getSHA256withRSA(content) {
const signer = crypto.createSign('RSA-SHA256').update(content);
const signature = signer.sign(privateKeyStr, 'base64');
return signature.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
}
function ts13() {
return Math.round(new Date().getTime()).toString();
}
const privateKeyStr = `
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCtypUdHZJKlQ9L
L6lIJSphnhqjke7HclgWuWDRWvzov30du235cCm13mqJ3zziqLCwstdQkuXo9sOP
Ih94t6nzBHTuqYA1whrUnQrKfv9X4/h3QVkzwT+xWflE+KubJZoe+daLKkDeZjVW
nUku8ov0E5vwADACfntEhAwiSZUALX9UgNDTPbj5ESeII+VztZ/KOFsRHMTfDb1G
IR/dAc1mL5uYbh0h2Fa/fxRPgf7eJOeWGiygesl3CWj0Ue13qwX9PcG7klJXfToI
576MY+A7027a0aZ49QhKnysMGhTdtFCksYG0lwPz3bIR16NvlxNLKanc2h+ILTFQ
bMW/Y3DRAgMBAAECggEBAJGTfX6rE6zX2bzASsu9HhgxKN1VU6/L70/xrtEPp4SL
SpHKO9/S/Y1zpsigr86pQYBx/nxm4KFZewx9p+El7/06AX0djOD7HCB2/+AJq3iC
5NF4cvEwclrsJCqLJqxKPiSuYPGnzji9YvaPwArMb0Ff36KVdaHRMw58kfFys5Y2
HvDqh4x+sgMUS7kSEQT4YDzCDPlAoEFgF9rlXnh0UVS6pZtvq3cR7pR4A9hvDgX9
wU6zn1dGdy4MEXIpckuZkhwbqDLmfoHHeJc5RIjRP7WIRh2CodjetgPFE+SV7Sdj
ECmvYJbet4YLg+Qil0OKR9s9S1BbObgcbC9WxUcrTgECgYEA/Yj8BDfxcsPK5ebE
9N2teBFUJuDcHEuM1xp4/tFisoFH90JZJMkVbO19rddAMmdYLTGivWTyPVsM1+9s
tq/NwsFJWHRUiMK7dttGiXuZry+xvq/SAZoitgI8tXdDXMw7368vatr0g6m7ucBK
jZWxSHjK9/KVquVr7BoXFm+YxaECgYEAr3sgVNbr5ovx17YriTqe1FLTLMD5gPrz
ugJj7nypDYY59hLlkrA/TtWbfzE+vfrN3oRIz5OMi9iFk3KXFVJMjGg+M5eO9Y8m
14e791/q1jUuuUH4mc6HttNRNh7TdLg/OGKivE+56LEyFPir45zw/dqwQM3jiwIz
yPz/+bzmfTECgYATxrOhwJtc0FjrReznDMOTMgbWYYPJ0TrTLIVzmvGP6vWqG8rI
S8cYEA5VmQyw4c7G97AyBcW/c3K1BT/9oAj0wA7wj2JoqIfm5YPDBZkfSSEcNqqy
5Ur/13zUytC+VE/3SrrwItQf0QWLn6wxDxQdCw8J+CokgnDAoehbH6lTAQKBgQCE
67T/zpR9279i8CBmIDszBVHkcoALzQtU+H6NpWvATM4WsRWoWUx7AJ56Z+joqtPK
G1WztkYdn/L+TyxWADLvn/6Nwd2N79MyKyScKtGNVFeCCJCwoJp4R/UaE5uErBNn
OH+gOJvPwHj5HavGC5kYENC1Jb+YCiEDu3CB0S6d4QKBgQDGYGEFMZYWqO6+LrfQ
ZNDBLCI2G4+UFP+8ZEuBKy5NkDVqXQhHRbqr9S/OkFu+kEjHLuYSpQsclh6XSDks
5x/hQJNQszLPJoxvGECvz5TN2lJhuyCupS50aGKGqTxKYtiPHpWa8jZyjmanMKnE
dOGyw/X4SFyodv8AEloqd81yGg==
-----END PRIVATE KEY-----
`;