前言
Office365 E5申请好之后,如何稳定续期是个玄学问题,除了搭建各种列表程序调用api保持活跃以外,今天我们来试试利用E5SubBot来续期,至于Office365 E5 如何申请可以看这篇文章:
简介
🤖E5SubBot 是 Office365 E5 自动续订机器人,通过Telegram BOT自动调用Outlook API尝试自动续订E5订阅(每三小时调用一次) ,程序基于Golang + MySQL。
地址:https://github.com/iyear/E5SubBot
作者搭建的BOT: https://t.me/E5Sub_bot
特性:
- 自动续订E5订阅(可自定义的调用频率)
- 可管理的简易账户系统
- 完善的任务执行反馈
- 极为方便的授权方式
原理:由于E5订阅是开发者订阅,只要调用相关API,保持API的活跃就有可能续期,本程序就是通过调用 Outlook ReadMail API 实现玄学的续订方式,不保证续订效果。
使用
1、获取应用信息
- 进入https://azure.microsoft.com/zh-cn/
- 右上角
登录
- 点击右上角
门户
- 点击中间“管理
Azure Active Directory
下的查看
- 点击左侧箭头,在扩展栏里选择
应用注册
- 点击
新注册
- 名称随便填,选择“ 任何组织目录(任何Azure AD 目录- 多租户)中的帐户和个人Microsoft 帐户(例如,Skype、
Xbox)”,重定向URI 类型选Web 输入框填http://localhost/e5sub
- 记好应用程序(客户端) ID(即Client_id)
- 点击侧边栏的
证书和密码
,选择新客户端密码
- 说明随便填,截止期限自己选择,点
完成
- 保存好客户端密码!!!保存好客户端密码!!!保存好客户端密码!!!此密码只显示一
遍(客户端密码就是Client_secret)- 点击侧栏
API 权限
,点击添加权限
- 在右侧选
Microsoft Graph
- 点击
委托的权限
并在下面选择openid
、offline_access
、mail.read
、user.read
并添加- 点击
代表xxx 授予管理员同意
- 点击
是
并等待(不行就重复步骤15 和16 并刷新)
至此,azure 应用申请的步骤完成!
2、绑定E5SubBot
首先打开作者搭建的BOT:https://t.me/E5Sub_bot(或者在Telegram中搜索E5Sub_bot
)
- 发送
/bind
,不要点击链接 回复
client_id+空格+client_secret
(在前面步骤8 和步骤11中取得)- 打开授权链接,登录(建议用子账号,管理员也可以,最好用电脑)
- 等待跳转,复制网址(不是登录网址,是跳转后浏览器地址栏中的网址,以
http://localhost/e5sub?code=
开头的一串字符)
回复机器人刚才复制的
链接+空格+别名
(别名自己随便填写,方便记忆就好)如:http://localhost/e5sub?code=OAQABAAIAAAAGV_bv21oQQ4ROqh0...这里是一大串英文和符号...4578-9ecf-76da5caa6175 测试别名
看下图,就是整个绑定流程
BOT常用命令
/my
查看已绑定账户信息/bind
绑定新账户/unbind
解绑账户/export
导出账户信息(JSON)/help
帮助/task
手动执行一次任务(管理员 )/log
获取最近日志文件(管理员)
部署
docker环境
宝塔面板安装好docker管理器,安装好docker-compose,这个请自行搜索解决。
docker部署
使用如下命令开始部署:
#启动,你可以设置自己想要的时区
docker run --name e5sub -e TZ="Asia/Shanghai" --restart=always -d iyear/e5subbot:latest
#查看log
docker logs -f e5sub
#设置配置文件
docker cp PATH/TO/config.yml e5sub:/config.yml
docker restart e5sub
#导入数据库
docker cp PATH/TO/DATA.db e5sub:/data.db
docker restart e5sub
#备份数据库
docker cp e5sub:/data.db .
#备份配置文件
docker cp e5sub:/config.yml .
二进制文件
上面的docker部署好之后,在Releases页面下载对应系统的二进制文件,上传至服务器,
Windows: 在cmd中启动 E5SubBot.exe
Linux使用如下命令执行文件:
screen -S e5sub
chmod +x E5SubBot
./E5SubBot
(Ctrl A+D) //快捷键,切换出监控窗口
如果提示screen: command not found 命令不存在,可以执行:yum install screen
或 apt-get install screen
安装。
部署配置
docker安装是自动配置好config.yml
文件的,编码为UTF-8。配置模板的说明如下:
#bindmax,notice,admin,errlimit可热更新,直接更新config.yml保存即可
#更换为自己的BotToken
bot_token: xxxxx
#不需要socks5代理删去即可
socks5: 127.0.0.1:1080
#公告,合并至/help
notice: "第一行\n第二行"
#管理员tgid,前往https://t.me/userinfobot获取,用,隔开
#管理员权限: 手动调用任务,获得任务总反馈
admin: 66666,77777,88888
#任务最大出错次数,满后自动解绑账户并发送通知,无限次数将值改为负数(-1)即可
#以ms账户为单位,不会解绑所有账户(只解绑错误账户)
#主要为了减少资源浪费.bot重启后会清零所有错误次数
errlimit: 5
#API调用频率,使用cron表达式
cron: "1 */3 * * *"
#最大可绑定数
bindmax: 3
#mysql配置,请提前创建数据库
mysql:
host: 127.0.0.1
port: 3306
user: e5sub
password: e5sub
database: e5sub
注意:docker里面的mysql信息可以不用修改。
bindmax
,notice
,admin
,goroutine
,errlimit
可热更新,直接更新config.yml
保存即可
配置项 | 说明 | 默认值 |
---|---|---|
bot_token | 更换为自己的BotToken | - |
socks5 | Socks5 代理,不需要删去即可.例如:127.0.0.1:1080 | - |
notice | 公告.合并至/help | - |
admin | 管理员tgid ,前往 https://t.me/userinfobot 获取,用, 隔开;管理员权限: 手动调用任务,获得任务总反馈 | - |
goroutine | 并发数,不要过大 | 10 |
errlimit | 单账户最大出错次数,满后自动解绑单账户并发送通知,不限制错误次数将值改为负数(-1) 即可;bot重启后会清零所有错误次数 | 5 |
cron | API调用频率,使用cron表达式 | - |
bindmax | 最大可绑定数 | 5 |
mysql | mysql配置,请提前创建数据库(旧版本升级请设置table为users,否则读不到数据表) | - |
注意事项
更新时间与北京时间不符
更改服务器时区为Asia/Shanghai
,然后使用/task
手动执行一次任务刷新时间
绑定格式错误
不要带"+"号
错误:Can't create more than max_prepared_stmt_count statements (current value: 16382)
没有关闭db
导致触发mysql
并发上限,请更新至v0.1.9
长时间运行崩溃
疑似内存泄露,尚未解决,请自行采用守护进程运行或定时重启Bot
结语
如果不用docker安装,你还需要安装go语言环境,总的来说自己折腾还是有点门槛的,建议用作者的bot来续订。
续订的效果是个很玄学的问题,建议,在安装oneindex来保证下使用的频率。
这只是一种续订的方法,但是不敢保证效果,你只能试试看。
https://raw.githubusercontent.com/iyear/E5SubBot/master/docker-compose.yml
这个链接失效了
文章已更新,作者取消docker-compose部署方式,请使用docker run部署。当然你也可以手搓一个docker-compose.yml:滑稽:
已经用二进制文件搭好了:滑稽:
二进制挺好的,其实把E5SubBot写成服务,直接开机启动,就不用screen了。我自己就用这种方式,一直想写来着,就是太懒了,等我抽时间再更新下。:黑线:
博主你的外链失效了