Files
3288588344-toulu/Babycare.py
2025-04-27 09:21:51 +08:00

128 lines
4.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.
#by:哆啦A梦
#TL库
#入口:小程序-Babycare官方旗舰店
#抓包api.bckid.com.cn域名下的authorization多账号换行分割
import os
import requests
import json
# 从环境变量中获取 token支持多账号换行分割
tokens = os.environ.get('Babycare', '').split('\n')
# 定义 URL
url = "https://api.bckid.com.cn/operation/front/bonus/userSign/v3/sign"
primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt"
backup_url = "https://tfapi.cn/TL/tl.json"
# 定义请求头
headers = {
"Host": "api.bckid.com.cn",
"content-length": "2",
"content-type": "application/json",
"charset": "utf-8",
"referer": "https://servicewechat.com/wxab5642d7bced2dcc/447/page-frame.html",
"accept-encoding": "gzip, deflate, br"
}
def print_divider():
print("\n" + "=" * 35)
def print_account_info(account_num, token):
print_divider()
print(f"🤖 正在为账号 {account_num} 签到...")
print_divider()
def print_sign_success(account_num, result):
print_divider()
print(f"🎉 账号 {account_num} 签到成功!")
print(f"💪 最大连续签到天数: {result.get('maxSignDay', '信息获取失败')}")
print(f"📅 当前连续签到天数: {result.get('signDaysCount', '信息获取失败')}")
print(f"🎁 抽奖机会: {result.get('lotteryCount', '信息获取失败')}")
print_divider()
def print_already_signed(account_num):
print(f"👻 账号 {account_num} 今天已经签到过了,请明天再来!")
print_divider()
def print_sign_failed(account_num, message):
print(f"❌ 账号 {account_num} 签到失败!错误信息: {message}")
print_divider()
def print_empty_token(account_num):
print(f"⚠️ 账号 {account_num} 的 token 为空,跳过")
print_divider()
def print_request_error(account_num, error):
print(f"⚠️ 账号 {account_num} 请求异常: {error}")
print_divider()
def get_proclamation():
try:
print("\n" + "=" * 35)
print("📢 公告信息")
response = requests.get(primary_url, timeout=10)
if response.status_code == 200:
print(response.text)
print("=" * 35 + "\n")
print("公告获取成功,开始执行任务...\n")
return
else:
print(f"尝试获取公告,状态码: {response.status_code}, 尝试备用链接...")
except requests.exceptions.RequestException as e:
print(f"获取公告时发生错误: {e}, 尝试备用链接...")
try:
response = requests.get(backup_url, timeout=10)
if response.status_code == 200:
print(response.text)
print("=" * 35 + "\n")
print("公告获取成功,开始执行任务...\n")
else:
print(f"⚠️ 获取公告失败,状态码: {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。")
print_divider()
print("🚀 开始执行签到任务")
get_proclamation()
# 添加账号编号提示
for idx, token in enumerate(tokens, start=1):
if not token.strip():
print_empty_token(idx)
continue
print_account_info(idx, token)
headers["authorization"] = token.strip()
try:
response = requests.post(url, headers=headers, data=json.dumps({}))
if response.status_code == 200:
json_response = response.json()
if json_response.get("code") == "200":
print_sign_success(idx, json_response.get('body', {}))
elif json_response.get("code") == "400":
print_already_signed(idx)
else:
print_sign_failed(idx, json_response.get("message", "未知错误"))
else:
print_sign_failed(idx, f"HTTP状态码: {response.status_code}")
except requests.exceptions.RequestException as e:
print_request_error(idx, e)
except json.JSONDecodeError:
print_sign_failed(idx, "响应内容不是有效的 JSON 格式")
print("🏆 所有账号签到任务完成!")
print_divider()