129 lines
5.1 KiB
Python
129 lines
5.1 KiB
Python
# 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()
|