Files
qinglong/脚本库/微信小程序/抓包版/小米社区小程序签到/2025-06-28_小米社区小程序签到_3c6fe4df.py
2026-05-24 04:36:41 +00:00

129 lines
5.1 KiB
Python
Raw Permalink 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://gitee.com/jdqlscript/toulu/blob/main/%E5%B0%8F%E7%B1%B3%E7%A4%BE%E5%8C%BA%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AD%BE%E5%88%B0.py
# Raw: https://gitee.com/jdqlscript/toulu/raw/main/%E5%B0%8F%E7%B1%B3%E7%A4%BE%E5%8C%BA%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%AD%BE%E5%88%B0.py
# Repo: jdqlscript/toulu
# Path: 小米社区小程序签到.py
# UploadedAt: 2025-06-28T11:18:42+08:00
# SHA256: 3c6fe4dfa4e8ed6ec83d117595336e599be3b579d2ce6bbacfcca434a94ec800
# Category: 微信小程序/抓包版
# Evidence: appid/openid/session_key/encryptedData等小程序字段
import os
import requests
import json
#cookie在https://account.xiaomi.com/pass/sns/wxapp/v2/tokenLogin链接下
#变量名xmsq多账号使用&分割
def get_cookies_from_env():
"""
从环境变量中获取cookie值多账号使用&分割
"""
xmsq = os.getenv("xmsq")
if not xmsq:
raise ValueError("环境变量中未找到xmsq请确保已正确设置环境变量。")
return xmsq.split("&")
def get_login_data(cookie):
"""
发送登录请求,获取签到所需的参数
"""
url = "https://account.xiaomi.com/pass/sns/wxapp/v2/tokenLogin"
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"Cookie": cookie,
"Referer": "https://servicewechat.com/wx240a4a764023c444/3/page-frame.html",
"User-Agent": "Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.103 Mobile Safari/537.36 XWEB/1300333 MMWEBSDK/20241202 MMWEBID/3628 MicroMessenger/8.0.56.2800(0x28003858) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android",
"Accept-Encoding": "gzip, deflate, br"
}
data = {
"appid": "wx240a4a764023c444",
"sid": "miui_vip",
"authType": "0",
"callback": ""
}
response = requests.post(url, headers=headers, data=data)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"登录请求失败,状态码:{response.status_code}")
def checkin(miui_vip_ph, serviceToken, userId):
"""
执行签到操作
"""
url = "https://api.vip.miui.com/mtop/planet/vip/member/addCommunityGrowUpPointByActionV2"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c25)XWEB/11581",
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/x-www-form-urlencoded",
"xweb_xhr": "1",
"Origin": "https://servicewechat.com",
"Sec-Fetch-Site": "cross-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://servicewechat.com/wx240a4a764023c444/3/page-frame.html",
"Accept-Language": "zh-CN,zh;q=0.9"
}
cookies = {
"serviceToken": serviceToken,
"miui_vip_ph": miui_vip_ph,
"userId": str(userId)
}
params = {"miui_vip_ph": miui_vip_ph}
data = {"action": "WECHAT_CHECKIN_TASK"}
response = requests.post(url, headers=headers, cookies=cookies, params=params, data=data)
return response.json()
def handle_checkin_result(phone, result):
"""
处理签到结果并输出通知
"""
if result.get("status") == 200:
print(f"{phone} 签到成功!")
elif result.get("status") == -1 and result.get("message") == "加分失败":
print(f"{phone} 签到失败:今天已经签到过了。")
elif result.get("code") == 401:
print(f"{phone} 签到失败:参数错误或登录信息失效。")
else:
print(f"{phone} 签到失败:未知错误。返回结果:{result}")
def get_announcement():
"""
获取公告信息
"""
external_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt"
try:
response = requests.get(external_url)
if response.status_code == 200:
print(response.text.strip()) # 打印公告内容
print("公告获取成功,开始执行签到请求...")
else:
print(f"获取公告失败,状态码: {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"获取公告时发生错误: {e}")
def main():
try:
# 获取公告
get_announcement()
# 获取环境变量中的cookie
cookies = get_cookies_from_env()
for cookie in cookies:
login_data = get_login_data(cookie)
miui_vip_ph = login_data["miui_vip_ph"]
serviceToken = login_data["serviceToken"]
userId = login_data["passportProfile"]["userId"]
phone = login_data["passportProfile"]["phone"] # 获取 phone 值
# 执行签到
checkin_response = checkin(miui_vip_ph, serviceToken, userId)
handle_checkin_result(phone, checkin_response)
except Exception as e:
print(f"发生错误: {e}")
if __name__ == "__main__":
main()