Files
3288588344-toulu/breo.py
2025-04-25 11:45:39 +08:00

247 lines
9.3 KiB
Python
Raw 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梦
#入口: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=============== 所有任务执行完毕 ===============")