在这个脚本出现之前就已经有很多类似的脚本了,而调用API的原因为了模拟有开发者在使用订阅免得微软不自动续费
当然,到今日微软的自动续费机制依然是个迷,所以我分享这个脚本的主要是因为我透过此脚本续费成功了。
效果演示
Telegram 频道: https://t.me/+mSLMW23v16AxNTA9
从 3月1日 开始执行到现在
续费原理
引用自 https://ednovas.gitbook.io/e5
使用E5开发者账号注册应用,并通过注册的应用调用Microsoft Graph API(调用Microsoft Graph API是判定开发活动的一种)来伪装开发者活动(简单来说就是假装你是开发者,然后调用API进行E5续订)
更多详细的原理可自行使用搜索引擎搜索 “E5 调用 API 原理“
准备材料
- 一个 Cloudflare 账号
- 一个 E5 账号
注意,下面演示的全部密钥和ID都是临时的,在此文章发表前已全部失效。
创建 Cloudflare Workers
随便填一个名字即可
然后按 继续使用 Free 计划 即可
成功后,你应能看见以下画面
创建一个服务
点击 创建服务 并输入一个名字,没有限制
选择 HTTP 处理程序 然后点击 创建服务
关闭 Routing
前往触发器,并选择 禁用路由,然后选择 取消部署
创建微软应用程序
在 应用注册
页面中,点击 新注册
| 名称 | 值 |
|---|---|
| 名称 | API Call Cloudflare |
| 受支持的帐户类型 | 仅此组织目录(仅 <组织名称> - 单一租户)中的帐户 |
| 重定向 URI (可选) | Web, http://localhost:42791/ |
填写后,按 注册
创建密钥
前往 证书和密码 页面,点击 `新客户端密码
截止期限最大值为两年,如需要更长时间请自行透过搜索引擎查看如何调整为永久
| 名称 | 值 |
|---|---|
| 说明 | Workers |
| 截止期限 | 24 个月 |
你应该能看到 值 和 机密 ID,请保存 值
| 名称 | 值 |
|---|---|
| 值 | S_N8Q~K6gj3hWVx36G.JuCE0f8boxoXUH7Gf-cSe |
添加权限
前往 API 权限,根据下图中的 API 添加权限
| 权限名称 | URL |
|---|---|
| Directory.Read.All | https://graph.microsoft.com/Directory.Read.All |
| Directory.ReadWrite.All | https://graph.microsoft.com/Directory.ReadWrite.All |
| Files.Read.All | https://graph.microsoft.com/Files.Read.All |
| Files.ReadWrite.All | https://graph.microsoft.com/Files.ReadWrite.All |
| Mail.Read | https://graph.microsoft.com/Mail.Read |
| Mail.ReadWrite | https://graph.microsoft.com/Mail.ReadWrite |
| MailboxSettings.Read | https://graph.microsoft.com/MailboxSettings.Read |
| MailboxSettings.ReadWrite | https://graph.microsoft.com/MailboxSettings.ReadWrite |
| offline_access | https://graph.microsoft.com/offline_access |
| Sites.Read.All | https://graph.microsoft.com/Sites.Read.All |
| Sites.ReadWrite.All | https://graph.microsoft.com/Sites.ReadWrite.All |
| User.Read | https://graph.microsoft.com/User.Read |
| User.ReadWrite.All | https://graph.microsoft.com/User.ReadWrite.All |
添加后,按一下 代表 <组织名称> 授予管理员同意
获取 refresh_token
前往 概述,把 应用程序(客户端) ID 保存下来
| 名称 | 值 |
|---|---|
| 应用程序(客户端) ID | 2d4599ba-57e1-44a3-9fcb-aa4e0d2e7755 |
请把 {{client_id}} 替换成 应用程序(客户端) ID 并在浏览器打开以下页面:
如果出现错误请再三检查URL是否输入正确,是否已经进行 url-encoded
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?client_id={{client_id}}&response_type=code&redirect_uri=http://localhost:42791&scope=https://graph.microsoft.com/offline_access
点击 接受 然后你会得到以下网址:
http://localhost:42791/?code=0.AXAAL9t9i7-ze0uADZmakODAWLqZRS3hV6NEn8uqTg0ud1VwABU.AQABAAIAAAD--DLA3VO7QrddgJg7Wevr9M5G7V4xymnWO2knhWvOk6aYPR4IlcbOq1D4Qt6nVa4gtz00NeYo1evTEKRUBk8STsarptgH-tFBPl9GfssTjgXJWra7_rgXIuezgNDsyaIxBU9BcmpUjIMw6_L4bp0JdJp57uJ9_qYvFvudptGXaWxwscypyGFopk_9q2Y2j1RuY17seLancbuRYzK_2ozTxwcAo3SFOYYDCEJZrRD1PgxJNqrDyW6j6eyNPwj9XnlOFyhtErJ6g5S2wKLonSIcWDE8ep6QJ5lTFPdLQm8B34kLzjC8y12kvGcdVPdb_WCoIymM2Y-cTDSlhhyCjB4uPVbsTei0tOvjl69byoR8dyUlwRYNJSFrdV79OJpJ3HntcOIqSaXqiOw-IqIRQ7ybijZzNSVzTWIorzGNOc-QJAen82o6d9oTkTr_QQ8QPWH53a2WUFMq7YQCZhsUYw_sbbIlbycmDiQQO41Neut1RniSJ8yG0LwPCh5XJSakhYV1KDHUGXnUrbZLoR8390nEL8scxqdMknC3-Pu4oR2-nTRMModj57hDCo4unmRuQs4WvfWYL6R-3DzDNVBgtHQ4TgGynXqqNDaBUaCH8hz-YKoeI3ynHI1GtDf_N2RoOg1UnisVyIjbyrjjp3IPAd_1IAA&session_state=52fd633e-7b30-4209-bb16-5d2873621057##
| Key | Value |
|---|---|
| code | 0.AXAAL9t9i7-ze0uADZmakODAWLqZRS3hV6NEn8uqTg0ud1VwABU.AQABAAIAAAD--DLA3VO7QrddgJg7Wevr9M5G7V4xymnWO2knhWvOk6aYPR4IlcbOq1D4Qt6nVa4gtz00NeYo1evTEKRUBk8STsarptgH-tFBPl9GfssTjgXJWra7_rgXIuezgNDsyaIxBU9BcmpUjIMw6_L4bp0JdJp57uJ9_qYvFvudptGXaWxwscypyGFopk_9q2Y2j1RuY17seLancbuRYzK_2ozTxwcAo3SFOYYDCEJZrRD1PgxJNqrDyW6j6eyNPwj9XnlOFyhtErJ6g5S2wKLonSIcWDE8ep6QJ5lTFPdLQm8B34kLzjC8y12kvGcdVPdb_WCoIymM2Y-cTDSlhhyCjB4uPVbsTei0tOvjl69byoR8dyUlwRYNJSFrdV79OJpJ3HntcOIqSaXqiOw-IqIRQ7ybijZzNSVzTWIorzGNOc-QJAen82o6d9oTkTr_QQ8QPWH53a2WUFMq7YQCZhsUYw_sbbIlbycmDiQQO41Neut1RniSJ8yG0LwPCh5XJSakhYV1KDHUGXnUrbZLoR8390nEL8scxqdMknC3-Pu4oR2-nTRMModj57hDCo4unmRuQs4WvfWYL6R-3DzDNVBgtHQ4TgGynXqqNDaBUaCH8hz-YKoeI3ynHI1GtDf_N2RoOg1UnisVyIjbyrjjp3IPAd_1IAA |
| session_state | 52fd633e-7b30-4209-bb16-5d2873621057 |
如果得到错误回应请参考微软的错误响应
在 Postman 中前往 Variables 然后填入要求的内容,记得按 Save 保存
如果没有 Postman 账号可以注册一个,很简单
接着,前往 Step 2 并按一下 Send
成功后,回应 200 OK 并返回 JSON内容
| Key | Value |
|---|---|
| token_type | Bearer |
| scope | profile openid email https://graph.microsoft.com/User.Read |
| expires_in | 3599 |
| access_token | eyJ... |
| refresh_token | 0.AX... |
弃 access_token 而取 refresh_token 者也。
添加账号
回到 Cloudflare,前往 Workers -> KV 并 创建命名空间
建议格式为 MS_<你的组织名称> 以方便管理
添加完成后,点击 查看
添加以下变量
| 密钥 | 值 |
|---|---|
| config_id | <应用程序(客户端) ID (client_id) 值> |
| config_key | <机密 ID 中的值> |
| refresh_token | <refresh_token 的值> |
绑定 KV 命名空间
完成后,前往 Workers -> 概述 -> 你的 Workers -> 设置 并点击 添加绑定
完成后点击 保存
添加脚本
回到 资源,点击 快速编辑 并粘贴以下内容
代码
可修改的部分:
| 值 | 说明 |
|---|---|
| botToken | 电报的机器人回报,如果不需要可以设置为空 "" |
| chatId | 电报的频道/个人对话 ID |
| NAMESPACES | Cloudflare 的命名空间,就是刚才设置的那个 |
保存后返回上一页
设置定时
到 触发器,选择 添加 Cron 触发器
按照以下图片设置即可
如一切正常,机器人应该会每 15分钟 发送一次信息,见效果演示
参考资料
版权声明:《 透过 Cloudflare Workers 实现微软E5的自动调用 API 》为吐司猫原创文章,转载请注明出处!
最后编辑:2022-5-26 17:05:38















提示:本文章评论功能已关闭