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:
O1Si 2021-09-07 05:52:48 +08:00 committed by GitHub
parent 582ca157dc
commit 21f3dd37b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 143 additions and 83 deletions

16
.env Normal file
View 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'

View File

@ -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 中填写你常用浏览器的UAUA可在诸如 `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篇帖子” 活跃分任务功能
==========

View File

@ -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")

View File

@ -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
View File

@ -0,0 +1,2 @@
requests~=2.25.1
python-dotenv

View File

@ -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
View File

62
utils/utils.py Normal file
View 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'])