更新

2023-09-22 由于仓库遭到 GitHub 封禁, 本文所述方法已失效. 请使用新签到平台, 支持 基础签到 + 任务签到 + 活动自动完成.

概述

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

此文默认你知道:

  1. GitHub 是什么, 如何访问及其基础知识
  2. 阿里云盘签到的相关内容

部署步骤

创建仓库

在 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

本文仅用于交流学习和分享.