mirror of
https://github.com/0-8-4/miui-auto-tasks.git
synced 2024-11-21 22:58:06 +00:00
Feat new account config (#19)
* [ADD] requirements 包依赖描述文件 * Add account config * Integrated utils function * Improve login logic * Update README.md Co-authored-by: judy <ljd69154@liangjundi.cn>
This commit is contained in:
parent
582ca157dc
commit
21f3dd37b4
16
.env
Normal file
16
.env
Normal file
@ -0,0 +1,16 @@
|
||||
# 小米账户 ID
|
||||
MI_ID=''
|
||||
# 小米账户 密码 / MD5
|
||||
MI_PASSWORD=''
|
||||
# 登录所用的 User-Agent
|
||||
USER_AGENT=''
|
||||
# 开发版内测 5428803
|
||||
# 开发版公测 5433318
|
||||
# 稳定版内测 5462204
|
||||
# 目前测试三个中完成任意一个即可全部完成
|
||||
BOARD_ID=''
|
||||
# 小米社区签到
|
||||
# 警告:根据小米社区规则,非正常渠道签到可能会导致账户封禁
|
||||
# 本脚本虽是模拟您的操作向社区发送请求,但仍不能保证绝对安全
|
||||
# 如果您愿意自行承担一切风险,请将 N 改为 Y
|
||||
SIGN_IN='N'
|
77
README.md
77
README.md
@ -28,9 +28,9 @@
|
||||
https://www.python.org/downloads/
|
||||
```
|
||||
|
||||
2. Python3 安装完成之后,使用以下命令安装 Requests 模块
|
||||
2. Python3 安装完成之后,请在 **项目目录** 执行以下命令安装所需模块
|
||||
```bash
|
||||
pip install requests
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
注:你可能需要使用管理员权限运行命令行
|
||||
|
||||
@ -38,36 +38,44 @@
|
||||
==========
|
||||
|
||||
### **项目介绍**:
|
||||
- [x] 可自动登录小米账号刷新社区cookie实现自动化
|
||||
- [x] 可自动登录小米账号刷新社区 Cookie 实现自动化
|
||||
- [x] 可自动完成小米社区拔萝卜签到
|
||||
- [x] 可自动完成以下小米社区KPI任务且不留下可见痕迹
|
||||
- [x] 可完成“在内测圈分享这个版本的体验”KPI任务
|
||||
- [x] 可完成“参与当前版本满意度投票”KPI任务
|
||||
- [x] 可完成“在内测圈提交带日志的bug反馈”KPI任务
|
||||
- [x] 可完成“内测圈内互动(答疑、点赞、投票)”KPI任务
|
||||
- [x] 可完成 “在内测圈分享这个版本的体验” KPI任务
|
||||
- [x] 可完成 “参与当前版本满意度投票” KPI任务
|
||||
- [x] 可完成 “在内测圈提交带日志的bug反馈” KPI任务
|
||||
- [x] 可完成 “内测圈内互动(答疑、点赞、投票)” KPI任务
|
||||
- [x] 可自动完成以下小米社区活跃分任务且不留下可见痕迹
|
||||
- [x] 可完成“加入1个圈子”活跃分任务
|
||||
- [x] 可完成“关注1位用户”活跃分任务
|
||||
- [x] 可完成“点赞1篇帖子”活跃分任务
|
||||
- [x] 可完成“发布1条评论”活跃分任务
|
||||
- [x] 可完成“发布1篇帖子”活跃分任务
|
||||
- [x] 可完成 “加入1个圈子” 活跃分任务
|
||||
- [x] 可完成 “关注1位用户” 活跃分任务
|
||||
- [x] 可完成 “点赞1篇帖子” 活跃分任务
|
||||
- [x] 可完成 “发布1条评论” 活跃分任务
|
||||
- [x] 可完成 “发布1篇帖子” 活跃分任务
|
||||
|
||||
==========
|
||||
|
||||
### **使用说明**:
|
||||
- 使用你喜爱的编辑器打开 `miuitask.py` 及 `passwd2md5.py`
|
||||
- 在脚本 Line10 中填写你的MID
|
||||
- 请注意MID不是手机号或邮箱
|
||||
- 示例: `mid = '123456'`
|
||||
- 在脚本 Line12 中填写小米账号密码使用MD5加密后的密文
|
||||
- MD5并不安全,请不要在任何地方暴露密文
|
||||
- 请编辑使用随附的"passwd2md5.py"文件本地进行md5转换
|
||||
- 在线转换可能不正确或导致密码泄露,因此不建议使用在线工具转换
|
||||
- 在脚本 Line19 中填写你常用浏览器的UA,UA可在诸如 `https://ie.icoa.cn` 等类似的网站查看
|
||||
- 示例:` lUa = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73'`
|
||||
- 请务必先使用这个浏览器登录`https://account.xiaomi.com`
|
||||
- 使用你偏好的编辑器打开配置文件 `.env`
|
||||
- 在配置文件 第2行 中填写你的 小米 ID
|
||||
- 请注意 小米 ID 不是手机号或邮箱
|
||||
- 示例: `MI_ID='123456'`
|
||||
- 在配置文件 第4行 中填写小米账号密码 或 MD5 加密后的密文
|
||||
- 示例: `MI_PASSWORD='654321'`
|
||||
- 示例: `MI_PASSWORD='C33367701511B4F6020EC61DED352059'`
|
||||
- 允许使用 MD5 登录,便于代理他人操作
|
||||
- 在配置文件 第6行 中填写你常用浏览器的UA,可在诸如 `https://ie.icoa.cn` 等类似的网站查看
|
||||
- 示例:` USER_AGENT='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73'`
|
||||
- 请务必先使用这个浏览器登录 `https://account.xiaomi.com`
|
||||
- 在配置文件 第11行 中填写你要完成的内测任务类型
|
||||
- 开发版内测 `5428803` 开发版公测 `5433318` 稳定版内测 `5462204`
|
||||
- 示例: `BOARD_ID='5428803'`
|
||||
- 在配置文件 第16行 中配置是否开启 社区签到
|
||||
- 根据小米社区规则,非正常渠道签到可能会导致账户封禁
|
||||
- 本脚本虽是模拟您的操作向社区发送请求,但仍不能保证绝对安全
|
||||
- 如果您愿意自行承担一切风险,请将 `N` 改为 `Y`
|
||||
- 示例: `SIGN_IN='Y'`
|
||||
- 确保网络正常且无代理服务器后,可以尝试在脚本目录下使用 `python3 miuitask.py` 命令运行脚本了
|
||||
- GNU/Linux和MacOS环境下首次运行前可能需要手动执行以下命令
|
||||
- GNU/Linux 和 MacOS 环境下首次运行前可能需要手动执行以下命令
|
||||
```bash
|
||||
chmod +x passwd2md5.py
|
||||
chmod +x miuitask.py
|
||||
@ -77,34 +85,41 @@
|
||||
|
||||
#### **其他**:
|
||||
* 在使用本脚本时请临时关闭网络代理工具及广告拦截程序
|
||||
* 在服务器上使用前建议先使用服务器IP登录`https://account.xiaomi.com`
|
||||
* 在服务器上使用前建议先使用服务器IP登录 `https://account.xiaomi.com`
|
||||
* 建议配合 Python3 及 Crontab 使用
|
||||
* **欢迎提供有关的思路,提交BUG以及更多完成社区其他任务方式,我们会认真对待~**
|
||||
|
||||
#### **贡献**:
|
||||
|
||||
如果你在使用过程中发现任何问题,可以 [提交 issue](https://github.com/0-8-4/miui-auto-tasks/issues/new) 或自行 fork 修改后提交 pull request。
|
||||
如果你在使用过程中发现任何问题,可以 [提交 issue](https://github.com/0-8-4/miui-auto-tasks/issues/new) 或自行 Fork 修改后提交 Pull request。
|
||||
|
||||
如果你要提交 pull request,请确保你的代码风格和项目已有的代码保持一致,遵循 [PEP 8](https://www.python.org/dev/peps/pep-0008) ,变量命名清晰,有适当的注释。
|
||||
如果你要提交 Pull request,请确保你的代码风格和项目已有的代码保持一致,遵循 [PEP 8](https://www.python.org/dev/peps/pep-0008) ,变量命名清晰,有适当的注释。
|
||||
|
||||
==========
|
||||
|
||||
#### **更新说明**:
|
||||
|
||||
v1.3 :
|
||||
- 增加 独立配置文件
|
||||
- 增加 密码登陆方式
|
||||
|
||||
v1.2.3 :
|
||||
- 符合 [PEP 8](https://www.python.org/dev/peps/pep-0008) 代码风格
|
||||
|
||||
v1.2.2 :
|
||||
- 增加 输出系统信息到控制台
|
||||
|
||||
v1.2.1 :
|
||||
- 默认关闭“社区拔萝卜签到”功能
|
||||
- 默认关闭 “社区拔萝卜签到” 功能
|
||||
- 根据小米社区规则,非正常渠道签到**一经发现可能会导致账户封禁**
|
||||
- 如您愿意承担一切可能的后果,可根据脚本 Line397 下方的说明开启功能
|
||||
- 如您愿意承担一切可能的后果,请根据 [使用说明](#使用说明) 开启功能
|
||||
|
||||
v1.2.0 :
|
||||
- 增加“社区拔萝卜签到”功能
|
||||
- 增加 “社区拔萝卜签到” 功能
|
||||
|
||||
v1.1.0 :
|
||||
- 增加领取延迟保证成功率
|
||||
- 增加完成“发布1篇帖子”活跃分任务功能
|
||||
- 增加完成 “发布1篇帖子” 活跃分任务功能
|
||||
|
||||
==========
|
||||
|
||||
|
38
miuitask.py
38
miuitask.py
@ -2,36 +2,31 @@
|
||||
import requests
|
||||
import time
|
||||
import json
|
||||
import system_info
|
||||
|
||||
from urllib import request
|
||||
from http import cookiejar
|
||||
from utils.utils import system_info, get_config, w_log, conf_check
|
||||
|
||||
|
||||
# Config
|
||||
config = get_config()
|
||||
# 小米ID
|
||||
mid = ''
|
||||
mi_id = config.get('MI_ID')
|
||||
# 小米账号的密码MD5值,请使用"passwd2md5.py"转换
|
||||
p_md5 = ''
|
||||
# 避免登录失败,如果上面的md5中有小写字母,转换为大写
|
||||
p_md5 = p_md5.upper()
|
||||
p_md5 = config.get('MI_PASSWORD').upper()
|
||||
# 如果登录一直需要短信验证码,在此填入设备id(在account.xiaomi.com的cookie中寻找deviceId)
|
||||
dev_id = ''
|
||||
# 常用浏览器UA
|
||||
# 需要改成你自己常用的浏览器的UA
|
||||
l_ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 ' \
|
||||
'Safari/537.36 Edg/92.0.902.73 '
|
||||
l_ua = config.get('USER_AGENT')
|
||||
# 开发版内测5428803 开发版公测5433318 稳定版内测5462204 目前测试三个中完成任意一个即可全部完成
|
||||
board_id = '5428803'
|
||||
board_id = config.get('BOARD_ID')
|
||||
# 留空
|
||||
cookie = ''
|
||||
# 留空
|
||||
miui_vip_ph = ''
|
||||
|
||||
|
||||
def w_log(text):
|
||||
now_localtime = time.strftime("%H:%M:%S", time.localtime())
|
||||
print(now_localtime + ' | ' + str(text))
|
||||
|
||||
|
||||
def thumb_up():
|
||||
headers = {
|
||||
'cookie': str(cookie)
|
||||
@ -374,7 +369,7 @@ def mi_login():
|
||||
'%2525252Fmio%2525252Fmio%2525252FinternalTest%2525253Fref%2525253Dhomepage%26sid%3Dmiui_vip',
|
||||
'sid': 'miui_vip',
|
||||
'_sign': 'L+dSQY6sjSQ/CRjJs4p+U1vNYLY=',
|
||||
'user': str(mid),
|
||||
'user': str(mi_id),
|
||||
'cc': '+86',
|
||||
'hash': str(p_md5),
|
||||
'_json': 'true'
|
||||
@ -406,19 +401,20 @@ def mi_login():
|
||||
if __name__ == "__main__":
|
||||
w_log("MIUITask_v1.2.2")
|
||||
w_log('----------系统信息-开始-------------')
|
||||
system_info.system_info()
|
||||
system_info()
|
||||
w_log('----------系统信息-结束-------------')
|
||||
w_log("项目地址:https://github.com/0-8-4/miui-auto-tasks")
|
||||
w_log("欢迎star,感谢東雲研究所中的大佬")
|
||||
w_log('----------检测配置文件-------------')
|
||||
conf_check(config)
|
||||
w_log('----------------------------------')
|
||||
w_log("开始登录小米账号")
|
||||
if mi_login():
|
||||
w_log("本脚本支持社区签到,因该功能存在风险默认禁用")
|
||||
w_log("如您愿意承担一切可能的后果,可编辑脚本手动打开该功能")
|
||||
# wLog("风险功能提示:正在进行社区签到")
|
||||
# vipsignin()
|
||||
# 警告:根据小米社区规则,非正常渠道签到可能会导致账户封禁
|
||||
# 本脚本虽是模拟您的操作向社区发送请求,但仍不能保证绝对安全
|
||||
# 如果您愿意自行承担一切风险,删去Line400和401"#"即可
|
||||
w_log("如您愿意承担一切可能的后果,可编辑配置文件手动打开该功能")
|
||||
if config.get('SIGN_IN'):
|
||||
w_log("风社险功能提示:正在进行区签到")
|
||||
vip_sign_in()
|
||||
start_task("10106263")
|
||||
w_log("正在完成BUG反馈任务")
|
||||
new_announce("7")
|
||||
|
@ -1,8 +0,0 @@
|
||||
from hashlib import md5
|
||||
|
||||
mi_passwd = 'my_password'
|
||||
# 请将"my_password"改为你的小米账号密码
|
||||
md5_mi_passwd = md5(mi_passwd.encode('utf8')).hexdigest()
|
||||
# 利用hashlib模块本地计算md5
|
||||
print(md5_mi_passwd)
|
||||
# 输出
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
requests~=2.25.1
|
||||
python-dotenv
|
@ -1,23 +0,0 @@
|
||||
import platform
|
||||
import miuitask
|
||||
from urllib.request import getproxies
|
||||
|
||||
|
||||
def show_info(tip, info):
|
||||
return "{}: {}".format(tip, info)
|
||||
|
||||
|
||||
def system_info():
|
||||
miuitask.w_log(show_info("系统及版本信息", platform.platform()))
|
||||
miuitask.w_log(show_info('系统版本号', platform.version()))
|
||||
miuitask.w_log(show_info('系统名称', platform.system()))
|
||||
miuitask.w_log(show_info('系统位数', platform.architecture()))
|
||||
miuitask.w_log(show_info('计算机类型', platform.machine()))
|
||||
miuitask.w_log(show_info('处理器类型', platform.processor()))
|
||||
miuitask.w_log(show_info('Python版本', str(platform.python_version()) + ' ' + str(platform.python_build())))
|
||||
if getproxies():
|
||||
miuitask.w_log(show_info('系统代理', getproxies()))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
system_info()
|
0
utils/__init__.py
Normal file
0
utils/__init__.py
Normal file
62
utils/utils.py
Normal file
62
utils/utils.py
Normal file
@ -0,0 +1,62 @@
|
||||
import time
|
||||
import platform
|
||||
|
||||
from hashlib import md5
|
||||
from dotenv import dotenv_values
|
||||
from urllib.request import getproxies
|
||||
|
||||
|
||||
def md5_crypto(passwd: str) -> str:
|
||||
return md5(passwd.encode('utf8')).hexdigest()
|
||||
|
||||
|
||||
def show_info(tip, info):
|
||||
return "{}: {}".format(tip, info)
|
||||
|
||||
|
||||
def system_info():
|
||||
w_log(show_info("系统及版本信息", platform.platform()))
|
||||
w_log(show_info('系统版本号', platform.version()))
|
||||
w_log(show_info('系统名称', platform.system()))
|
||||
w_log(show_info('系统位数', platform.architecture()))
|
||||
w_log(show_info('计算机类型', platform.machine()))
|
||||
w_log(show_info('处理器类型', platform.processor()))
|
||||
w_log(show_info('Python版本', str(platform.python_version()) + ' ' + str(platform.python_build())))
|
||||
if getproxies():
|
||||
w_log(show_info('系统代理', getproxies()))
|
||||
|
||||
|
||||
def get_config() -> dict:
|
||||
config = dotenv_values(".env")
|
||||
passwd = config.get('MI_PASSWORD')
|
||||
if len(passwd) != 32:
|
||||
config['MI_PASSWORD'] = md5_crypto(passwd)
|
||||
if config.get('SIGN_IN').upper() in ('Y', 'YES'):
|
||||
config['SIGN_IN'] = True
|
||||
return config
|
||||
|
||||
|
||||
def w_log(text):
|
||||
now_localtime = time.strftime("%H:%M:%S", time.localtime())
|
||||
print(now_localtime + ' | ' + str(text))
|
||||
|
||||
|
||||
def conf_check(config: dict):
|
||||
if not config.get('MI_ID'):
|
||||
w_log('小米账户 ID 未配置')
|
||||
exit(127)
|
||||
if not config.get('MI_PASSWORD'):
|
||||
w_log('小米账户 密码 / MD5 未配置')
|
||||
exit(127)
|
||||
if not config.get('USER_AGENT'):
|
||||
w_log('User-Agent 未配置')
|
||||
exit(127)
|
||||
if not config.get('BOARD_ID'):
|
||||
w_log('测试类型 ID 未配置')
|
||||
exit(127)
|
||||
w_log('.env 已配置')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(get_config())
|
||||
# print(get_config()['MI_PASSWORD'])
|
Loading…
Reference in New Issue
Block a user