From a1ff2873247447b51faccff0fec33a5c35febce1 Mon Sep 17 00:00:00 2001 From: TardisX Date: Wed, 27 Oct 2021 00:35:08 +0800 Subject: [PATCH] V1.3.3 (#42) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 回帖签名算法 修改 使用面向对象编程重构代码 修改 发帖相关任务移至增强模式 修复 回帖失败的问题 Fixes #39 --- README.md | 23 ++++++++++---- config.env | 6 ++++ miuitask.py | 85 ++++++++++++++++++++++++++++++++++---------------- utils/utils.py | 4 +++ 4 files changed, 85 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index e0d1391..02bbf52 100644 --- a/README.md +++ b/README.md @@ -36,18 +36,19 @@ ### **项目介绍**: - [x] 可自动登录小米账号刷新社区 Cookie 实现自动化 -- [x] 可自动完成小米社区拔萝卜签到 +- [x] 可选择启用小米社区拔萝卜签到 - [x] 可自动完成以下小米社区KPI任务且不留下可见痕迹 - [x] 可完成 “在内测圈分享这个版本的体验” KPI任务 - [x] 可完成 “参与当前版本满意度投票” KPI任务 - - [x] 可完成 “在内测圈提交带日志的bug反馈” KPI任务 - [x] 可完成 “内测圈内互动(答疑、点赞、投票)” KPI任务 - [x] 可自动完成以下小米社区活跃分任务且不留下可见痕迹 - [x] 可完成 “加入1个圈子” 活跃分任务 - [x] 可完成 “关注1位用户” 活跃分任务 - [x] 可完成 “点赞1篇帖子” 活跃分任务 - - [x] 可完成 “发布1条评论” 活跃分任务 - - [x] 可完成 “发布1篇帖子” 活跃分任务 +- [x] 增强模式下可完成以下社区任务且不留下可见痕迹 + - [x] 可完成 “在内测圈提交带日志的bug反馈” KPI任务 + - [x] 可完成 “发布1条评论” 活跃分任务 + - [x] 可完成 “发布1篇帖子” 活跃分任务 ### **使用说明**: @@ -72,8 +73,13 @@ - 示例: `SIGN_IN='Y'` - 在配置文件 第19行 中配置是否开启 日志保存 - 启用后将按照日期保存到 logs 目录中 - - 如果想保存日志到文件,请将 N 改为 Y + - 如果想保存日志到文件,请将 `N` 改为 `Y` - 示例: `LOG_SAVE='Y'` +- 在配置文件 第25行 中配置是否开启 增强模式 + - 根据小米社区规则,非正常渠道发帖可能会导致账户封禁 + - 本脚本虽是模拟您的操作向社区发送请求,但仍不能保证绝对安全 + - 如果您愿意自行承担一切风险,请将 `N` 改为 `Y` + - 示例: `ENHANCED_MODE='Y'` - 确保网络正常且无代理服务器后,可以尝试在脚本目录下使用 `python3 miuitask.py` 命令运行脚本了 - GNU/Linux 和 MacOS 环境下首次运行前可能需要手动执行以下命令 ```bash @@ -93,9 +99,14 @@ 如果你要提交 Pull request,请确保你的代码风格和项目已有的代码保持一致,遵循 [PEP 8](https://www.python.org/dev/peps/pep-0008) ,变量命名清晰,有适当的注释。 - #### **更新说明**: + v1.3.3 + - 新增 回帖签名算法 + - 修改 使用面向对象编程重构代码 + - 修改 发帖相关任务移至增强模式 + - 修复 回帖失败的问题 + v1.3.2 - bugfix - 修复 在部分Python环境中,读取不到配置文件 - 修复 安卓的部分编辑器中 找不到隐藏文件的问题 diff --git a/config.env b/config.env index 8c7a468..5d7b08f 100644 --- a/config.env +++ b/config.env @@ -17,3 +17,9 @@ SIGN_IN='N' # 保存程序日志到文件 # 如果想保存日志到文件,请将 N 改为 Y LOG_SAVE='N' +# 增强模式可通过发帖获取更多内测分 +# 如果只需要保留内测资格,请不要开启本模式 +# 警告:根据小米社区规则,非正常渠道发帖可能会导致账户封禁 +# 本模式风险较大,因此存在一定的封号风险 +# 如果您愿意自行承担一切风险,请将 N 改为 Y +ENHANCED_MODE='N' diff --git a/miuitask.py b/miuitask.py index c213da7..4f64578 100644 --- a/miuitask.py +++ b/miuitask.py @@ -2,6 +2,7 @@ import requests import time import json +import hashlib from urllib import request from http import cookiejar @@ -74,16 +75,35 @@ def delete_post(self, tid): except Exception as e: w_log("删除内容出错,请手动删除") w_log(e) + + # 发帖签名 + def post_sign(self,data): + s_data = [] + for d in data: + s_data.append(str(d) + '=' + str(data[d])) + s_str = '&'.join(s_data) + w_log('签名原文:' + str(s_str)) + s_str = hashlib.md5(str(s_str).encode(encoding='UTF-8')).hexdigest() + '067f0q5wds4' + s_sign = hashlib.md5(str(s_str).encode(encoding='UTF-8')).hexdigest() + w_log('签名结果:' + str(s_sign)) + return s_sign, data['timestamp'] # 发帖 def new_announce(self, t_type): headers = { 'cookie': str(self.cookie) } + sign_data = { + 'announce': '{"textContent":"小米社区白屏","boards":[{"boardId":"' + self.board_id + '"}],"announceType":"' + str(t_type) + '","extraStatus":1,"extraA":"","extraB":null}', + 'timestamp': int(round(time.time() * 1000)) + } + sign = self.post_sign(sign_data) data = { - 'announce': '{"textContent":"小米社区闪退","boards":[{"boardId":"' + self.board_id + '"}],"announceType":"' + str( - t_type) + '"}', - 'miui_vip_ph': str(self.miui_vip_ph) + 'announce': sign_data['announce'], + 'pageType': '1', + 'miui_vip_ph': str(self.miui_vip_ph), + 'sign': sign[0], + 'timestamp': sign[1] } try: response = requests.post('https://api.vip.miui.com/api/community/post/add/newAnnounce', headers=headers, @@ -109,10 +129,19 @@ def add_comment_return_comment_info(self, tid): headers = { 'cookie': str(self.cookie) } + post_text = '小米社区白屏' + sign_data = { + 'postId': str(tid), + 'text': post_text, + 'timestamp': int(round(time.time() * 1000)) + } + sign = self.post_sign(sign_data) data = { 'postId': str(tid), - 'text': '小米社区闪退', - 'miui_vip_ph': str(self.miui_vip_ph) + 'text': post_text, + 'miui_vip_ph': str(self.miui_vip_ph), + 'sign': sign[0], + 'timestamp': sign[1] } try: response = requests.post('https://api.vip.miui.com/mtop/planet/vip/content/addCommentReturnCommentInfo', @@ -424,7 +453,7 @@ def process_exception(e: Exception): w_log('系统设置了代理,出现异常') -def start(miui_task: MIUITask, sign_in: bool): +def start(miui_task: MIUITask, sign_in: bool, enhanced_mode: bool): if miui_task.mi_login(): w_log("本脚本支持社区签到,因该功能存在风险默认禁用") @@ -432,23 +461,14 @@ def start(miui_task: MIUITask, sign_in: bool): if sign_in: w_log("风险功能提示:正在进行社区签到") miui_task.vip_sign_in() - miui_task.start_task("10106263") - w_log("正在完成BUG反馈任务") - miui_task.new_announce("7") - w_log("3秒后执行提建议任务") - miui_task.acquire_task("10106263") - time.sleep(3) - w_log("正在完成提建议任务") - miui_task.new_announce("6") w_log("正在完成满意度调查任务") miui_task.get_survey_id() w_log("正在完成点赞任务") miui_task.start_task("10106256") - for i in range(0, 5): - miui_task.thumb_up() - time.sleep(0.2) - miui_task.cancel_thumb_up() - time.sleep(0.2) + miui_task.thumb_up() + time.sleep(0.2) + miui_task.cancel_thumb_up() + time.sleep(0.2) miui_task.acquire_task("10106256") w_log("正在完成活跃分_关注任务") miui_task.start_task("10106261") @@ -464,17 +484,28 @@ def start(miui_task: MIUITask, sign_in: bool): w_log("5秒后领取活跃分_加圈任务") time.sleep(5) miui_task.acquire_task("10106262") - w_log("正在完成活跃分_发帖任务") - miui_task.start_task("10106265") - miui_task.new_announce("3") - w_log("5秒后领取活跃分_发帖任务") - time.sleep(5) - miui_task.acquire_task("10106265") + if enhanced_mode: + w_log("风险功能提示:增强模式已启用") + w_log("增强模式已启用,存在封号风险") + miui_task.start_task("10106263") + w_log("正在完成BUG反馈任务") + miui_task.new_announce("7") + w_log("3秒后执行提建议任务") + miui_task.acquire_task("10106263") + time.sleep(3) + w_log("正在完成提建议任务") + miui_task.new_announce("6") + w_log("正在完成活跃分_发帖任务") + miui_task.start_task("10106265") + miui_task.new_announce("3") + w_log("5秒后领取活跃分_发帖任务") + time.sleep(5) + miui_task.acquire_task("10106265") miui_task.get_score() def main(): - w_log("MIUITask_v1.3.2-fix") + w_log("MIUITask_v1.3.3") w_log('----------系统信息-开始-------------') system_info() w_log('----------系统信息-结束-------------') @@ -492,7 +523,7 @@ def main(): board_id = config.get('BOARD_ID') miui = MIUITask(mi_id, p_md5, l_ua, board_id) - start(miui, config.get('SIGN_IN')) + start(miui, config.get('SIGN_IN'), config.get('ENHANCED_MODE')) s_log() diff --git a/utils/utils.py b/utils/utils.py index aa408c4..55d7b62 100644 --- a/utils/utils.py +++ b/utils/utils.py @@ -46,6 +46,10 @@ def get_config() -> dict: config['SIGN_IN'] = True else: config['SIGN_IN'] = False + if config.get('ENHANCED_MODE').upper() in ('Y', 'YES'): + config['ENHANCED_MODE'] = True + else: + config['ENHANCED_MODE'] = False return config