使用 GitHub Actions 无需服务器实现自动化阿里云盘的每日自动签到
概述
本文介绍了如何使用 ImYrS/aliyun-auto-signin 项目, 利用 GitHub 提供的 Actions 功能, 实现每日自动签到阿里云盘, 无需服务器, 无需额外的费用.
部署步骤
以下是关于Github注册的步骤:
- 访问注册页面GitHub 右上角Sign up按钮,点击它。
- 输入你的个人信息, 如用户名、邮箱和密码。
- 阅读并同意GitHub的服务条款和隐私政策,然后点击“Create an account”按钮。
- 你将会收到一封确认邮件,点击邮件里的链接以完成账户激活。
- 完成账户激活后,你可以在GitHub上使用自己的账户,在其中查看或创建代码仓库。
创建仓库
在 GitHub 创建
一个新仓库, 不要 Fork
仓库名称可以自己设置.
此处推荐使用 **公开** 仓库 (Public Repo). 因为按照 GitHub 计费说明 所述, 公开仓库的 Actions 不计费, 私人仓库会有运行时间限制. 即使是公开仓库, 配置中的机密参数也无法被其他人看到.
创建并配置 Actions 文件
在仓库中创建 .github/workflows/signin.yml
文件. 注意此处是纯英文路径, 不要使用浏览器翻译, 可能导致其他问题.
将如下内容原封不动的粘贴至该文件中, 保存.
1 | name: Aliyun Signin |
此时应如图所示
扫码获取阿里云盘 refresh token
(推荐)
打开 阿里云盘扫码登陆 点击登录并使用阿里云盘 App 扫码.
登陆时可能提示异地登陆, 这是因为登录请求实际上是由服务器发起. 由于受限于官方接口, 无法直接从浏览器发起请求. 服务器实际上不会保存任何隐私数据.
登陆完成后页面将会显示 refresh token
, 点击右侧按钮复制即可.
浏览器手动获取 refresh token
在电脑浏览器**使用无痕模式**打开 阿里云盘官网 并登录账号
按 F12 打开开发者工具, 在控制台内输入 console.log(JSON.parse(localStorage.token).refresh\_token)
或 console.log(JSON.parse(sessionStorage.token).refresh\_token)
即可看到当前帐号的 refresh token
.
**不要在浏览器点击退出登录按钮, 这可能会导致令牌提前失效.** 直接关闭无痕浏览器即可.
如果需要同时签到多个账号, 现在请保存好此令牌. 重复上述流程, 获取多个令牌并保存好.
配置 GitHub Secrets
在仓库上方的导航按钮中点击 Settings
, 依次进入 Secrets and Variables
-> Actions
中并点击 New repository secret
.
参考项目教程配置 Secrets
阿里云盘 refresh token
名称为 REFRESH\_TOKENS
, Secret 值就是刚才获取到的 refresh token
.
多账户同时签到时, 使用英文逗号将多个 token
隔开.
GitHub Personal Token
前往 Personal Access Tokens 配置页. 点击 Generate new token **创建 classic 类型**的 token.
名称 (Note) 自己填, 过期时长建议三个月以上. 时长越久, 越方便, 但也更不安全. **权限必须勾选 repo**.
创建后 token 只能查看一次, 务必复制保存好.
回到项目的 Secrets 配置页面并添加刚创建的 token, 名称为 GP\_TOKEN
配置推送渠道
至此, 必须添加的两个 secrets 已经添加完成了. 如果需要配置签到结果推送, 则按需配置选定的推送渠道需要的 secrets. 此处以 telegram
为例. 所有支持的推送渠道可以在项目说明中查看.
编辑 Actions 配置文件
将其中的 PUSH\_TYPES
值改为配置的推送渠道, 多个渠道使用英文逗号隔开.
按照项目说明中的提示和 Actions 配置文件, 照葫芦画瓢, 添加最相似的 secrets.
将 TELEGRAM\_BOT\_TOKEN
和 TELEGRAM\_CHAT\_ID
配置到 secrets 以后即可.
运行 Actions
默认情况下, 中国时间每天 22:40 左右会自动运行. 可以在项目上方导航栏中的 Actions 页面中查看. 也可以手动点击运行.
可以进入单次运行中查看运行结果.
如果配置了推送渠道, 也可以看到签到结果.
原理及接口
- 通过抓包阿里云盘 App 签到过程, 获取签到接口.
- 解析鉴权过程可知, 阿里云盘登录后获得
refresh\_token
和access\_token
两个令牌, 后者为短效 JWT Token 用于请求鉴权, 前者用于更新后者. - 使用爬虫完成上述请求
刷新令牌 **POST** https://auth.aliyundrive.com/v2/account/token
签到接口 **POST** https://member.aliyundrive.com/v1/activity/sign\_in\_list
兑换奖励接口 **POST** https://member.aliyundrive.com/v1/activity/sign\_in\_reward
接口详情可自行研读代码了解.
结尾
项目 Telegram 交流群 @aliyun\_auto\_signin
原文链接,本文仅用于交流学习和分享。