易班(yiban)是很多高校学生使用的校园社交平台,部分学校要求每天早晨进行「早操签到」打卡。这个项目通过 Python 脚本自动完成签到过程——配置一次后,每天到点自动打卡,无需手动操作、无需保持电脑开机。
功能特性
- 全自动签到:每天定时执行,无需人工干预
- 真实 App 登录特征:登录流程参考真实 App 请求特征(UA + AppVersion + SecureRandom CSRF),实测稳定登录,新旧账号均可
- 网页管理后台:管理员在任意设备(手机/平板/电脑)登录管理——账号 CRUD/排序/手动签到、审核用户提交的账号、用户管理与权限分级、批量操作、全局公告、签到日志与日历
- 终端面板(TUI):SSH 登录后输入
yiban即可打开交互式管理面板 - SQLite 数据库存储:账号与用户数据存于 SQLite,多人同时操作不互相覆盖、手机号全局唯一有保障;关键管理操作自动审计留痕(HMAC 防篡改)
- 智能定位:在签到范围内生成随机定位点,模拟真实 GPS
- 多账号支持:一个仓库管理多个易班账号,顺序执行 + 队列重试(失败账号放队尾分散重试,避免连击触发风控)
- 消息通知:签到失败时推送通知(Server 酱 / Bark / 企业微信等)
- 一键暂停:系统设置页可暂停自动签到(双重确认,下一轮 cron 生效;手动签到不受影响)
部署方式
| 部署方式 | 适用场景 | 稳定性 | 成本 |
|---|---|---|---|
| 云服务器(推荐) | 有国内服务器;主力签到通道 | 稳定(国内出口不被 WAF 拦截) | 需服务器费用 |
| GitHub Actions(备选) | 无服务器;或作为冗余备份 | 受 WAF 拦截影响,不稳定 | 免费 |
GitHub Actions 的海外 IP 可能被易班 WAF 风控拦截,且反复失败可能触发账号风控。有云服务器时强烈建议使用服务器部署。
技术实现
- 语言/框架:Python 3.11+,Flask(Web 管理后台)
- 调度:服务器 cron(首次签到 + 二次签到防重复 + 日志清理 + 每日备份)
- 存储:SQLite(WAL 模式),账号密码与设备码加密存储
- 部署:gunicorn + nginx 反代,systemd 托管开机自启
使用入口
- 在线 Demo:易班自动签到后台(网页管理后台)
- 源码仓库:github.com/frostpolaris1/yiban-auto-sign
本项目为自托管工具(self-hosted),面向个人/小团体自建使用,适用规模:单站点 100 人以内、管理员 10 人以内。