透过 Cloudflare Workers 实现微软E5的自动调用 API

在这个脚本出现之前就已经有很多类似的脚本了,而调用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 添加权限

添加后,按一下 代表 <组织名称> 授予管理员同意

获取 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分钟 发送一次信息,见效果演示

参考资料

发表评论 / Comment

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