Turnstile 时期,默认推荐在自己的电脑上跑:签到被官方人机验证拦截时,脚本会自动切换到本地浏览器通道完成验证后签到(核心实现属于项目内部逻辑,不在此展开)。实测维护者账号已连续两天入账:11-14 +10、11-15 +19。
服务端验证的放行带有随机性,单次尝试可能被拒。本项目用三层兜底把"单次成功率"变成"当日成功率":
| 层级 | 做什么 | 实测效果 |
|---|---|---|
| 单次运行内 | 被拒后自动多轮重试,不需要人工干预 | 11-14 与 11-15 两天的积分均为重试轮次获得(+10、+19) |
| 同日多次运行 | 计划任务 09:30 主签 + 12:30 / 20:30 补签;脚本幂等,已签过自动跳过、不会重复加分 | 两天补签均返回"今日已签到",未见重复加分 |
| 云端对账 | Actions 每日 09:31 只读推送积分与剩余天数,与本地结果互相印证 | 已验证 |
运行时短暂弹出浏览器窗口属正常流程,请勿手动关闭。浏览器通道的具体实现不公开展开,请勿按猜测自行复刻。
📊 今日加分一目了然:每次推送卡片都会显示"今日加分"合计与笔数(当日全部正变动流水加总,含所有来源)。
第 1 步 · 环境(一台自己的电脑,装有 Chrome 或 Edge):
pip install -r requirements.txt
# 浏览器依赖异常时参考 requirements.txt 内的注释处理第 2 步 · 配置并运行:把 GLaDOS Cookie(须含 gld:sess 与 gld:sess.sig,获取方法见下方快速部署)设为环境变量 GLADOS_COOKIE,然后:
python checkin.py可配置单一系统计划任务每天尝试运行(如 Windows 任务计划程序每天 09:30 调用),但不能保证每天成功,也不能保证重复运行只返回“今日已签到”。当前代码在响应丢失等结果不明确时可能再次提交,且共享浏览器 profile 存在多账号会话混用风险;尚未观察到重复奖励或账号混用,不能把风险当作已发生的事故。结果不明确时请先核对官网记录,不要为验证而重复运行或并发运行。运行时短暂弹出浏览器窗口属正常流程。
- 只想核对状态不弹浏览器:
CHECKIN_NOTIFY_STATUS_ONLY=true - 云端 Actions 用户:定时/外部触发的运行默认已降级为只读状态推送(不试签到;查询或推送仍可能失败);手动 Run workflow 选
dispatch_source=manual可试完整签到(机房 IP 大概率仍被拦) - Cookie 过期(日志出现 401 / 请登录 / device-mismatch)才需要重新复制,参考下方说明
Warning
2026-11-14:已观察到 Turnstile 验证拒绝;本地真浏览器模式为维护者单一账号连续两天实测记录,不能视为通用或长期保证。Actions 默认关闭浏览器兜底;安全收紧方案 #38 尚未合并、部署或完成真实浏览器验收。
已观察到的问题:维护者运行及部分社区反馈出现 code=5, reason=turnstile(Cloudflare verification failed);部分 GitHub Actions 无头浏览器尝试也未通过。这些记录不足以认定所有纯 API 请求或所有机房环境都必然失败。
本地实测记录:现有本地浏览器通道模块在接口明确返回 reason=turnstile 时,改经本地浏览器通道完成官方验证后提交签到(内部实现不在此展开)。北京时间 11 月 14 日 19:35,维护者单一账号返回 Got 10,余额从此前 15 变为 25,已读流水观察到当日 +10;没有交易标识将流水与请求严格关联。20:30 返回重复签到,不是再次增加 10 分。11 月 15 日 09:32 同账号再次成功(Got 19,25→44,当日 12:30 定时补签记录为重复签到;单次重复签到结果不证明脚本整体幂等),为连续第二天。以上仍是单一账号/单一环境记录,不证明其他账号、运行环境或后续日期必然可用。
- 适用范围与 Actions 行为:仅限自己的电脑 + 真实浏览器。检测到
GITHUB_ACTIONS时不启用浏览器兜底(显式GLADOS_BROWSER_CHECKIN=1才尝试);定时与外部触发(cron-job.org 等)的 Actions 运行自d279a6a起默认降级为只读状态推送——不再尝试签到;状态查询或推送本身仍可能失败;手动运行(dispatch_source=manual)仍可选完整签到。官方若撤下 Turnstile,把仓库变量ALLOW_SCHEDULED_CHECKIN设为true即恢复定时完整签到。 - 不是"绕过":人机验证仍由 Cloudflare 官方组件在真实浏览器中完成并放行;本仓库不提供打码或绕过方案。
- 本地使用:本机需有 Chrome 或 Edge →
pip install -r requirements.txt→ 配置GLADOS_COOKIE→ 运行checkin.py(或挂计划任务)。运行时会短暂弹出浏览器窗口,属正常流程,勿手动关闭。Cookie、UA、浏览器与运行环境需分别核对,失败时优先官网手动签到,不要为验证脚本而反复提交。 - 当前 main 的已知风险:浏览器使用共享持久化 profile,多账号场景存在残留会话混用风险(并非已证实发生混用);点击后丢失响应等模糊结果可能触发换域名或外层重试——未收到成功响应不等于没有提交成功,不应据此反复补签。
- 待验收方案:Draft PR #38 拟加入会话隔离、身份核对、模糊结果停止重试和并发防护;尚未合并 main、未部署到现有本地调度、未完成真实浏览器/真实签到验收。离线测试通过不代表线上已解决。
- 付费边界:已有自述付费账号仍遇到低分或验证失败的反馈;付款不保证固定积分或免除 Turnstile,但不能外推为所有付费账号均无效。请勿仅为排查而购买套餐(见 #37)。
积分口径:通知将"接口声称加分"与"积分流水观察"分开显示、不强行关联归属——同日同额不能证明是本次入账,历史流水也不代表本次奖励(相关讨论见 #28、#37)。
隐私:任何反馈都不要公开 Cookie、Token、密码、验证码、nonce/proof、完整请求头、HAR 或含邮箱/账号信息的截图。
Important
历史恢复记录(2026-09-30):新版认证修复见 v2026.9.30 发布说明。Fork 用户请先 Sync fork → Update branch;同步代码不会更新你的 Secrets,请手动跑一次验证配置。后续公告可 Watch → Custom → Releases 订阅。
无需编写代码 · 无需自购服务器;当前验证限制见上方公告
配置后每天 9:30 自动尝试签到;不保证通过服务端验证
| 优势 | 说明 |
|---|---|
| 单账号单次本地测试记录;Actions 浏览器兜底默认关闭;安全收紧方案待验收 | |
| ✅ 结果可信 | 正确区分签到完成、重复签到和真实失败 |
| ✅ 新手友好 | 全程图解,不会也能照着做 |
| ✅ 作者持续维护 | 遇到问题提Issue,作者很乐意帮忙 |
签到积分可累积兑换会员时长。每日奖励会随套餐、连续签到和海缆状态变化,请以控制台实际到账为准。
默认签到方案是顶部的本地真浏览器模式。以下云端路径保留给不想开机跑脚本的用户:Fork 后 Actions 每天定时读取账号状态与积分并推送提醒,不尝试签到、不触发人机验证。
┌─────────────────────────────────────────────────────────────┐
│ │
│ ① Fork 项目 ──→ 点一下右上角 Fork 按钮 │
│ │
│ ② 配置 Cookie ──→ 浏览器复制一下,贴到 GitHub Secrets │
│ │
│ ③ 启用 Actions ──→ 手动测试一次,之后每天自动运行 │
│ │
│ ✅ 完成!每天状态/积分推送 + 微信通知(签到需本地模式) │
│ │
└─────────────────────────────────────────────────────────────┘
⭐ 觉得有用?点个 Star 支持一下!
本项目为非官方社区辅助工具。使用前请阅读以下说明,并确认自己的部署方式符合所用平台的要求。
- 账号与平台规则:仅用于本人或已获明确授权的账号,遵守适用法律法规以及 GLaDOS、GitHub 和所选推送服务的服务条款。请自行确认平台是否允许相应的自动化使用方式。
- 运行与奖励限制:接口、验证流程、积分规则、服务额度和访问策略可能发生变化。测试通过或维护者账号运行成功,不构成持续可用、固定积分、补发差额、兑换成功或账号权益不受影响的保证;签到和奖励以平台实际记录为准。
- 凭据与通知隐私:请妥善保管 Cookie、Token、SendKey 等凭据,GitHub 部署时使用 Secrets,不要提交到代码、公开日志或 Issue。通知触发时,签到摘要可能包含邮箱、积分和剩余天数,并会发送给你配置的推送服务;配置前请了解该服务的数据处理规则。
- 风险与责任范围:本项目按“现状”提供。在适用法律允许的范围内,维护者和贡献者不对使用本项目产生的服务中断、数据或凭据泄露、积分及账号权益损失等承担赔偿责任。本说明不排除依法不得免除的责任。
默认只使用仓库内置的 GitHub Actions 定时任务,无需创建外部 cron。
本项目每月自动提交一次保活时间戳,避免公开仓库因 60 天无活动而停用计划任务。
cron-job.org仅作为可选备用方案。内置 schedule 与外部 cron 二选一,同时启用会重复签到和重复通知。已经 Fork 很久的用户需要先点击 Sync fork → Update branch,再重新启用 Actions。
⚠️ 重要:如果你使用其他签到脚本失败,显示 "please checkin via https://glados.cloud",请使用本项目!
GLaDOS 在 2026 年初进行了 API 更新,绝大多数旧签到脚本已失效。我们通过抓包分析发现了问题:
| 问题 | 旧脚本 | 本项目(已修复) |
|---|---|---|
| 签到 Token | glados.one ❌ |
glados.cloud ✅ |
| 域名支持 | rocks/network ❌ | cloud ✅ |
| 签到结果 | "please checkin via..." | "Checkin!" 或 "Repeats" ✅ |
🔬 技术细节:我们是怎样修复问题的(感兴趣的看)
- GitHub Actions 可以正常运行
- 推送消息显示 "成功0/1"
- 签到结果始终为 "please checkin via https://glados.cloud"
- 手动点击签到按钮正常,但机器人签到无效
1️⃣ 浏览器抓包分析
- 使用 Chrome DevTools 抓取真实签到请求
- 对比浏览器请求和 Python 脚本请求的差异
2️⃣ 尝试的方案(失败)
- ❌ 添加更多 Headers(sec-ch-ua、sec-fetch-* 等)
- ❌ 使用 requests.Session 保持会话
- ❌ 使用 curl_cffi 模拟浏览器 TLS 指纹
- ❌ 添加代理配置
3️⃣ 最终发现 通过对比不同 token 值的请求结果:
# 失败 ❌
{'token': 'glados.one'} → "please checkin via https://glados.cloud"
# 成功 ✅
{'token': 'glados.cloud'} → "Checkin Repeats! Please Try Tomorrow"问题根源:GLaDOS 更新了 API,签到 token 必须从 glados.one 改为 glados.cloud!
📢 重要提示
- GLaDOS 官网已迁移至 glados.cloud(不再是 glados.rocks)
- 本项目专为 2026 积分制度优化,每天自动签到一次
- 完全免费,使用 GitHub Actions,无需自己的服务器
- 不会的话可以提 Issue,作者很乐意帮助技术新手!
| 功能 | 说明 |
|---|---|
| 🎯 精准积分 | 获取真实积分数据 + 每日变化量 |
| 📊 今日加分 | 推送卡片直接显示当日累计加分与笔数(含所有来源的流水合计) |
| 🎁 兑换提示 | 显示当前可兑换选项及差额 |
| ⏰ 每日一次 | 北京时间 9:30 自动签到 |
| 🔄 失败重试 | 最多尝试三次,最终失败才报警 |
| 📱 微信推送 | PushPlus HTML 报告 / Server酱 Markdown 报告 |
| ☁️ 2026 API | 适配最新 glados.cloud API |
| 🔧 持续维护 | 发现问题及时修复 |
本项目支持以下环境变量配置:
| 变量名 | 必填 | 说明 |
|---|---|---|
GLADOS_COOKIE |
✅ 是 | GLaDOS 的完整 Cookie,必须包含 gld:sess 与 gld:sess.sig。多个账号请用 & 或换行符分隔。 |
GLADOS_USER_AGENT |
❌ 否 | 生成当前 gld:sess 时浏览器的完整 User-Agent;新版设备校验失败时需要配置。 |
PUSHPLUS_TOKEN |
❌ 否 | PushPlus 微信推送 Token。 |
SERVERCHAN_SENDKEY |
❌ 否 | Server酱 SendKey,支持 Turbo(SCT...)与 Server酱³(sctp...)。 |
TELEGRAM_BOT_TOKEN |
❌ 否 | Telegram 机器人的 Token(例如 123456:ABC-DEF1234...) |
TELEGRAM_CHAT_ID |
❌ 否 | 接收推送的 Telegram Chat ID |
PUSH_LEVEL |
❌ 否 | 推送级别:fail_only(默认,仅失败推送)或 all(每次均推送) |
EXCHANGE_PLAN |
❌ 否 | 积分自动兑换计划(#11):plan500(默认,500 分自动兑换 100 天)、plan200(200 分→30 天)、plan100(100 分→10 天)或 off(关闭)。兑换结果即使 PUSH_LEVEL=fail_only 也会推送。 |
GLADOS_BROWSER_CHECKIN |
❌ 否 | Turnstile 真浏览器兜底开关:默认开启;0 关闭。检测到 GITHUB_ACTIONS 时默认自动禁用,设 1 可显式尝试(尚未验证 Actions 首次签到恢复)。 |
GLADOS_BROWSER_HEADLESS |
❌ 否 | 浏览器兜底改无头模式:默认 0(有头);未验证不同环境的成功率。 |
PushPlus、Server酱和 Telegram 均为可选,可单独使用,也可同时配置;多个渠道配置后会分别发送同一份多账号汇总,并遵循同一个 PUSH_LEVEL 设置。只读诊断(diagnose_only)不发送推送。
2026 年 9 月的新认证新增了 gld:sess 与 gld:sess.sig。旧的两项 koa:sess
即使尚未过期,也可能只能维持网页兼容状态,调用新版 API 时会返回“没有权限”。请在
Chrome 开发者工具的 Network 中选中一次成功的 /api/user/status 请求,从
Request Headers → Cookie 复制完整值,并确认其中同时存在 gld:sess 和
gld:sess.sig。__stripe_mid 属于支付组件 Cookie,不是签到认证的必要字段,保留也
不会影响请求。请勿在 Issue、日志或聊天中公开任何 Cookie 内容。
新版签到还会校验登录设备。若日志显示 device-mismatch 或 “Automated check-in
detected”,请打开同一个浏览器的 chrome://version,复制“用户代理”完整内容,并在
仓库 Settings → Secrets and variables → Actions → Variables 中设置
GLADOS_USER_AGENT。浏览器升级后,应重新登录并同步更新 Cookie 与 User-Agent。
更新后可以先运行只读检查:在 Actions → GLaDOS 2026 Checkin → Run workflow 中,
dispatch_source 选 manual,勾选 diagnose_only。只读检查仅请求登录状态,日志不输出
Cookie、邮箱或账号余额,也不会签到、兑换积分或发送推送。所有账号状态查询通过时工作流
成功;查询失败时工作流失败。GitHub 自身仍可能发送工作流失败邮件。
本地使用时设置 CHECKIN_DIAGNOSTIC_ONLY=true 后运行脚本即可。
注意:只读查询成功不代表签到的设备校验也已通过。确认 Cookie 与 User-Agent 对应后,
再取消勾选 diagnose_only 执行一次实际签到;若不希望自动兑换,可先将仓库变量
EXCHANGE_PLAN 设为 off。
完整 Cookie 与 User-Agent 都已配置但仍失败时,请先核对以下信息:
- 普通签到和只读诊断都会显示
浏览器 User-Agent: 已配置或未配置,使用默认值, 不输出具体值。Actions 优先读取 Variables 中的GLADOS_USER_AGENT;Variable 未设置或为空时,兼容读取同名 Secret。两处都配置时以 Variable 为准,更新时请注意 不要留下旧的 Variable。只含空格的 Variable 也会优先于 Secret,随后使用默认值; 请清空或删除它。两处都为空时仍使用默认值。同步工作流后此兼容才会生效。 - 推荐只粘贴完整单行 User-Agent 的值,不要附带说明文字。脚本可自动去掉一对完整的
英文外层双引号及误复制的
User-Agent:前缀;包含空格的完整浏览器值也兼容一对 英文外层单引号。自定义单个产品标识中的合法单引号会保留,只记录已规范化,不打印内容。 含内嵌换行、无效控制字符、不支持的字符、重复引号或不成对双引号时,会在任何账号请求、 签到、兑换和推送前报配置错误并停止,请重新复制对应浏览器的值。 显示“已配置”只证明配置已传入并通过本地格式检查,不证明它与当前登录会话匹配。 - 提供失败运行的链接(或 commit SHA)、浏览器名称/版本、GitHub Actions 或本地运行、
是否多账号,以及
diagnose_only是否通过。日志中的code、已知reason和http_status可以帮助区分会话拒绝与网络错误。请勿公开 Cookie、Token、完整请求头或 含个人信息的响应体。 - 签到返回设备/认证拒绝,或 HTTP 401/403 时,脚本会停止该账号的重试和后续积分查询、 兑换请求;HTTP 401/403 不会再换域名尝试。其他账号仍继续处理。
- HTTP 5xx、请求超时或响应格式异常属于本次请求失败,不能据此认定 Cookie 失效或当天 未签到。重试耗尽后,脚本会跳过该账号的后续积分查询和兑换,仍发送失败通知并返回失败。 通知标题标明“本次运行失败”,未知的积分和天数显示“未获取”;请结合当天其他成功运行或 官网签到日历核对。日志和推送正文的时间统一使用北京时间(UTC+8)。
Automated check-in detected 是服务端的拒绝结果,仅凭这句文案不能确定具体触发条件,
也不能保证设置 User-Agent 后必然恢复。只读查询通过但实际签到仍被拒绝时,请保留脱敏
结果并联系服务方确认会话或自动化使用策略,不要反复触发签到。
2026-11-06 已核对官网控制台的新流程:签到前会获取一次性 challenge,等待后提交对应的
nonce/proof。旧脚本仅提交 token,缺少这一步;请同步最新 checkin.py。新版本为每次尝试
获取新验证,并在签发验证的同一域名提交;验证失败或过期时会停止本次提交并给出脱敏错误,
不会静默退回旧流程。只读诊断仍只查询状态,不获取验证、不签到。
服务端决定实际入账积分。接口返回 Checkin! Got 1 Points 且流水增加 1,说明已签到但
本次奖励较低;不应把它当作网络失败反复补签。当天已经入账的积分不保证能补差,适配后的
奖励数额需由下一次首次签到的服务端响应和积分流水验证。此项与 User-Agent 配置问题分别排查。
签到攒够积分后自动兑换会员天数,实现无感自动续期:
- 每天签到后检查积分,达到阈值就自动调用 GLaDOS 兑换接口;
- 默认 500 分 → 100 天(
plan500),无需任何配置即可生效; - 想换别的档位或关闭,设置
EXCHANGE_PLAN环境变量(GitHub 上可配在 Settings → Secrets and variables → Actions → Variables); - 兑换成功或失败都会推送通知(积分不足时静默跳过,不打扰)。
📚 给小白的科普:什么是 Fork、Cookie、Secrets?(新手必看)
💡 如果你已经熟悉这些概念,可以跳过这部分直接看 快速部署
🍴 什么是 Fork?
Fork = 把别人的项目复制一份到你自己的账号下。
就像复印一份文档,原件还在别人那里,你有一份自己的副本可以随便改。Fork 之后这个项目就属于你了,你可以自己配置和使用。
🍪 什么是 Cookie?
Cookie = 网站记住你是谁的"通行证"。
当你登录 GLaDOS 后,网站会给你的浏览器一个"通行证"(Cookie),下次访问时浏览器出示这个通行证,网站就知道你是谁了。
我们需要把这个通行证告诉签到程序,这样程序就能"假装"是你去签到。
🔐 什么是 Secrets?
Secrets = 保险箱,用来存放敏感信息。
你的 Cookie 和 Token 都是隐私信息,不能直接写在代码里(否则别人都能看到)。GitHub Secrets 就像一个保险箱,把这些敏感信息锁起来,只有你的程序运行时才能访问。
⚙️ 什么是 GitHub Actions?
GitHub Actions = 免费的自动化机器人。
它可以按照你设定的时间表(比如每天 9:30)自动运行程序。你不需要自己的服务器,GitHub 会免费帮你跑代码。
▶️ 什么是 Run workflow?
Run workflow = 手动测试按钮。
| 按钮 | 作用 |
|---|---|
| Run workflow | 选择 dispatch_source: manual 后立即执行一次,用于测试配置是否正确 |
| 定时任务 | 每天 9:30 自动执行,不需要手动操作 |
简单说:点 Run workflow 是测试,以后会自动运行。
点击页面右上角的 Fork 按钮,将项目复制到你的账号下。
⚠️ 注意:GLaDOS 官网已迁移到 https://glados.cloud,请使用新域名!
推荐直接使用 Chrome/Edge 自带的开发者工具;也可以使用 Cookie-Editor:
💡 提示:无论使用哪种方式,都必须取得新版的
gld:sess和gld:sess.sig, 不能再只复制旧的两项koa:sess。
- 打开 https://glados.cloud,退出后重新登录;
- 进入 签到页面(Console → Checkin),按
F12打开开发者工具; - 选择 Network,刷新页面,点开一次成功的
/api/user/status请求; - 在 Request Headers 中找到
Cookie,右键复制它的完整值; - 确认完整值中同时存在
gld:sess=和gld:sess.sig=。
直接使用上一步复制的完整值。它通常包含新旧两组会话 Cookie,例如:
koa:sess=旧会话; koa:sess.sig=旧签名; gld:sess=新会话; gld:sess.sig=新签名
其他 Cookie 可以保留;__stripe_mid 与签到认证无关,但不会造成问题。
也支持将 Cookie-Editor 导出的 JSON 数组整体保存到 GLADOS_COOKIE,可以保留缩进和
换行;整个数组按一个账号处理。多账号请使用上面的 Cookie 请求头格式,每个账号占一行。
常见错误:
- ❌ 仍然只复制
koa:sess与koa:sess.sig - ❌ 漏掉
gld:sess.sig - ❌ 把
Cookie:之外的整段请求头一起复制 - ❌ 值两边多了引号
- ❌ 将 Cookie 发布到 Issue、日志或聊天中
运行以下 Python 代码验证格式是否正确:
# 将你的 Cookie 粘贴到下面的引号中
cookie = "gld:sess=你的新会话; gld:sess.sig=你的新签名"
# 验证
if "gld:sess=" in cookie and "gld:sess.sig=" in cookie:
print("✅ 已包含新版会话 Cookie!")
else:
print("❌ Cookie 缺少 gld:sess 或 gld:sess.sig")- 进入你 Fork 的仓库
- 点击 Settings(设置)
- 左侧菜单找到 Secrets and variables → Actions
- 点击右上角 New repository secret
按需添加以下 Secret:
| Name | Value | 必需 |
|---|---|---|
GLADOS_COOKIE |
第二步组合的 Cookie | ✅ 是 |
PUSHPLUS_TOKEN |
微信推送 Token(见下方) | ❌ 否 |
SERVERCHAN_SENDKEY |
Server酱 SendKey(见下方) | ❌ 否 |
如果你希望收到微信通知,可选择 Server酱或 PushPlus,也可同时配置。
- 需要微信通知时,访问 Server酱 Turbo,登录并绑定微信接收渠道。本项目也兼容 Server酱³ 的独立 App 推送,接收方式见官方通道说明。
- 复制自己的 SendKey,Turbo 通常以
SCT开头,Server酱³ 以sctp开头。 - 回到仓库 Settings → Secrets and variables → Actions → New repository secret,Name 填
SERVERCHAN_SENDKEY,Secret 填完整 SendKey,然后保存。
只使用 Server酱时,无需配置 PUSHPLUS_TOKEN。推送包含账号、积分、剩余天数、签到结果和兑换信息,正文会转换为 Markdown。
默认 PUSH_LEVEL=fail_only,仅在签到失败或发生兑换时推送。若希望每次签到成功也收到通知,请在 Settings → Secrets and variables → Actions → Variables → New repository variable 中添加 PUSH_LEVEL,值设为 all。这里的 PUSH_LEVEL 应配置为 Variable。
- 访问 https://www.pushplus.plus
- 点击右上角 登录,使用微信扫码登录
- 登录后点击 发送消息 → 一对一消息
- 复制页面上显示的 Token(类似
05c3****dd36的字符串)
- 将 Token 添加到 GitHub Secrets,Name 填
PUSHPLUS_TOKEN
- 进入你 Fork 仓库的 Actions 标签页
- 如果看到黄色提示,点击 I understand my workflows, go ahead and enable them
- 点击左侧的 GLaDOS 2026 Checkin
- 点击右侧 Run workflow,选择
dispatch_source: manual后手动测试一次
Important
完成首次手动测试后,内置 schedule 会每天运行。请勿再配置相同时间的外部 cron,否则会重复执行。
当前 dispatch_source 为可选输入,省略时默认 external;建议外部任务显式填写,便于辨认来源。仅发送 {"ref":"main"} 也可触发当前工作流,不能用它阻止旧定时器;请在 cron-job.org 停用不再需要的任务。
只有在你的网络环境或 GitHub 计划任务长期不触发时才需要外部 cron。使用它时,请删除或注释 .github/workflows/checkin.yml 中的 schedule,确保只保留一个调度器。
- 访问 https://github.com/settings/tokens
- 推荐点击 Generate new token → Fine-grained personal access token
- Repository access 只选择你自己的
2026-glados-checkinFork - Repository permissions → Actions: Read and write
- 生成后立即复制;不要把 Token 发到 Issue、截图或写入仓库
使用 classic PAT 时,此接口需要
reposcope;workflowscope 主要用于修改 workflow 文件,并不是调用 dispatch 接口的替代权限。优先使用权限更小的 fine-grained PAT。
- 访问 https://cron-job.org 注册账号(免费)
- 注册后登录,点击 Create Cronjob 创建任务
按照以下配置填写:
基本信息:
| 选项 | 填写 |
|---|---|
| Title | GLaDOS 早签到 |
| URL | https://api.github.com/repos/你的用户名/2026-glados-checkin/actions/workflows/checkin.yml/dispatches |
⚠️ 重要:把你的用户名改成你的 GitHub 用户名!比如lankerr
执行时间:选择每天 09:30(Asia/Shanghai 时区)
高级配置(点击 Advanced 展开):
| 选项 | 值 |
|---|---|
| Request method | POST |
| Time zone | Asia/Shanghai |
请求头(Headers):点击 "+ 添加" 添加三行:
| Key | Value |
|---|---|
Accept |
application/vnd.github+json |
Authorization |
Bearer 你复制的GitHub_Token |
Content-Type |
application/json |
Authorization 示例只应写成占位形式:
Bearer github_pat_xxx。不要公开真实 Token。
请求体(Request body):选择 Raw Body,填入:
{ "ref": "main", "inputs": { "dispatch_source": "external" } }配置完成后点击 Save 保存。
- 在任务列表点击 Test run 测试
- 当前 GitHub API 成功时会返回 200;旧 API 版本可能返回 204,两者都代表 dispatch 已接受 ✅
- 到 GitHub 仓库的 Actions 页面查看,应该有新的运行记录
| 错误 | 现象 | 原因 | 解决方法 |
|---|---|---|---|
| 401 Unauthorized | 认证失败 | Authorization 格式错误 | 使用 Bearer github_pat_xxx |
| 422 Unprocessable Entity | 请求无法处理 | ref 缺失/不存在或输入参数不合法 | 按上面的完整 Request body 填写 |
| 404 Not Found | 找不到工作流 | Actions 未启用或文件不存在 | 先完成 Fork、启用 Actions 并手动运行一次 |
| Accept 被截断 | 配置错误 | 输入框显示不全 | 完整值:application/vnd.github.v3+json |
| Token 有空格 | 认证失败 | Token 被意外截断 | Token 是连续字符串,中间不能有空格 |
| 权限不足 | 403 错误 | Token 无 Actions 写权限 | fine-grained PAT 设置 Actions: Read and write |
💡 小贴士:遇到 401/422 错误时,先检查上面三行 Headers 是否完全正确!
🎉 完成! 外部 cron 会每天 9:30 触发一次。记得关闭内置 schedule,避免重复运行。
如果你有自己的长期运行的电脑(如树莓派、软路由、VPS 等),也可以非常简单地在本地运行:
首先确保你已经安装了 Python 3,然后安装依赖库:
git clone https://github.com/你的用户名/2026-glados-checkin.git
cd 2026-glados-checkin
pip install -r requirements.txt使用环境变量传递 Cookie 并直接运行 Python 脚本:
# 配置 Cookie
export GLADOS_COOKIE="gld:sess=xxxxxx; gld:sess.sig=yyyyyy"
# 可选:配置推送
export PUSH_LEVEL="all"
export SERVERCHAN_SENDKEY="SCT..."
export TELEGRAM_BOT_TOKEN="xxx"
export TELEGRAM_CHAT_ID="yyy"
# 执行签到
python3 checkin.py通过 crontab -e 配置每天自动执行(例如每天早上 9:30):
30 9 * * * export GLADOS_COOKIE="gld:sess=xxx; gld:sess.sig=yyy"; cd /path/to/2026-glados-checkin && python3 checkin.py >> glados.log 2>&1本项目提供了标准的 Nix Flake,你可以直接作为 inputs 引入,系统会自动管理 Python 环境和依赖包。
在你的 flake.nix 中引入本项目:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
glados-checkin.url = "github:lankerr/2026-glados-checkin"; # 若本地测试可改写为 path:/绝对路径
};
outputs = { self, nixpkgs, glados-checkin, ... }: {
nixosConfigurations.my-server = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# 引入 glados-checkin 的 NixOS 模块
glados-checkin.nixosModules.default
({ config, pkgs, ... }: {
# 配置服务
services.glados-checkin = {
enable = true;
cookie = "gld:sess=xxx; gld:sess.sig=yyy";
# 【可选】消息推送配置
pushLevel = "all"; # 或 "fail_only"
pushplusToken = "xxx";
serverchanSendkey = "SCT...";
telegramBotToken = "yyy";
telegramChatId = "zzz";
};
})
];
};
};
}部署配置后执行 sudo nixos-rebuild switch --flake .#my-server,签到任务即会自动注册为 systemd timers。
签到成功后,你会在微信收到类似这样的推送:
👤 [email protected]
当前积分: 46 (+20)
剩余天数: 353 天
签到结果: Bindweed! Bindweed!
🎁 兑换选项:
❌ 100分→10天 (差54分)
❌ 200分→30天 (差154分)
❌ 500分→100天 (差454分)
| 时间(北京时间) | 说明 |
|---|---|
| 09:30 | 早间签到 |
默认使用 GitHub Actions;脚本内部最多尝试三次。外部 cron 是备用方案,不应与内置 schedule 同时启用。
Q: GitHub Actions 会不会在两个月后停止?
GitHub 官方规则是:公开仓库连续 60 天没有仓库活动时,计划任务会自动停用。计划任务还可能因高负载延迟,尤其是在整点附近。
本项目的 .github/workflows/keep-alive.yml 每月更新一次 .github/last-active.txt,早于 60 天期限。若你是旧 Fork:
- 点击 Sync fork → Update branch。
- 打开 Actions,选择两个 workflow,确认状态为 Enabled。
- 手动运行一次
GLaDOS 2026 Checkin验证 Cookie。
Q: cron-job.org 测试返回 401/404/422 错误怎么办?
请对照以下检查:
401 Unauthorized(认证失败):
❌ Authorization: github_pat_xxx
✅ Authorization: Bearer github_pat_xxx
注意:Bearer 前缀后面必须有一个空格。
404 Not Found:先完成 Fork,在 GitHub Actions 页面启用工作流并手动运行一次;同时确认 URL 中的用户名和仓库名正确。
422 Unprocessable Entity(请求无法处理):
外部定时器建议使用:
{"ref":"main","inputs":{"dispatch_source":"external"}}当前 dispatch_source 可省略,默认 external,因此 {"ref":"main"} 本身不是错误。遇到 422,请检查是否提供 ref、对应分支是否存在,以及 inputs 名称和取值是否与工作流一致。旧定时器需要在调度服务中停用,不能依赖省略此输入来阻止执行。
其他检查:
- Accept 头是否完整:
application/vnd.github+json - Fine-grained PAT 是否有目标仓库的
Actions: Read and write权限 - Token 是否过期(检查 Expiration 设置)
Q: 显示 "please checkin via https://glados.cloud" 怎么办?
这表示你使用的签到脚本已过期!GLaDOS 在 2026 年更新了 API,旧脚本的 token 值 glados.one 已失效。
解决方案:使用本项目,我们已经修复了这个问题(token 改为 glados.cloud)。
Q: 显示 "Checkin Repeats! Please Try Tomorrow" 是什么意思?
这表示服务端认为今天已经签到过。它可能出现在网页手动签到之后;不能单凭此响应证明脚本完成了当日首次签到或新增积分,请核对积分流水。
Q: Cookie 多久过期?
没有固定保证。退出登录、修改密码、服务端会话策略变化都可能让 Cookie 提前失效。Actions 真正失败并提示登录/认证问题时,重新获取 Cookie 并更新 GLADOS_COOKIE 即可。
Q: 支持多个账号吗?
支持!用英文符号 & 分隔多个 Cookie:
cookie1&cookie2&cookie3
Q: 没有收到微信推送怎么办?
- 检查所选渠道的 Secret 是否配置正确:Server酱使用
SERVERCHAN_SENDKEY,PushPlus 使用PUSHPLUS_TOKEN。 - 在相应服务的网站测试发送功能,并确认已绑定接收渠道。
- 默认
PUSH_LEVEL=fail_only,所有账号签到成功且没有兑换事件时不推送。需要每次推送时,在 Actions 的 Variables 中设置PUSH_LEVEL=all。 - 确认手动运行时没有勾选
diagnose_only,并查看 Actions 日志中的推送结果。
PushPlus 完全可选,不影响签到。PushPlus 官方说明要求发送消息的账号完成实名认证,未实名通常返回 905;认证费用以其当时页面为准,不是本项目收取的费用。
不使用该服务时,可以不配置或删除 PUSHPLUS_TOKEN;签到仍会执行,也可以配置 SERVERCHAN_SENDKEY 使用 Server酱,或配置 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID 使用 Telegram 推送。
Q: 为什么一天运行多次、收到多条通知?
通常是同时启用了 GitHub 内置 schedule 和 cron-job.org。请二选一;本项目默认只需内置 schedule。新版默认 PUSH_LEVEL=fail_only,正常完成时不会反复推送。
Q: 积分、兑换天数和流量怎么算?
签到积分、会员剩余天数和流量额度是不同的量。本项目从 GLaDOS API 读取积分、剩余天数与兑换选项;脚本不会为账号分配或重置流量,也不能用固定的“积分 → GB”比例计算流量。
自动兑换使用本仓库预设的 EXCHANGE_PLAN(默认 plan500,按 500 分→100 天配置)向服务端提交兑换请求;实际可选档位、到账天数、套餐流量和重置规则,均以自己账号的 GLaDOS 控制台 为准。若不希望自动兑换,设置仓库 Variable EXCHANGE_PLAN=off。不要把某次显示的“500 分→90 天”或其他档位当作长期不变的承诺。
Q: Actions 运行失败怎么办?
- 点击失败的运行记录查看详细日志
- 检查 Cookie 格式是否正确
- 如果还是不行,欢迎提 Issue!
GitHub 的 schedule 不是实时调度器:高负载时可能延迟,极端情况下可能丢弃排队任务;公开仓库连续 60 天无活动会自动停用 schedule。为降低风险,本项目采用非整点运行、脚本内三次重试和每月一次保活提交。
这仍不能保证第三方服务 100% 可用:GLaDOS 宕机、Cookie 失效、GitHub 故障或用户自行关闭 Actions 时,签到会失败。新版会让真正失败返回非零退出码,以便 Actions 邮件和可选通知准确报警。
| 文件 | 说明 |
|---|---|
checkin.py |
核心签到脚本 |
.github/workflows/checkin.yml |
GitHub Actions 配置 |
requirements.txt |
Python 依赖 |
tests/ |
结果判断与重试测试 |
images/ |
教程截图 |
- 📝 提 Issue:遇到问题请提 Issue,作者很乐意帮助技术新手!
- ⭐ Star:如果对你有帮助,请点个 Star 支持一下
- 🍴 Fork:欢迎 Fork 并贡献代码
感谢通过 Pull Request 改进本项目的贡献者。每一项修复和文档改进都让自动签到更可靠,也让新用户更容易完成配置。
| 贡献者 | 贡献 | Pull Request |
|---|---|---|
| @Ch3nSir | 添加 Server酱 Turbo / Server酱³ 推送支持,补充部署说明、NixOS 配置和通知回归测试。 | #27 |
| @badpinkman | 适配新版 gld:sess 会话与浏览器设备校验,完善 Cookie 获取、User-Agent 配置和认证失败提示,并提供真实运行验证。 |
#18 |
| @Unexpectedlyc | 调整 README 的部署顺序与说明,减少 GitHub Actions 和外部定时器配置带来的误解。 | #5 |
| @Initsnow | 添加 Telegram 推送、通知级别与 NixOS Flake 支持,并修复 Telegram 消息格式问题。 | #3 |
同时感谢 @LxFairy 提交上游同步与冲突处理 PR(#8、#9,未合并),以及在 Issues 中提供报错日志、排查线索和复测反馈的用户。
感谢 @chengchang1987-cloud 在 Issue #28 提供积分流水、challenge 排查证据和参考脚本。参考脚本的核心 proof 算法与已合并的 #31 一致;本次进一步采纳日志即时刷新(flush=True)及 2.7 秒等待时间(在 2.5 秒基础上增加 0.2 秒余量)。原有的 nonce/TTL 校验、同域提交、失败时不回退旧签到流程、User-Agent 兼容和推送行为均保留。这两项改进不代表首次签到奖励已恢复,仍需以下一次首次签到返回及实际积分入账核验。
特别感谢 @badpinkman 对 2026 年 9 月认证故障的排查与修复,帮助本项目恢复正常签到。
- 在 README 顶部区分 Turnstile 拒绝实测、历史成功、手动/重复签到及工单反馈。
- 添加来源和脱敏数据征集入口;本次没有修改签到代码或发布验证修复。
- 合并 @badpinkman 的 PR #18,适配
gld:sess/gld:sess.sig和GLADOS_USER_AGENT。 - 旧会话导致的“没有权限”需要通过重新登录、更新完整 Cookie 解决;设备校验还要求 User-Agent 与生成会话的浏览器一致。Fork 同步代码不会自动更新个人仓库的 Secrets 和 Variables。
- 维护者仓库在更新配置后完成真实验证:首次签到成功,同日重复签到正常返回。
- 识别
Today's observation logged...等 2026 正常返回,不再显示“成功 0/1” - 失败自动重试三次,最终失败返回非零退出码
- 默认仅失败推送,避免多个调度器造成通知轰炸
- 每天一次签到、每月一次保活,替代每天保活提交
- 修正 workflow dispatch 的 PAT 权限、HTTP 状态码和 404 排障说明
问题:签到始终返回 "please checkin via https://glados.cloud",导致机器人无法签到。
原因:GLaDOS 官方更新了 API,签到 token 必须从 glados.one 改为 glados.cloud。
修复:更新 checkin.py 中的 token 参数。
排查过程:
- 使用浏览器 DevTools 抓包分析真实签到请求
- 对比 Python 脚本与浏览器请求的差异
- 尝试添加 Headers、模拟 TLS 指纹等方案(均无效)
- 最终通过测试不同 token 值发现问题根源
💡 如果你在使用其他签到项目遇到同样问题,可以参考本项目的修复方案!
- 初始版本发布
- 支持 glados.cloud 域名
- PushPlus 微信推送
- GitHub Actions 自动签到
MIT
Made with ❤️ for GLaDOS users in 2026
🔧 文档状态更新:2026-11-14;签到可用性见顶部公告
⭐ Star 一下,支持作者持续更新!⭐











