diff --git a/57Box.py b/57Box.py new file mode 100644 index 0000000..65dcf8b --- /dev/null +++ b/57Box.py @@ -0,0 +1,297 @@ +""" +57Box 1.10 +仅供学习交流,请在下载后的24小时内完全删除 请勿将任何内容用于商业或非法目的,否则后果自负。 +Author By Qim肖恩 +Updated By Huansheng +更新说明:修复sign接口问题 +玩法: +微信小程序 57Box 玩法:完成基础任务抽免费箱子 +登录微信小程序授权手机号然后下载APP设置密码 +export BOX_data=手机号@密码 +多账号用'===='隔开 例 账号1====账号2 +cron: 0 8 * * * +""" + +import urllib3 + +urllib3.disable_warnings() +lottery = 1 # 抽鞋盒开关 1开启 0关闭 +enabledTaskAndLottery = True +# 盲盒需要的矿石数量 +lotteryBoxPrize = 80 +# 进群密码 +joinGroupPassword = "123456" +import os +import time +import requests +import datetime +import hashlib + + +def getSign(userId): + def getDate(): + e = datetime.datetime.now() + a = e.year + t = e.month + l = e.day + n = e.weekday() + o = e.hour + i = e.minute + s = e.second + c = int(e.timestamp()) + r = str(e) + return { + "year": a, + "month": t, + "date": l, + "hours": o, + "minute": i, + "second": s, + "day": n, + "timeStamp": c, + "dateDateTime": r, + "dates": r.split(" ")[0].replace("/", "-"), + } + + s = getDate() + c = s["year"] + r = s["month"] + u = s["date"] + d = s["hours"] + m = s["minute"] + v = str(c) + "-" + str(r) + "-" + str(u) + " " + str(d) + ":" + str(m) + currentTime = int(datetime.datetime.strptime(v, "%Y-%m-%d %H:%M").timestamp()) + return hashlib.md5((str(currentTime) + userId + "box57").encode()).hexdigest() + + +# from dotenv import load_dotenv +# +# load_dotenv() +accounts = os.getenv("BOX_data") +print( + "原作者肖恩公告:" + requests.get("http://1.94.61.34:50/index.txt").content.decode("utf-8") +) +if accounts is None: + print("你没有填入BOX_data,咋运行?") + exit() +accounts_list = accounts.split("====") +num_of_accounts = len(accounts_list) +print(f"获取到 {num_of_accounts} 个账号") +for i, account in enumerate(accounts_list, start=1): + values = account.split("@") + if len(values) == 2: + mobile, password = values[0], values[1] + else: + print(f"\n{'=' * 8}第【{i}】个账号数据有误,请检查!该数据为:{account}") + continue + print(f"\n{'=' * 8}开始执行第【{i}】个账号[{mobile}]{'=' * 8}") + url = "https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=login&m=greatriver_lottery_operation" + headers = { + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Html5Plus/1.0 (Immersed/47) uni-app", + } + + data = { + "mobile": mobile, + "password": password, + "password2": "", + "code": "", + "invite_uid": "0", + "source": "app", + } + + response = requests.post(url, headers=headers, data=data).json() + if response["errno"] == 0: + # print(f"{response['data']}") + print(f"{response['message']}") + token = response["data"]["token"] + print(f"{'=' * 12}获取账号信息{'=' * 12}") + url = f"https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=getuserinfo&&token={token}" + data = { + "m": "greatriver_lottery_operation", + "title": "", + } + response = requests.post(url, headers=headers, data=data).json() + if response["errno"] == 999: + print(f"{response['message']}") + elif response["errno"] == 0: + userId = response["data"]["id"] + money = response["data"]["money"] + nickname = response["data"]["nickname"] + integral_str = response["data"]["integral"] + try: + integral = int(float(integral_str)) + print(f"Name:{nickname}---矿石余额:{integral}---水晶余额:{money}") + except ValueError: + print(f"无效的integral值: {integral_str}") + else: + print(f"错误未知{response}") + break + if enabledTaskAndLottery: + print(f"{'=' * 12}开始每日任务{'=' * 12}") + sign = getSign(userId) + time.sleep(3) + # 进群密码 + answerText = joinGroupPassword + response = requests.get( + f"https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=uptaskinfo&m=greatriver_lottery_operation&radomstr={sign}&id=26&answer={answerText}&token={token}&source=app", + headers=headers, + ).json() + state = "进群密码" + if response["errno"] == 999: + print(f"{state}---{response['message']}") + elif response["errno"] == 0: + print(f"{state}---{response['message']}") + else: + print(f"{state}错误未知{response}") + break + time.sleep(3) + response = requests.get( + f"https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=uptaskinfo&m=greatriver_lottery_operation&radomstr={sign}&id=30&answer=%E7%94%A8%E4%BA%8E%E5%95%86%E5%9F%8E%E5%92%8C%E6%8A%98%E6%89%A3%E5%95%86%E5%9F%8E%E5%85%91%E6%8D%A2%E5%95%86%E5%93%81&token={token}&source=app", + headers=headers, + ).json() + state = "每日答题(二)" + if response["errno"] == 999: + print(f"{state}---{response['message']}") + elif response["errno"] == 0: + print(f"{state}---{response['message']}") + else: + print(f"{state}错误未知{response}") + break + time.sleep(3) + response = requests.get( + f"https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=uptaskinfo&m=greatriver_lottery_operation&radomstr={sign}&id=42&answer=%E9%80%9A%E8%BF%87%E5%BC%80%E7%9B%92%E8%8E%B7%E5%BE%97%E6%AF%8F1000%E8%83%BD%E9%87%8F%E7%9F%B3%E5%8F%AF%E4%BB%A5%E5%85%91%E6%8D%A21%E6%B0%B4%E6%99%B6&token={token}&source=app", + headers=headers, + ).json() + state = "每日答题领福利(一)" + if response["errno"] == 999: + print(f"{state}---{response['message']}") + elif response["errno"] == 0: + print(f"{state}---{response['message']}") + else: + print(f"{state}错误未知{response}") + break + print(f"{'=' * 12}获取账号信息{'=' * 12}") + url = f"https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=getuserinfo&&token={token}" + data = { + "m": "greatriver_lottery_operation", + "title": "", + } + response = requests.post(url, headers=headers, data=data).json() + if response["errno"] == 999: + print(f"{response['message']}") + elif response["errno"] == 0: + # print("response:", response) + money = response["data"]["money"] + nickname = response["data"]["nickname"] + integral_str = response["data"]["integral"] + try: + integral = int(float(integral_str)) + print(f"Name:{nickname}---矿石余额:{integral}---水晶余额:{money}") + except ValueError: + print(f"无效的integral值: {integral_str}") + else: + print(f"错误未知{response}") + break + if lottery == 1: # 开始抽奖 + print(f"{'=' * 12}执行开鞋盒{'=' * 12}") + num = integral // lotteryBoxPrize + for i in range(num): + url = "https://www.57box.cn/app/index.php" + params = { + "i": "2", + "t": "0", + "v": "1", + "from": "wxapp", + "c": "entry", + "a": "wxapp", + "do": "openthebox", + "token": token, + "m": "greatriver_lottery_operation", + "box_id": "586", + "paytype": "1", + "answer": "", + "num": 1, + } + res = requests.post(url, headers=headers, data=params) + response = res.json() + if len(response["data"]["prizes_data"]): + print( + f"第{str(i)}次开盲盒结果:", + response["message"], + response["data"]["prizes_data"][0]["complete_prize_title"], + ) + else: + print(f"第{str(i)}次开盲盒结果:", response["data"]["message"]) + if response["errno"] == 0: + complete_prize_title = response["data"]["prizes_data"][0][ + "complete_prize_title" + ] + prize_market_price = response["data"]["prizes_data"][0][ + "prize_market_price" + ] + print( + f"{response['message']}---{complete_prize_title} 市场价:{prize_market_price}" + ) + elif response["errno"] == 999: + print(f"{response['message']}") + else: + print(f"错误未知{response}") + break + print(f"开盲盒操作执行完毕") + if num >= 1: + url = f"https://www.57box.cn/app/index.php?i=2&t=0&v=1&from=wxapp&c=entry&a=wxapp&do=uptaskinfo&&token={token}" + data = { + "m": "greatriver_lottery_operation", + "id": "39", + "answer": "", + } + response = requests.post(url, headers=headers, data=data).json() + state = "开盒看视频领矿石" + if response["errno"] == 999: + print(f"{state}---{response['message']}") + elif response["errno"] == 0: + print(f"{state}---{response['message']}") + else: + print(f"{state}错误未知{response}") + break + else: + print() + + elif lottery == 0: + print(f"{'=' * 12}不执行开鞋盒{'=' * 12}") + + # 查询奖品列表 + url = "https://www.57box.cn/app/index.php" + + params = { + "i": "2", + "t": "0", + "v": "1", + "from": "wxapp", + "c": "entry", + "a": "wxapp", + "do": "getmemberprizes", + "token": token, + "m": "greatriver_lottery_operation", + "page": "0", + "type": "1", + "prize_level": "1", + } + + response = requests.get(url, headers=headers, params=params).json() + + all_prizes = response["data"] + accountTotalPrize = 0 + for prize in all_prizes: + prize_market_price = prize["prize"]["prize_market_price"] + prize_title = prize["prize"]["complete_prize_title"] + prizes_count = prize["prizes_count"] + print(f"{prize_title} 数量:x{prizes_count} 单价:{prize_market_price}") + accountTotalPrize = accountTotalPrize + float(prize_market_price) * int( + prizes_count + ) + print(f"奖品总价:{accountTotalPrize}") + elif response["errno"] == 999: + print(f"{response['message']}") + else: + print(f"错误未知{response}")