diff --git a/小天鹅.py b/小天鹅.py new file mode 100644 index 0000000..0a5b17b --- /dev/null +++ b/小天鹅.py @@ -0,0 +1,175 @@ +#by:哆啦A梦 +#TL库:https://github.com/3288588344/toulu.git +#抓包midea.com域名中的imUserId和uid,格式:imUserId#uid +#将抓到的值填在环境变量XTE中,多账号换行分割 +#入口:微信小程序:全心全意小天鹅 + + +#公众号:哆啦A梦的藏宝箱 +import os +import requests +import json +import random +import time +#公众号:哆啦A梦的藏宝箱 +def check_environment_variable(): + """检查环境变量并解析账号信息""" + xte_env = os.environ.get("XTE") + if not xte_env: + print("错误:未设置 XTE 环境变量") + return None + + accounts = [] + for account_info in xte_env.split("\n"): + account_info = account_info.strip() + if not account_info: + continue + parts = account_info.split("#") + if len(parts) < 2: + print(f"错误:XTE 环境变量格式不正确,应为 imUserId#uid,当前值为:{account_info}") + return None + imUserId = parts[0] + uid = parts[1] + accounts.append((imUserId, uid)) + + if not accounts: + print("错误:未找到有效的账号信息") + return None + + return accounts + +def get_proclamation(): + """获取公告信息""" + external_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt" + try: + response = requests.get(external_url, timeout=10) + if response.status_code == 200: + print("\n" + "=" * 50) + print("📢 公告信息") + print("=" * 50) + print(response.text) + print("=" * 50 + "\n") + print("公告获取成功,开始执行任务...\n") + else: + print(f"⚠️ 获取公告失败,状态码: {response.status_code}") + except requests.exceptions.RequestException as e: + print(f"⚠️ 获取公告时发生错误: {e}") + +def send_sign_request(imUserId, uid): + """发送签到请求""" + url = "https://weixin.midea.com/mscp_mscp/api/cms_api/activity-center-im-service/im-svr/im/game/page/sign" + + headers = { + "Connection": "keep-alive", + "Content-Type": "application/json", + "appId": "QLZZ9Fr7w2to", + "apiKey": "3660663068894a0d9fea574c2673f3c0", + "vcode": "107da4f1bb8b63c7d4ea9c5537207086", + "Origin": "https://weixin.midea.com", + "X-Requested-With": "com.tencent.mm", + "Referer": "https://weixin.midea.com/apps/h5-pro-wx-interaction-marketing/", + "Accept-Encoding": "gzip, deflate, br, zstd", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + } + + data = { + "headParams": { + "language": "CN", + "originSystem": "MCSP", + "timeZone": "", + "userCode": "", + "tenantCode": "", + "userKey": "TEST_", + "transactionId": "" + }, + "pagination": None, + "restParams": { + "gameId": 9, + "actvId": "401668349848950807", + "rootCode": "XTE", + "appCode": "XTE_SHG", + "imUserId": imUserId, + "uid": uid, + "openId": "oOqmz4uVK1_2cXwnsVHDp1vicNNY", + "unionId": "o9wX6jllxZJZxZsI0awpJS1aC8W0" + } + } + + try: + response = requests.post(url, headers=headers, data=json.dumps(data)) + return response + except requests.exceptions.RequestException as e: + print(f"请求异常: {e}") + return None + +def process_response(index, imUserId, response): + """处理签到响应""" + if response is None: + print(f"账号 {index}: {imUserId} - 请求失败") + return + + if response.status_code != 200: + print(f"账号 {index}: {imUserId} - 请求失败,状态码: {response.status_code}") + print("响应内容:", response.text) + return + + try: + response_json = response.json() + except json.JSONDecodeError: + print(f"账号 {index}: {imUserId} - 响应内容不是 JSON 格式") + print("响应内容:", response.text) + return + + if response_json.get("code") != "000000": + error_msg = response_json.get("msg", "未知错误") + print(f"账号 {index}: {imUserId} - 签到失败: {error_msg}") + return + + data_content = response_json.get("data") + if not data_content: + print(f"账号 {index}: {imUserId} - 响应数据中未找到 data 字段") + return + + sign_result = data_content.get("result") + if sign_result: + print(f"账号 {index}: {imUserId} - 签到成功!") + prize_dto = data_content.get("prizeDto") + prize_name = prize_dto.get("name", "未知奖励") if prize_dto else "未知奖励" + print(f"获得奖励: {prize_name}") + else: + print(f"账号 {index}: {imUserId} - 今日已签到") + + consecutive_days = data_content.get("consecutiveDays", "1") + print(f"连续签到天数: {consecutive_days}") + +def main(): + # 获取公告 + get_proclamation() + + # 获取账号列表 + accounts = check_environment_variable() + if not accounts: + return + + # 对账号进行排序并标注序号 + accounts.sort() + if not accounts: + print("错误:未找到有效的账号信息") + return + + # 执行签到任务 + for index, (imUserId, uid) in enumerate(accounts, start=1): + print(f"正在处理账号 {index}: ") + response = send_sign_request(imUserId, uid) + process_response(index, imUserId, response) + print("-" * 50) +#公众号:哆啦A梦的藏宝箱 + # 添加随机延迟 + delay = random.randint(3, 10) # 随机延迟3到10秒 + if index < len(accounts): + print(f"随机延迟 {delay} 秒后处理下一个账号...") + time.sleep(delay) + +if __name__ == "__main__": + main() +#公众号:哆啦A梦的藏宝箱 \ No newline at end of file