From 16a4cd3a938786f8d2cb0414a79873c93a2c0b03 Mon Sep 17 00:00:00 2001 From: 3288588344 <127068117+3288588344@users.noreply.github.com> Date: Sat, 9 Aug 2025 18:17:05 +0800 Subject: [PATCH] Add files via upload --- STOKKE.PY | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 STOKKE.PY diff --git a/STOKKE.PY b/STOKKE.PY new file mode 100644 index 0000000..a9a55c2 --- /dev/null +++ b/STOKKE.PY @@ -0,0 +1,101 @@ +#抓包www.stokkeshop.cn域名下的Authori-zation值填到环境变量STOKKE中,多账号用&分割 +#入口:http://mx.qrurl.net/h5/wxa/link?sid=25726gMa4HG + + +import os +import re +import requests +from typing import List, Dict, Tuple + +# ---------- 通用请求头 ---------- +_BASE_HEADERS = { + "Host": "www.stokkeshop.cn", + "Connection": "keep-alive", + "content-type": "application/json", + "charset": "utf-8", + "Referer": "https://servicewechat.com/wxe232c36aaca3dc1a/34/page-frame.html", + "Accept-Encoding": "gzip, deflate, br" +} + +# ---------- 获取用户信息 ---------- +def _get_user_info(token: str) -> Dict[str, str]: + + url = "https://www.stokkeshop.cn/api/front/user" + headers = _BASE_HEADERS.copy() + headers["Authori-zation"] = token + try: + resp = requests.get(url, headers=headers, timeout=10) + resp.raise_for_status() + data = resp.json() + if data.get("code") != 200: + return {} + d = data["data"] + raw_phone = d["phone"] + masked = re.sub(r"(\d{3})\d{4}(\d{4})", r"\1****\2", raw_phone) + return {"nick": d["nickname"], "phone": masked, "integral": str(d["integral"])} + except Exception: + return {} + +# ---------- 签到 ---------- +def week_sign_all() -> None: + tokens = os.getenv("STOKKE", "").split("&") + if not tokens or tokens == [""]: + print("⚠️ 环境变量 STOKKE 为空,未配置任何 账号信息。") + + return + + url = "https://www.stokkeshop.cn/api/front/integral-task/finishWeekSign" + payload = {} + + for token in tokens: + token = token.strip() + if not token: + continue + + user = _get_user_info(token) + if not user: + print("❌ 获取用户信息失败,跳过当前账号。") + print("=" * 45) + continue + + headers = _BASE_HEADERS.copy() + headers["Authori-zation"] = token + try: + resp = requests.post(url, json=payload, headers=headers, timeout=10) + resp.raise_for_status() + data = resp.json() + ok = data.get("code") == 200 + print( + f"{'✅' if ok else '❌'} " + f"{user['nick']}({user['phone']}) 签到{'成功' if ok else '失败'}," + f"当前积分 {user['integral']}" + ) + print("=" * 45) + except Exception as e: + print( + f"❗ 网络异常:{user['nick']}({user['phone']}) 签到失败,当前积分 {user['integral']} " + f"({e})" + ) + +# -------------------- 公告 -------------------- +def get_proclamation(): + primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt" + backup_url = "https://tfapi.cn/TL/tl.json" + + for url in (primary_url, backup_url): + try: + r = requests.get(url, timeout=10) + if r.status_code == 200: + print("📢 公告信息") + print("=" * 45) + print(r.text) + print("=" * 45 + "\n") + return + except Exception as e: + continue + print("⚠️ 获取公告失败,跳过公告直接执行签到...\n") + +# ---------- 示例 ---------- +if __name__ == "__main__": + get_proclamation() + week_sign_all()