mirror of
https://github.com/3288588344/toulu.git
synced 2025-12-16 15:00:14 +08:00
247 lines
9.3 KiB
Python
247 lines
9.3 KiB
Python
#by:哆啦A梦
|
||
#入口:http://api.0vsp.com/h5/wxa/link?sid=25424JXZCFp
|
||
#抓包breoplus.breo.cn的域名下的token,多账号换行分割
|
||
#账号变量名:BREO
|
||
|
||
|
||
import requests
|
||
import json
|
||
import os
|
||
import time
|
||
|
||
def get_random_one_word():
|
||
try:
|
||
response = requests.get("https://uapis.cn/api/say")
|
||
if response.status_code == 200:
|
||
return response.text.strip()
|
||
else:
|
||
return "无法获取一言"
|
||
except Exception as e:
|
||
print(f"获取一言时出错: {e}")
|
||
return "无法获取一言"
|
||
|
||
def get_proclamation():
|
||
primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt"
|
||
backup_url = "https://tfapi.cn/TL/tl.json"
|
||
try:
|
||
response = requests.get(primary_url, timeout=10)
|
||
if response.status_code == 200:
|
||
print("\n" + "=" * 50)
|
||
print("📢 公告信息")
|
||
print("=" * 35)
|
||
print(response.text)
|
||
print("=" * 35 + "\n")
|
||
print("公告获取成功,开始执行任务...\n")
|
||
return
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"获取公告时发生错误: {e}, 尝试备用链接...")
|
||
|
||
try:
|
||
response = requests.get(backup_url, timeout=10)
|
||
if response.status_code == 200:
|
||
print("\n" + "=" * 50)
|
||
print("📢 公告信息")
|
||
print("=" * 35)
|
||
print(response.text)
|
||
print("=" * 35 + "\n")
|
||
print("公告获取成功,开始执行任务...\n")
|
||
else:
|
||
print(f"⚠️ 获取公告失败,状态码: {response.status_code}")
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。")
|
||
|
||
def post_to_breo(token, content, title):
|
||
url = "https://breoplus.breo.cn/breo-app/communityBaseInfo/releasePost"
|
||
headers = {
|
||
"token": token,
|
||
"device-type": "Xiaomi",
|
||
"device-version": "10",
|
||
"channel": "Breo",
|
||
"version_code": "30201",
|
||
"version": "3.2.1",
|
||
"encrypt": "1",
|
||
"Content-Type": "application/json; charset=UTF-8"
|
||
}
|
||
data = {
|
||
"anonymoused": 1,
|
||
"content": content,
|
||
"expressText": "",
|
||
"images": [],
|
||
"subTitle": "",
|
||
"title": title,
|
||
"topicText": ""
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers, data=json.dumps(data))
|
||
if response.status_code == 200:
|
||
result = response.json()
|
||
if result.get("success", False):
|
||
print("✅ 发帖成功!")
|
||
print(f"帖子 ID: {result['result']['id']}")
|
||
print(f"帖子标题: {result['result']['title']}")
|
||
return result["result"]["id"]
|
||
else:
|
||
print(f"❌ 发帖失败,错误信息:{result.get('message', '未知错误')}")
|
||
return None
|
||
else:
|
||
print(f"❌ 请求失败,状态码:{response.status_code}")
|
||
return None
|
||
except Exception as e:
|
||
print(f"❌ 请求错误: {e}")
|
||
return None
|
||
|
||
def collect_post(token, post_id):
|
||
url = "https://breoplus.breo.cn/breo-app/communityBaseInfo/collect"
|
||
headers = {
|
||
"token": token,
|
||
"device-type": "Xiaomi",
|
||
"device-version": "10",
|
||
"channel": "Breo",
|
||
"version_code": "30201",
|
||
"version": "3.2.1",
|
||
"encrypt": "1",
|
||
"Content-Type": "application/json; charset=UTF-8"
|
||
}
|
||
data = {
|
||
"postId": post_id
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers, data=json.dumps(data))
|
||
if response.status_code == 200:
|
||
result = response.json()
|
||
if result.get("success", False):
|
||
print("✅ 收藏成功!")
|
||
print(f"获得点数: {result['result']['point']}")
|
||
print(f"成长值: {result['result']['grow']}")
|
||
else:
|
||
print(f"❌ 收藏失败,错误信息:{result.get('message', '未知错误')}")
|
||
else:
|
||
print(f"❌ 请求失败,状态码:{response.status_code}")
|
||
except Exception as e:
|
||
print(f"❌ 请求错误: {e}")
|
||
|
||
def comment_post(token, post_id):
|
||
for _ in range(2): # 评论2次
|
||
comment_content = get_random_one_word() # 使用随机一言作为评论内容
|
||
url = "https://breoplus.breo.cn/breo-app/communityBaseInfo/comment"
|
||
headers = {
|
||
"token": token,
|
||
"device-type": "Xiaomi",
|
||
"device-version": "10",
|
||
"channel": "Breo",
|
||
"version_code": "30201",
|
||
"version": "3.2.1",
|
||
"encrypt": "1",
|
||
"Content-Type": "application/json; charset=UTF-8"
|
||
}
|
||
data = {
|
||
"anonymoused": 0,
|
||
"commentText": comment_content,
|
||
"postId": post_id
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers, data=json.dumps(data))
|
||
if response.status_code == 200:
|
||
result = response.json()
|
||
if result.get("success", False):
|
||
print("✅ 评论成功!")
|
||
print(f"评论内容: {result['result']['rootOutVO']['commentText']}")
|
||
print(f"获得点数: {result['result']['point']}")
|
||
print(f"成长值: {result['result']['grow']}")
|
||
else:
|
||
print(f"❌ 评论失败,错误信息:{result.get('message', '未知错误')}")
|
||
else:
|
||
print(f"❌ 请求失败,状态码:{response.status_code}")
|
||
except Exception as e:
|
||
print(f"❌ 请求错误: {e}")
|
||
time.sleep(1) # 避免频繁请求
|
||
|
||
def browse_mall(token):
|
||
url = "https://breoplus.breo.cn/breo-app/user/po-task-info/mall"
|
||
headers = {
|
||
"token": token,
|
||
"device-type": "Xiaomi",
|
||
"device-version": "10",
|
||
"channel": "Breo",
|
||
"version_code": "30201",
|
||
"version": "3.2.1",
|
||
"encrypt": "1"
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers)
|
||
if response.status_code == 200:
|
||
result = response.json()
|
||
if result.get("success", False):
|
||
print("✅ 浏览商城成功!")
|
||
print(f"获得点数: {result['result']['point']}")
|
||
print(f"成长值: {result['result']['grow']}")
|
||
else:
|
||
print(f"❌ 浏览商城失败,错误信息:{result.get('message', '未知错误')}")
|
||
else:
|
||
print(f"❌ 请求失败,状态码:{response.status_code}")
|
||
except Exception as e:
|
||
print(f"❌ 请求错误: {e}")
|
||
|
||
def punch_in(token):
|
||
url = "https://breoplus.breo.cn/breo-app/user/po-task-info/punch"
|
||
headers = {
|
||
"Host": "breoplus.breo.cn",
|
||
"Connection": "keep-alive",
|
||
"Content-Length": "0",
|
||
"content-type": "application/json",
|
||
"token": token,
|
||
"charset": "utf-8",
|
||
"Referer": "https://servicewechat.com/wx61457400e4212cec/304/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/134.0.6998.136 Mobile Safari/537.36 XWEB/1340043 MMWEBSDK/20241202 MMWEBID/3628 MicroMessenger/8.0.56.2800(0x2800385E) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android",
|
||
"Accept-Encoding": "gzip, deflate, br"
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers)
|
||
if response.status_code == 200:
|
||
result = response.json()
|
||
if result.get("success", False):
|
||
print("✅ 签到成功!")
|
||
print(f"获得点数: {result['result']['point']}")
|
||
print(f"成长值: {result['result']['grow']}")
|
||
else:
|
||
print(f"❌ 签到失败,错误信息:{result.get('message', '未知错误')}")
|
||
else:
|
||
print(f"❌ 请求失败,状态码:{response.status_code}")
|
||
except Exception as e:
|
||
print(f"❌ 请求错误: {e}")
|
||
|
||
if __name__ == "__main__":
|
||
# 获取公告
|
||
get_proclamation()
|
||
|
||
# 从环境变量读取 token
|
||
tokens = os.getenv("BREO", "").splitlines()
|
||
|
||
if not tokens:
|
||
print("❌ 未检测到 账号信息,退出脚本。")
|
||
else:
|
||
print("=============== 开始执行任务 ===============")
|
||
for i, token in enumerate(tokens, 1):
|
||
if token.strip(): # 跳过空行
|
||
print(f"\n-------------- 账号 {i} 开始 --------------")
|
||
print("🚀 正在签到...")
|
||
punch_in(token)
|
||
|
||
print("\n📝 正在发布帖子...")
|
||
post_id = post_to_breo(token, "这是一个自动发布的帖子", "自动化测试")
|
||
if post_id:
|
||
print("\n⭐ 正在收藏帖子...")
|
||
collect_post(token, post_id)
|
||
|
||
print("\n💬 正在评论帖子...")
|
||
comment_post(token, post_id)
|
||
else:
|
||
print("❌ 发帖失败,跳过后续操作。")
|
||
|
||
print("\n🛒 正在浏览商城...")
|
||
browse_mall(token)
|
||
|
||
print(f"-------------- 账号 {i} 结束 --------------")
|
||
|
||
print("\n=============== 所有任务执行完毕 ===============")
|