GLaDOS Check-in Worker
在 Cloudflare Workers 上运行的 GLaDOS 多账号签到工具,支持定时签到、剩余天数查询、积分历史图表和可选的 Telegram 通知。无需自备服务器或数据库。
新版签到会检查登录设备。本项目为每个账号固定使用登录时的 User-Agent(浏览器发送的设备标识),并区分登录失效、设备不一致和上游临时故障。
分享包没有可用账号或登录凭据,需要自行配置。当前 HTTP 接口没有访问鉴权:获得部署地址的人可以查询账号邮箱、余额和历史,也能触发签到及 Telegram 通知。请限制部署地址的访问权限;分享源码包,不要公开自己的 Worker 地址。
功能与文件
- 多账号依次签到;每天自动执行一次,也可手动触发。
- 同一账号的签到、查询及重试使用相同的浏览器标识。
- 网络错误、超时和
502/503/504最多重试两次;登录或设备校验失败不重试。 - 积分图表使用只读接口,查看图表不会触发签到。
- Telegram 通知可选;不配置时仍可签到和查询。
| 文件 | 用途 |
|---|---|
worker.js |
部署到 Cloudflare 的入口代码 |
worker.test.mjs |
使用模拟请求验证行为,不连接真实账号 |
wrangler.example.toml |
不含凭据的部署配置模板 |
accounts.example.json |
账号配置示例,所有值都需要替换 |
scripts/export.py |
按固定文件清单生成分享 ZIP |
1. 准备登录信息
- 在你实际使用的 GLaDOS 官网重新登录,例如
https://glados.cloud/login,确认能进入签到页面。 - 打开浏览器开发者工具的 Network / 网络 面板,刷新页面,找到
/api/user/status或/api/user/points请求。 - 在 Request Headers / 请求标头 中取得同一次登录的
Cookie和User-Agent,仅用于配置你自己的 Worker,不要贴到公开聊天、截图或仓库中。 - 按下面结构准备账号配置。即使只有一个账号,最外层也必须是数组
[...]。
[
{
"email": "[email protected]",
"cookie": "gld:sess=REPLACE_WITH_CURRENT_SESSION; gld:sess.sig=REPLACE_WITH_CURRENT_SIGNATURE",
"userAgent": "REPLACE_WITH_LOGIN_BROWSER_USER_AGENT"
}
]
也可以从 accounts.example.json 复制一份为 accounts.local.json 后填写;后者已被 Git 忽略,使用后自行清理。
注意:
email是账号显示名称,通常填写自己的登录邮箱。- 2026-09-29 核对的
glados.cloud会话使用gld:sess和gld:sess.sig。不要只复制浏览器残留的旧koa:*,也不要把旧 Cookie 改名冒充新 Cookie;其他域名以实际登录请求为准。 - Cookie、User-Agent、API 域名必须对应同一次登录。不要混用
glados.one与glados.cloud的登录信息。 - 多账号可继续在数组内添加对象;各账号可以配置不同的
userAgent,但本实例共用同一个 API 域名。 - 不必填写
token:默认使用 API 的 hostname,例如glados.cloud。如果沿用旧配置中的token,换域名时应一起更新或删除。
2. 部署到 Cloudflare
下面使用 Cloudflare 的命令行工具 Wrangler。需要自己的 Cloudflare 账号和 Node.js;本项目本地验证使用 Node.js 22。
在项目目录运行:
npm install -g wrangler
wrangler login
复制配置模板。Windows PowerShell:
Copy-Item wrangler.example.toml wrangler.toml
macOS / Linux:
cp wrangler.example.toml wrangler.toml
编辑 wrangler.toml:
- 将
name改为自己要创建的 Worker 名称。 - 将
GLADOS_API_BASE_URL改为登录域名的/api,模板使用https://glados.cloud/api;代码未配置时的默认值是https://glados.one/api。 - 模板的
0 9 * * *表示每天 UTC 09:00,即北京时间 / 新加坡时间 17:00。
首次部署代码,然后添加账号密钥:
wrangler deploy --keep-vars
wrangler secret put GLADOS_ACCOUNTS
第二条命令会提示输入值。粘贴完整的账号 JSON 数组;建议压成一行,避免交互输入截断。不要把真实 Cookie 写入 worker.js 或模板的 [vars]。
也可在 Cloudflare 控制台打开自己的 Worker → Settings → Variables and Secrets,以 Secret 类型添加 GLADOS_ACCOUNTS。如果已存在同名普通变量,应在控制台处理该变量后再保存密钥,避免同名冲突。Cloudflare 密钥文档
保存密钥后即可验证。初次部署到配置完成之间,若定时任务恰好触发,会提示未配置账号。
可选:Telegram 通知
准备自己的 Bot Token 和接收通知的 Chat ID,然后分别执行:
wrangler secret put TGTOKEN
wrangler secret put TGID
这两个值需要同时设置。还应将自己的 Worker 根地址填入 wrangler.toml 的 WORKER_URL,再部署一次,使定时通知中的图表链接可用。
配置速查
| 名称 | 是否必需 | 说明 |
|---|---|---|
GLADOS_ACCOUNTS |
是 | JSON 数组字符串,包含 email、cookie,建议逐账号填写 userAgent |
GLADOS_API_BASE_URL |
建议设置 | 与登录域名一致的 API 地址 |
GLADOS_USER_AGENT |
否 | 未设置账号 userAgent 时的统一回退值 |
GLADOS_CHECKIN_TOKEN |
否 | 覆盖自动推导的 hostname;一般无需设置 |
TGTOKEN、TGID |
通知需要 | Telegram Bot Token 和接收目标 |
WORKER_URL |
通知建议设置 | 自己的 Worker 根地址,不带接口路径 |
User-Agent 的优先级:账号 userAgent → GLADOS_USER_AGENT → 代码内固定默认值。默认值不保证匹配你的登录设备,建议填写实际值。
3. 验证与使用
把部署输出中的 Worker 地址作为根地址,再追加下列路径:
| 路径 | 行为 |
|---|---|
/ |
查看服务说明 |
/status |
只读查询账号剩余天数 |
/checkin |
执行真实签到,再查询剩余天数 |
/checkinChart |
只读展示积分历史图表 |
/tg |
执行真实签到并发送 Telegram 通知 |
先访问 /status,看到有效剩余天数后,再访问一次 /checkin。确认正文显示签到成功或今日已签到;HTTP 200 本身并不代表签到成功。最后检查 /checkinChart。
定时任务调用与 /checkin 相同的签到逻辑,并在配置了 Telegram 时发送通知。检查 Cloudflare 中的 Cron Trigger 是否与配置一致;定时规则变更可能需要一段时间传播。手动成功与下一次定时执行是两项不同的验证。Cloudflare 定时任务文档
图表在浏览器端从 jsDelivr 加载 Chart.js,需要浏览器能够访问该 CDN。
常见问题
| 现象 | 处理方式 |
|---|---|
| 未配置任何账号 | 检查 GLADOS_ACCOUNTS 是否为合法 JSON 数组,且账号包含 email、cookie |
| 没有权限 / 未授权 | 在实际 API 域名重新登录,更新完整 Cookie,并一起更新 User-Agent |
device-mismatch |
登录设备与请求设备不一致;重新登录后,使用同一次登录的 Cookie 和 User-Agent |
Automated check-in detected |
服务端拒绝本次签到;重新登录并核对配置,仍失败时使用官网手动签到,不要反复重试 |
502/503/504 |
上游临时异常,代码会重试;耗尽后先查看只读 /status |
| 图表没有数据 | 检查账号授权与积分历史;图表不会通过签到来生成数据 |
| 没收到 Telegram | 检查两个通知密钥和机器人接收权限;/tg 的完成提示本身不证明 Telegram 已投递 |
服务端规则可能继续变化;本项目不保证登录会话永久有效,也不会自动完成重新登录。
测试与更新
运行离线测试,不需要填写账号或安装测试依赖:
node --test worker.test.mjs
更新代码前保留自己的本地配置和 Cloudflare 密钥,再运行:
wrangler deploy --dry-run --keep-vars
wrangler deploy --keep-vars
--keep-vars 用于保留已有普通变量;配置文件中显式填写的变量仍会更新。定时规则由配置文件决定,更新时检查 [triggers]。Wrangler 配置文档
生成分享包
安装了 Python 3 时,在项目目录运行:
python scripts/export.py
ZIP 和对应的 .sha256 校验文件会生成在 exports/。打包脚本仅包含上面列出的通用文件、README、.gitignore 和自身,以及自动生成的 MANIFEST.json 文件校验清单。
不会收录 Git 历史、个人维护文档、编辑器配置、日志、本地账号配置或运行缓存。脚本也会检查常见凭据格式与个人标识;这不替代分享前对自己新增内容的检查。不要用“压缩整个项目目录”的方式代替此脚本。