使用 GitHub Actions 无需服务器实现自动化阿里云盘的每日自动签到

概述

本文介绍了如何使用 ImYrS/aliyun-auto-signin 项目, 利用 GitHub 提供的 Actions 功能, 实现每日自动签到阿里云盘, 无需服务器, 无需额外的费用.

部署步骤

以下是关于Github注册的步骤:

  1. 访问注册页面GitHub 右上角Sign up按钮,点击它。
  2. 输入你的个人信息, 如用户名、邮箱和密码。
  3. 阅读并同意GitHub的服务条款和隐私政策,然后点击“Create an account”按钮。
  4. 你将会收到一封确认邮件,点击邮件里的链接以完成账户激活。
  5. 完成账户激活后,你可以在GitHub上使用自己的账户,在其中查看或创建代码仓库。

创建仓库

在 GitHub 创建一个新仓库, 不要 Fork仓库名称可以自己设置.

此处推荐使用 **公开** 仓库 (Public Repo). 因为按照 GitHub 计费说明 所述, 公开仓库的 Actions 不计费, 私人仓库会有运行时间限制. 即使是公开仓库, 配置中的机密参数也无法被其他人看到.

创建并配置 Actions 文件

在仓库中创建 .github/workflows/signin.yml 文件. 注意此处是纯英文路径, 不要使用浏览器翻译, 可能导致其他问题.

将如下内容原封不动的粘贴至该文件中, 保存.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: Aliyun Signin

on:
schedule:
# 每天国际时间 14:40 运行一次, 中国时间 22:40
- cron: '40 14 \* \* \*'
workflow\_dispatch:
jobs:
signin:
name: Aliyun Signin
runs-on: ubuntu-latest
steps:
- uses: ImYrS/aliyun-auto-signin@main
with:
REFRESH\_TOKENS: ${{ secrets.REFRESH\_TOKENS }}
GP\_TOKEN: ${{ secrets.GP\_TOKEN}}
PUSH\_TYPES: ''
DO\_NOT\_REWARD: 'false'
SERVERCHAN\_SEND\_KEY: ${{ secrets.SERVERCHAN\_SEND\_KEY }}
TELEGRAM\_BOT\_TOKEN: ${{ secrets.TELEGRAM\_BOT\_TOKEN }}
TELEGRAM\_CHAT\_ID: ${{ secrets.TELEGRAM\_CHAT\_ID }}
PUSHPLUS\_TOKEN: ${{ secrets.PUSHPLUS\_TOKEN }}
PUSHPLUS\_TOPIC: ${{ secrets.PUSHPLUS\_TOPIC }}
SMTP\_HOST: ${{ secrets.SMTP\_HOST }}
SMTP\_PORT: ${{ secrets.SMTP\_PORT }}
SMTP\_TLS: ${{ secrets.SMTP\_TLS }}
SMTP\_USER: ${{ secrets.SMTP\_USER }}
SMTP\_PASSWORD: ${{ secrets.SMTP\_PASSWORD }}
SMTP\_SENDER: ${{ secrets.SMTP\_SENDER }}
SMTP\_RECEIVER: ${{ secrets.SMTP\_RECEIVER }}
FEISHU\_WEBHOOK: ${{ secrets.FEISHU\_WEBHOOK }}
WEBHOOK\_URL: ${{ secrets.WEBHOOK\_URL }}
CQHTTP\_ENDPOINT: ${{ secrets.CQHTTP\_ENDPOINT }}
CQHTTP\_USER\_ID: ${{ secrets.CQHTTP\_USER\_ID }}
CQHTTP\_ACCESS\_TOKEN: ${{ secrets.CQHTTP\_ACCESS\_TOKEN }}

此时应如图所示

扫码获取阿里云盘 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\_TOKENTELEGRAM\_CHAT\_ID 配置到 secrets 以后即可.

运行 Actions

默认情况下, 中国时间每天 22:40 左右会自动运行. 可以在项目上方导航栏中的 Actions 页面中查看. 也可以手动点击运行.

可以进入单次运行中查看运行结果.

如果配置了推送渠道, 也可以看到签到结果.

原理及接口

  1. 通过抓包阿里云盘 App 签到过程, 获取签到接口.
  2. 解析鉴权过程可知, 阿里云盘登录后获得 refresh\_tokenaccess\_token 两个令牌, 后者为短效 JWT Token 用于请求鉴权, 前者用于更新后者.
  3. 使用爬虫完成上述请求

刷新令牌 **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

原文链接,本文仅用于交流学习和分享。