Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 46 additions & 7 deletions .github/workflows/glados.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,69 @@
name: GLaDOS Auto Checkin

on:
workflow_dispatch:
workflow_dispatch: # 手动触发
schedule:
- cron: '0 4 * * *'
- cron: '0 4 * * *' # 每日 UTC 4 点签到(北京时间 12 点)
- cron: '0 0 1 * *' # 每月 1 号保活空提交

jobs:
checkin:
name: GLaDOS 签到
runs-on: ubuntu-latest
timeout-minutes: 15
concurrency:
group: glados-checkin
cancel-in-progress: false

permissions:
contents: read

steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.8'
python-version: '3.11'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install requests
run: pip install requests

- name: Run checkin
run: python checkin.py
env:
COOKIES: ${{ secrets.COOKIES }}
SENDKEY: ${{ secrets.SENDKEY }}
SERVERCHAN_KEY: ${{ secrets.SERVERCHAN_KEY }}
TG_BOT_TOKEN: ${{ secrets.TG_BOT_TOKEN }}
TG_CHAT_ID: ${{ secrets.TG_CHAT_ID }}
COOKIES: ${{ secrets.COOKIES }}
PUSHPLUS_TOKEN: ${{ secrets.PUSHPLUS_TOKEN }}
DINGTALK_WEBHOOK: ${{ secrets.DINGTALK_WEBHOOK }}
DINGTALK_SECRET: ${{ secrets.DINGTALK_SECRET }}
FEISHU_WEBHOOK: ${{ secrets.FEISHU_WEBHOOK }}
FEISHU_SECRET: ${{ secrets.FEISHU_SECRET }}
WECOM_BOT_WEBHOOK: ${{ secrets.WECOM_BOT_WEBHOOK }}
YUNHU_TOKEN: ${{ secrets.YUNHU_TOKEN }}
YUNHU_RECV_ID: ${{ secrets.YUNHU_RECV_ID }}
YUNHU_RECV_TYPE: ${{ secrets.YUNHU_RECV_TYPE }}

keepalive:
name: 每月空提交保活
if: github.event_name == 'schedule' && github.event.schedule == '0 0 1 * *'
runs-on: ubuntu-latest
timeout-minutes: 5

permissions:
contents: write

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1

- name: 创建空提交并推送
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git commit --allow-empty -m "chore: keepalive to prevent workflow suspension"
git push
177 changes: 107 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,130 +1,167 @@
# 📌 GLaDOS 自动签到
# 📌 GLaDOS 自动签到

一个基于 **GitHub Actions** 的 **GLaDOS 自动签到脚本**。
**无需服务器、无需编程基础**,每天自动帮你签到。

------
**无需服务器、无需编程基础**,每天自动帮你签到。

## ✨ 功能说明
---

- ✅ **每天自动签到**
- 🔁 **已签到自动识别,不会报错**
- 👥 **支持多个账号**
- 📬 **可选签到结果推送(Telegram Bot)**
- 🆓 **完全免费,使用 GitHub Actions**
## ✨ 功能特性

------
- ✅ 每天自动签到,已签到自动识别
- 👥 支持多账号(用 `&` 连接)
- 📊 查询总积分和剩余天数
- 📬 8 种推送渠道:PushDeer / Server酱 / Telegram / PushPlus / 钉钉 / 飞书 / 企业微信 / 云湖
- 🔄 网络请求自动重试(指数退避)
- 🔒 日志脱敏(邮箱/Cookie 自动隐藏)
- ✅ Cookie 格式预验证
- 🔧 每月自动空提交保活
- 🆓 完全免费

---

## 📂 项目结构

```
.
├── checkin.py # 签到脚本(不用动)
├── checkin.py # 签到脚本
└── .github/workflows/
└── glados.yml # GitHub Actions 配置(不用动)
└── glados.yml # GitHub Actions 配置
```

------
---

## 🚀 使用教程

### 第一步:Fork 本项目

1. 点击右上角 **Fork**
2. Fork 到你自己的 GitHub 账号下

👉 后续所有操作都在你 **自己的仓库** 中完成
点击右上角 **Fork**,Fork 到你自己的 GitHub 账号下。

------
---

### 第二步:获取 GLaDOS Cookie

1. 打开浏览器,登录https://glados.cloud
1. 打开浏览器,登录 https://glados.cloud
2. 按 **F12** 打开开发者工具
3. 找到:
- Chrome:`Application` → `Cookies`
- Firefox:`存储` → `Cookies`
4. 选择 `glados.cloud`
5. **复制完整 Cookie 内容**

示例(示意):
3. 找到 `Application` → `Cookies` → `glados.cloud`
4. 复制完整 Cookie 内容

示例:
```
koa:sess=xxxxxx; koa:sess.sig=yyyyyy
```

⚠️ **必须是完整的一整段,不要只复制一半**
⚠️ **必须是完整的一整段**

------
---

### 第三步:添加 GitHub Secrets

进入你 Fork 后的仓库:

1. 点击 **Settings**
2. 左侧选择 **Secrets and variables → Actions**
3. 点击 **New repository secret**
1. **Settings** → **Secrets and variables** → **Actions**
2. 点击 **New repository secret**
3. 添加:
- **Name**:`COOKIES`
- **Value**:粘贴刚才复制的 Cookie
4. 点击 **Save**

#### 添加第一个 Secret(必填)
---

- **Name**:`COOKIES`
- **Value**:粘贴刚才复制的 Cookie
### 第四步:(可选)配置推送

点击 **Save**
在 GitHub Secrets 中添加对应的环境变量:

------
| 渠道 | 必填环境变量 | 可选 |
|------|-------------|------|
| PushDeer | `SENDKEY` | - |
| Server酱 | `SERVERCHAN_KEY` | - |
| Telegram | `TG_BOT_TOKEN` + `TG_CHAT_ID` | - |
| PushPlus | `PUSHPLUS_TOKEN` | - |
| 钉钉机器人 | `DINGTALK_WEBHOOK` | `DINGTALK_SECRET` |
| 飞书机器人 | `FEISHU_WEBHOOK` | `FEISHU_SECRET` |
| 企业微信机器人 | `WECOM_BOT_WEBHOOK` | - |
| 云湖机器人 | `YUNHU_TOKEN` + `YUNHU_RECV_ID` | `YUNHU_RECV_TYPE` |

### (可选)第四步:开启签到结果推送
---

如果你想每天收到签到通知(可选):
## 👥 多账号配置

1. 在 Telegram 搜索 `@BotFather`
2. 发送 `/newbot` 创建机器人,拿到 `TG_BOT_TOKEN`
3. 打开你新建的机器人,先发一条任意消息
4. 访问:`https://api.telegram.org/bot<你的TG_BOT_TOKEN>/getUpdates`
5. 在返回内容中找到你的 `chat.id`(这就是 `TG_CHAT_ID`)
6. 在 GitHub Secrets 中添加下面两个:
多个账号的 Cookie 用 `&` 连接:

- **Name**:`TG_BOT_TOKEN`
- **Value**:你的 Telegram Bot Token
```
cookie_账号1 & cookie_账号2 & cookie_账号3
```

- **Name**:`TG_CHAT_ID`
- **Value**:你的聊天 ID(数字,可能是负数)
⚠️ 不要换行,不要用逗号

不填也没关系,只是不会推送。
---

------
## ⏰ 签到时间

## 👥 多账号如何添加?
每天 **UTC 04:00**(北京时间 **中午 12 点**)自动运行。

### 规则很简单:
---

> **多个账号的 Cookie,用 `&` 连接**
## 📋 签到结果

示例:
| 状态 | 说明 |
|------|------|
| ✅ 成功 | 签到成功,显示获得积分 |
| 🔄 已签到 | 今日已签到过 |
| ❌ 失败 | 签到失败,显示原因 |

```
cookie_账号1 & cookie_账号2 & cookie_账号3
```
---

⚠️ 注意事项:
## ❓ 常见问题

- 不要换行
- 不要用逗号
- 每个 cookie 都是完整的一段
**Q: 签到提示 Cookie 失效?**

------
A: Cookie 有有效期,请重新登录获取最新 Cookie 并更新 Secrets。

## ⏰ 自动签到时间说明
**Q: Actions 被暂停了?**

项目默认设置为:
A: 项目内置每月空提交保活。如仍被暂停,手动触发一次 `workflow_dispatch`。

```
每天 UTC 04:00 自动运行
```
**Q: 日志中的邮箱为什么显示不完整?**

A: 出于隐私保护,邮箱会自动脱敏(如 `te***t@example.com`)。

**Q: 可以同时配置多个推送渠道吗?**

A: 可以,配置多个 Secrets 即可同时推送。

---

## 🔄 更新日志

### v2.0.0

**功能新增**
- 新增 Telegram Bot 推送
- 新增 PushPlus(推送加)推送
- 新增钉钉机器人推送(支持加签验证)
- 新增飞书机器人推送(支持加签验证)
- 新增企业微信机器人推送
- 新增云湖机器人推送
- 新增总积分查询功能
- 新增网络请求自动重试机制(指数退避)
- 新增 Cookie 格式预验证
- 新增日志脱敏处理(邮箱/Cookie 自动隐藏)
- 新增每月自动空提交保活机制

**问题修复**
- 修复 PushPlus 推送域名问题
- 修复飞书机器人加签算法

**优化改进**
- Python 版本升级至 3.11
- 多账号间请求增加随机延迟
- GitHub Actions 添加超时和并发控制
- 代码整合为单文件,简化部署

换算成北京时间:
---

> 🕛 **每天中午 12 点自动签到**
## 📄 许可证

你无需做任何操作,它会每天自动运行。
MIT License
Loading