T00lsCheckin - T00ls 论坛自动签到管理平台

简介

T00lsCheckin 是一个 T00ls 论坛的自动签到管理平台,可以帮你自动完成 T00ls 论坛的每日签到任务。支持管理多个账号、为每个账号设置独立的签到时间、通过 Webhook 推送签到结果通知,适合有多个 T00ls 账号需要维护的师傅使用。

核心签到逻辑源自 thunder-sec/T00lsSign 项目,在此表示感谢。本项目在此基础上增加了 Web 管理界面、多账号管理、定时任务调度和 Webhook 通知等功能,所有代码均由 Vibe Coding 生成。

声明

本工具仅供学习交流,请勿用于非法用途。工具涉及账号密码信息,建议只在可信环境内部署。

特性

  • 多账号管理:支持添加多个 T00ls 账号,带安全提问支持
  • 定时执行:每个账号可以独立配置签到时间,互不干扰
  • Webhook 通知:对接钉钉、飞书、企业微信机器人,签到结果实时推送
  • 执行日志:每次签到的状态、返回信息和执行时间均有完整记录
  • 中英文界面:内置 Vue I18n 国际化支持
  • 美观 UI:Vue 3 + Tailwind CSS 构建的现代化管理界面

技术栈

后端

  • Python Flask
  • SQLite + SQLAlchemy ORM
  • Flask-APScheduler 任务调度
  • JWT 认证
  • Requests + BeautifulSoup4 爬虫

前端

  • Vue 3 (Composition API) + Vite 构建
  • Tailwind CSS
  • Pinia 状态管理 + Vue Router
  • Lucide Vue Next 图标 + Vue I18n 国际化

Docker 部署(推荐)

使用 Docker Compose 一键部署:

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
services:
backend:
image: s0cke3t/t00lscheckin-backend:latest
restart: always
environment:
- TZ=Asia/Shanghai
- FLASK_CONFIG=production # 生产环境
# - SECRET_KEY=${SECRET_KEY} # 不设置时每次启动使用随机密钥
# - JWT_SECRET_KEY=${JWT_SECRET_KEY} # 不设置时每次启动使用随机密钥
- AES_SECRET_KEY=12345678901234567890123456789012 # 用于加密t00ls账户密码,添加账户后请勿修改.
- ANTI_CAPTCHA_KEY=xxxxxxxxxxxxxxxxxxx # https://anti-captcha.com 验证码识别服务api key
- DATABASE_URL=sqlite:////app/data/app.db

volumes:
- /opt/t00lscheckin:/app/data # 数据卷挂载
ports:
- "5000:5000"

frontend:
image: s0cke3t/t00lscheckin-frontend:latest
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- "80:80"

启动后访问 http://[服务器IP]:80 即可进入管理界面。

手动部署

后端

1
2
3
4
5
6
cd backend
python -m venv venv
source venv/bin/activate # Linux/macOS
# .\venv\Scripts\activate # Windows
pip install -r requirements.txt
python app.py

后端运行在 http://localhost:5000

前端

1
2
3
cd frontend
npm install
npm run dev

前端开发服务器通常运行在 http://localhost:5173

默认账户

用户名 密码
admin admin123

登录后请第一时间修改默认密码。

通知模板变量

配置 Webhook 通知时,可使用以下模板变量来定制消息内容:

  • {{result}}:签到结果
  • {{content}}:签到返回的详细内容

根据钉钉/飞书/企业微信机器人的消息格式要求,将变量嵌入到对应的 JSON 或 Markdown 模板中即可。

注意事项

  • AES_SECRET_KEY 用于加密存储 T00ls 账号密码,添加账户后切勿修改,否则已存储的密码将无法解密
  • ANTI_CAPTCHA_KEY 为验证码识别服务的 API Key,需自行准备识别服务
  • 数据库文件位于 backend 目录下的 app.db,建议定期备份
  • 涉及账号密码,请勿在公网直接暴露服务,建议配合 VPN 或反向代理加认证使用
  • JWT_SECRET_KEY 和 SECRET_KEY 若未设置,每次启动会使用随机密钥,多实例部署时建议显式指定

项目结构

1
2
3
4
5
6
7
8
9
10
11
T00lsCheckin/
├── backend/ # Flask 后端
│ ├── api/ # 接口
│ ├── services/ # 核心业务逻辑
│ ├── models.py # 数据库模型
│ └── app.py # 入口
├── frontend/ # Vue 3 前端
│ ├── src/ # 源代码
│ ├── public/ # 静态资源
│ └── index.html # 入口
└── requirements.txt # 后端依赖

界面导览

登录

仪表盘

账号管理

调度任务

通知通道

致谢

感谢 thunder-sec/T00lsSign 项目提供核心签到逻辑,本项目在其基础上进行了 Web 化封装和功能扩展。