1599 字
4 分钟
一个自动签到工具:CheckinBox
2026-05-23

一个自动签到工具:CheckinBox#

如果你每天都会打开一堆网站做签到、领积分、攒经验,时间久了就会发现:这类操作本身并不复杂,但它特别容易被忘记。

CheckinBox 解决的正是这个问题。它把不同网站的签到脚本收拢到一个统一入口里,让脚本按计划自动执行。你只需要准备对应站点的 Cookie,配置好运行环境,之后就可以让它每天自动跑。

本文介绍的是我基于 tautcony/CheckinBox 做的修改。原项目是通过 GitHub Actions、Repository Secrets 和 schedule 来运行签到任务;我修改的这版更偏向“放在自己的服务器或 NAS 上长期运行”,所以改成了 Docker 容器部署 + cron 定时任务的部署方式。

下载本文使用的修改版:checkinbox-all-scripts-clean.tar.gz(约 74 KB)。

当前支持的站点#

这份改版导出包已经包含这些站点:

genshin
hdcity.leniter.org
mydigit.cn
nodeseek.com
skland.com
smzdm.com
tsdm39.net
u2.dmhy.org
v2ex.com

其中 checkin.sh 会自动扫描各目录下的 Python 签到脚本并依次执行。对于不想启用的站点,只要不配置对应 Cookie,脚本就会跳过,不影响其他站点运行。

导出包里也保留了 mybmw/checkin.js,但默认的 checkin.sh 只扫描 checkin.py,所以 MyBMW 脚本不会自动执行。

和原项目相比改了哪里?#

原项目 tautcony/CheckinBox 的结构已经很清楚:每个站点一个目录,脚本里读取对应的 Secrets 或环境变量,再由 GitHub Actions 定时触发。

我主要做了以下调整:

  1. 增加 Docker 部署文件,包括 docker-compose.ymldocker/Dockerfiledocker/entrypoint.shdocker/checkinbox.cron
  2. 把运行方式从 GitHub Actions 改成自托管容器,适合放在服务器、NAS、家用小主机上长期运行。
  3. 增加 .env.example,把各站点 Cookie、代理、通知变量集中到一个配置文件里。
  4. 增加 .dockerignore,避免 .env.env.*、缓存文件被复制进镜像,降低 Cookie 泄露风险。
  5. 增加 RUN_ON_START 开关,容器启动时可以先立即执行一次签到。
  6. 增加按 Asia/Shanghai 时区每天 10:00 执行的 cron 计划任务。
  7. 增加可选代理变量 HTTP_PROXYHTTPS_PROXYALL_PROXYNO_PROXY,方便在容器内处理部分站点的网络访问问题。
  8. 新增 nodeseek.com/checkin.py,使用 COOKIE_NODESEEK,通过 POST https://www.nodeseek.com/api/attendance?random=true 签到,并支持 NODESEEK_RANDOM=1
  9. 新增 hdcity.leniter.org/checkin.py,使用 COOKIE_HDCITY,访问 /sign 完成签到,并把“已签到”识别为成功状态。
  10. 修过 cron 拿不到 Docker env_file 环境变量的问题:如果定时任务日志里全部显示“未配置Cookie”,通常就是 cron 环境没有加载 .env,需要让 cron 执行前加载容器运行时环境。

部署前准备#

你需要一台可以运行 Docker 的机器,例如 VPS、NAS、家用 Linux 小主机,或者安装了 Docker Desktop 的电脑。

先确认 Docker 和 Compose 可用:

docker --version
docker compose version

部署步骤#

1. 解压项目#

假设导出包叫 checkinbox-all-scripts-clean.tar.gz

tar -xzf checkinbox-all-scripts-clean.tar.gz
cd checkinbox-all-scripts-clean

2. 创建配置文件#

复制模板:

cp .env.example .env

编辑 .env

nano .env

最小配置可以像这样:

TZ=Asia/Shanghai
RUN_ON_START=1
LOG_LEVEL=INFO
COOKIE_V2EX=
COOKIE_SMZDM=
COOKIE_NODESEEK=
NODESEEK_RANDOM=1
COOKIE_HDCITY=
SCKEY=
SCTKEY=
TG_TOKEN=
TG_CHATID=

只填自己要用的站点即可。没有 Cookie 的站点会自动跳过。

如果你的运行环境需要代理,可以填:

HTTP_PROXY=
HTTPS_PROXY=
ALL_PROXY=
NO_PROXY=localhost,127.0.0.1

3. 启动容器#

docker compose up -d --build

查看容器状态:

docker compose ps

查看日志:

docker logs -f checkinbox

如果 RUN_ON_START=1,容器启动后会先立即跑一轮,日志里能看到各站点的签到结果。

4. 手动测试#

手动跑全部签到:

docker exec checkinbox sh -lc 'cd /app && bash checkin.sh'

手动跑单个站点:

docker exec checkinbox sh -lc 'cd /app && pipenv run python3 nodeseek.com/checkin.py'
docker exec checkinbox sh -lc 'cd /app && pipenv run python3 hdcity.leniter.org/checkin.py'
docker exec checkinbox sh -lc 'cd /app && pipenv run python3 v2ex.com/checkin.py'

查看 cron 是否安装成功:

docker exec checkinbox crontab -l

默认计划任务是每天 10:00 执行:

0 10 * * * bash /app/checkin.sh

如果你希望改时间,修改 docker/checkinbox.cron 后重新构建:

docker compose up -d --build --force-recreate

大多数站点的自动签到都依赖 Cookie。Cookie 可以理解成浏览器里保存的登录凭证,脚本拿到 Cookie 后,就能以你的登录状态访问签到接口。

以 Safari 为例:

  1. 打开目标网站,并确认已经登录账号。
  2. 按 ⌥ Option + ⌘ Command + I 打开“网页检查器”。
  3. 如果没有反应,先进入 Safari 菜单栏:Safari 浏览器 → 设置 → 高级,勾选“在菜单栏中显示‘开发’菜单”。
  4. 打开“网络”面板。
  5. 刷新页面,或者点击一次签到页面。
  6. 在请求列表中选择一个当前站点的请求,通常选择首页、签到页或接口请求。
  7. 查看右侧或下方的请求详情,找到 请求标头 / Request Headers。
  8. 找到 Cookie: 这一行。
  9. 复制 Cookie: 后面的内容,不要复制 Cookie: 这个字段名。
  10. 粘贴到 .env 对应变量后面,保持为一整行。

Nodeseek:

Nodeseek Cookie 获取示例

NODESEEK_RANDOM=1 表示使用“试试手气”。如果日志里显示“今天已完成签到,请勿重复操作”,也算成功。

U2:

U2 Cookie 获取示例

复制时不用单独挑字段,直接复制整个 Cookie 请求头内容。

其他站点也是同样思路:登录对应网站,打开开发者工具,复制该域名请求里的 Cookie,再填到 .env 里对应变量。

Skland 比较特殊,使用的是:

SKLAND_UID_CRED_KEY=uid&cred_key

这个值按脚本要求填写,不是普通的浏览器 Cookie。

改完 .env 后,需要重启容器,让 Docker 重新加载环境变量:

docker compose up -d --force-recreate

然后手动跑一次确认:

docker exec checkinbox sh -lc 'cd /app && bash checkin.sh'

如果日志显示“未配置Cookie,跳过签到”,优先检查 .env 变量名有没有写错、Cookie 有没有换行、容器有没有重新创建。

如果手动执行正常,但每天定时任务不正常,重点检查 cron 是否能读取到运行时环境变量。cron 的环境经常比交互 shell 少,必要时需要在 entrypoint 里把环境写入文件,再让 cron 任务执行前 source 这个文件。

安全注意事项#

Cookie 就是登录凭证,泄露后别人可能直接以你的身份访问网站。使用这类工具时,最重要的是不要泄露 Cookie。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

一个自动签到工具:CheckinBox
https://blog.patlabor.cn/posts/2-checkinbox-assets/checkinbox-auto-sign-docker/
作者
綺麗
发布于
2026-05-23
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时