office e5刷API脚本分享以及教程

发布于 2020-06-12  185 次阅读


原文地址 https://blog.432100.xyz/index.php/archives/50/

不保证一定能续订!!!
不保证一定能续订!!!
不保证一定能续订!!!
重要的事情说三遍,微软从未说过有一定的续订标准,所以不保证一定能续订,请不要在 e5 子号的 onedrive 存放重要数据,使用本脚本造成的一切后果概不负责。

最近 e5 订阅很火,但是玄学的续订方式也让人摸不着头脑,有的人说挂个 oneindex 就续订了,有的人说所有第三方程序都挂了一遍也没续订,所以我按照微软的官方文档写了一个刷 api 的脚本,原理很简单,就是重复调用 microsoft graph 的 api,一次调用 10 个 api,5 个 onedrive 的 api 还有 4 个 outlook 的 api, 剩下一个是组的 api,调用一次后延时等待五分钟再重复调用.
教程开始:

  1. 首先去 https://portal.azure.com/#home 注册一个应用, 这一步网上的教程实在是太多了, 我就不详细写了, 大致写一下流程
    先用 e5 管理员账号登录网站, 然后在主页找到 Azure Active Directory 点进去,再在左侧目录找到点击应用注册,再点上方的新注册就会跳出一个新建应用的界面,应用名字随意填写, 然后选择任何组织目录 (任何 Azure AD 目录 - 多租户) 中的帐户,重定向 url 选 web,填入http://localhost:53682/, 最后点注册即可
  2. 注册好应用会跳转到应用概述界面, 你会看到一个应用程序 (客户端) ID, 复制这个 Id 记录下来,后面要用到, 然后点击左侧目录的 API 权限, 依次点击添加权限Microsoft Graph委托的权限, 然后依次搜索以下这 12 个权限并勾选:

Files.Read.All Files.ReadWrite.All Sites.Read.All Sites.ReadWrite.All

User.Read.All User.ReadWrite.All Directory.Read.Al Directory.ReadWrite.All

Mail.Read Mail.ReadWrite MailboxSettings.Read MailboxSettings.ReadWrite

全部勾选好后点击底部的添加权限,然后又返回到了 API 权限界面,这时候你一定要再点一下代表xxx授予管理员同意, 不点这个, outlook api 会无法调用

  1. 点击左侧证书和密码, 点 + 新客户端密码, 说明随便填,年限随便选多久都行, 然后点添加, 添加好后, 客户端密码下面会有一个, 复制值下面的那一串代码,这是应用秘钥,后面会用到, 到这一步,注册应用已经结束了
    4.windows 下载 rclone 获取 token, 点击这里下载 rclone, 随意下载到电脑的任意一个目录, 下载后不要双击rclone.exe安装!, 而是在 rclone.exe 同目录下,按住shift后点鼠标右键,选择在此处打开cmd窗口在此处打开power shell窗口, 弹出窗口后, CMD 窗口就执行:
rclone authorize "onedrive" "之前保存的应用id" "之前保存的应用秘钥"

请自行将双引号内的替换为之前我们保存的应用 id 和秘钥, 示例:

rclone authorize "onedrive" "729xx16f-8x70-4xb8-8fd6-1xxx9b582b1f" "?@P@4u/fxxcxxx28:B-3i_QxxFxc6_ZO"

如果是 power shell 的窗口请执行:

.\rclone authorize "onedrive" "729xx16f-8x70-4xb8-8fd6-1xxx9b582b1f" "?@P@4u/fxxcxxx28:B-3i_QxxFxc6_ZO"

执行后电脑浏览器会弹出一个界面, 登陆自己的 e5 账号, 然后看到浏览器显示Success!,说明获取 token 成功了。然后我们返回的 cmd 窗口或者 power shell 窗口,你会看到一大段Paste the following into your remote machine --->开头,<---End paste结尾的代码,找到"refresh_token":"复制后面的代码直到","expiry",说白了就是复制 refresh_token,不要带双引号, 类似格式如下:

OAQABAAAAAABeAFzDwllzTYxxxx_qYbH8UALCVjtv_6YeHHOwXExxxxxywOKSg2Hd_GSjW1vcLzqLhDC51Sl4T2ZYfK1p64_ps3qidrodIZLkz-4f-21IfUUgQdEi-g-jIw-La9FjREuUuQnSSKgOlBAKpiwVjwPGdaO_G9yB5cLvX5zi3MZ-_ZwEVHEp-ldDGYqQiZFSnpD6G-cjQIzuN0w8lxl_9laIH0dkA1uUOKtA64qbC976OHSIaidaF4oZi_ntQIsMHWnUssYbR-2X446apxxMupLRM5oaHb8bKMTDlzk6_zUOw23y1jcb8gzyzL5IZdBVVX9UIuPrR-yuzyTd24v39OGk-I9xxhRms5vM6-vUPgxKzuIwFq_CYothdbo8ZvBuMJebl21D1UeaBerjPzxxxxxxxxxVQakxjMBHPC1ueyxR2UvRrlhHhNs8qYFBe5lzceofNWvy1QYRObT8DqCENyLa4Nb08jVTcA6Eh7oxkXtflg_xEY8ECRTWGIZ2qo4ziW70xxxxxxxvq6MCubQgOdt0qdWrc15LVV99YAl9L0KtC3ql0tMPVJBvodTNrvVqcxD-LNtnpxxx1J2tmDuc15xxxxxxTPp5MjXDhSbq8MACmRQh4dR09QqmqXps1c80pxyVkQbr8O669MQ1FMqlICTKJQ8c54_U9NWBo1rAU_zPmE841mDEFjy7dXakFkYR9IIthPNBr2nCQDdvjTitCiIwcT-NTitAd7TseSpiWg9zBsd6Q1OOcL83anZnaJ4sHy68XupeFydmjIYWZw83m96xRaw5MMHJAoyeTkwkHH9qqaSZ0mNM_PN09-tj6nUVYWf5lajMNzd_0GPfwqxxxx9LC0deo43zNTZq20f94_-HNTscKg5dJOA8jUeddxxxxLQa-ZXZV38-lxxxYL_ZDvPu5-0FP-aDTwvxxxx0F7g97o3wTrHSZw14Ra9uxniTh4gAA
  1. 然后我们终于可以下载脚本了,点击下载,先下载到本地,然后用 txt 方法打开 py 脚本,在脚本 11 行和 13 行的单引号内分别填入之前保存的应用 id 和应用秘钥,保存。保存好脚本后再在脚本同目录下创建一个空的 txt 文件,重命名为1.txt, 将第 4 步获取的 OAQ 开头的那一大段 token 复制进 1.txt,保存退出。
    1.py 和 1.txt 都保存好就可以上传到服务器了, 一定要保证 1.py 和 1.txt 两个文件在同目录, 如何上传文件到服务器自行百度。
  2. 在服务器上, 这里以 ubuntu 和 debian 为例, 你需要执行apt-get install python3安装 python3,已安装就不用装了, 执行apt-get install python3-pip来安装 pip3,执行pip3 install requests安装 requests,执行apt-get install screen -y来安装 screen 都装好后再执行screen -S api这时候会进入一个新窗口, 再通过 cd 命令进入脚本所在目录, 执行python3 1.py就正式开始刷脚本 api 了,如果成功,屏幕会输出成功调用信息, 因为我们开了 screen 屏幕,所以这个时候直接断开 ssh,它也会在后台运行, 下次登录 ssh 执行screen -r api就可以再看到调用信息了

如果报错或者有其它问题,请点击下面查看常见的报错以及答疑, 一步步按照教程来检查, 遇到报错建议先用翻译软件翻译一下错误,实在不会再私信我,尽量不要在博客评论,因为我可能很少看,最好在其它平台私信我!!!

  • 为什么报错

    Traceback (most recent call last):
    File "1.py", line 83, in
    main()
    File "1.py", line 40, in main
    access_token=gettoken(refresh_token)
    File "1.py", line 33, in gettoken
    refresh_token = jsontxt['refresh_token']
    KeyError: 'refresh_token'

答: 这是因为你使用 rclone 获取的 refresh_token 有错误, 大概率是你复制错了,一定要是 OAQ 开头的字符串, 并且不带双引号!

  • 使用 ubuntu 或 debian 也要下载 rclone.exe 获取 token 吗

    答: 要,rclone 的作用是获取 token,微软的 api 是要你带着 token 访问才能成功的, 所以无论哪个平台,都要使用 rclone.exe 获取 token

  • 一定要服务器吗?

    答: 不一定,只要能使用 python3 的平台都可以使用,你可以自己百度 windows 安装 python3, 或者安卓手机下载 termux 安装 python3, 具体怎么操作自行摸索

  • 脚本要挂多久?

    答: 微软没有个明确的指标,所以默认越久越好,所以建议 24 小时挂在服务器上

  • screen 是做什么的?

    答: screen 是服务器上用的,一般我们服务器执行脚本如果断开 ssh 脚本也会断掉,所以我们使用 screen -S api 开了一个新的名为 api 的屏幕,即使断开 ssh,脚本依然在后台运行,下一次连接 ssh 的时候执行 screen -r api 即可再查看脚本执行情况,如果是 windwos 挂脚本的话就不需要 screen


或许明日太阳西下倦鸟已归时