# 大学考勤系统自动签到脚本 (University Auto Sign-in)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
这是一个用于**大学考勤系统**的自动化晚寝签到 Python 脚本。它通过模拟微信客户端的 API 请求,帮助用户自动完成每日的晚寝签到流程。
该脚本具有强大的灵活性,支持:
- **测试模式**:批量探测可成功登录的学号。
- **多种签到模式**:全员签到、仅成功学号签到,以及从成功学号中**随机抽取签到**。
- **数据统计与报表**:自动生成签到排行榜、趋势图等可视化数据,并可通过邮件发送报告。
---
## ✨ 项目特性
* **全自动流程**:完整模拟从获取Token、查询任务到最终提交签到的所有步骤。
* **强大的容错性**:内置多层重试机制,能有效应对Token失效、网络波动等偶发性错误。
* **异步高并发**:使用 `asyncio` 和 `aiohttp` 实现高性能并发签到,百人签到仅需十余秒。
* **灵活的用户选择**:
* **全员模式**:对指定学号段内的所有账号进行签到。
* **智能模式**:仅签到经过**测试模式**验证的成功学号。
* **随机模式**:从成功学号池中**随机抽取**指定数量进行签到,降低规律性操作风险。
* **可视化与通知**:
* 自动生成签到成功率、排行榜、趋势图、热力图等数据。
* 支持将包含详细报表的**邮件报告**发送到指定邮箱。
* **高仿真模拟**:随机轮换 User-Agent、请求间添加随机延时、签到位置随机偏移,模仿真人操作,降低被系统检测的风险。
* **配置集中化**:所有核心配置均在脚本顶部的配置区,修改方便。
## 🚀 如何自行部署和使用
### 1. 环境准备
- 确保你已安装 Python 3.8 或更高版本。
- 克隆或下载本仓库到你的本地设备。
### 2. 安装依赖
本项目仅依赖 `aiohttp` 库。你可以通过 `pip` 进行安装。
```bash
pip install aiohttp打开脚本文件,在 ## *------------------------------------------------------* ## 标记的配置区内完成你的个性化设置。
- 签到模式 (
SIGN_MODE):选择'all'(全员),'success_only'(仅成功) 或'random'(随机抽取)。 - 学号范围 (
SIGN_RANGE):当SIGN_MODE为'all'时,指定签到学号的起止范围。 - 并发限制 (
MAX_CONCURRENT):控制同时进行的签到任务数,建议根据网络状况调整。 - 重试次数 (
MAX_RETRIES,MAX_TOKEN_RETRIES):设置失败重试的总次数和因Token失效而单独重试的次数。 - 密码 (
password):如果考勤系统密码为默认密码Ahgydx@920,无需修改;若要指定密码,请在生成User对象时传入。
enable:是否启用随机抽取(仅在SIGN_MODE为'random'时生效)。sample_size:随机抽取的人数。random_seed:设置一个整数可固定每次的抽取结果(方便测试),设为None则每次结果不同。
enable:设置为True开启邮件报表功能。sender_email与sender_password:填写你的发件邮箱地址和授权码(非登录密码)。receiver_email或receiver_emails:接收报告的邮箱地址。
enable:设置为True会在运行python main.py test时跳过时间检查,方便随时测试。test_range:指定进行批量探测的学号范围。max_concurrent_test:测试时的并发请求数。
脚本支持两种主要的运行模式。
首先,使用测试模式探测一批学号中哪些可以成功登录:
python main.py test脚本会自动测试指定范围内的学号,将成功的学号保存在 success_students.json 文件中。
测试完成后,配置 SIGN_MODE 为 'success_only' 或 'random',然后正常运行即可:
python main.py如果确定范围内的学号都有效,可以直接配置 SIGN_MODE 为 'all' 并运行:
python main.py为了实现全自动签到,可将脚本部署在服务器(如云服务器、树莓派等)上,并使用定时任务工具每日自动执行。
- 对于 Linux/macOS:使用
crontab。 - 对于 Windows:使用“任务计划程序”。
一个简单的 crontab 设置示例(每晚 21:30 执行):
30 21 * * * /usr/bin/python3 /path/to/your/main.py >> /path/to/your/log.txt 2>&1- 本项目仅供学习和技术交流使用,旨在减轻重复性劳动。
- 请勿将其用于任何非法用途或商业活动。
- 由于学校系统可能随时更新,本脚本的有效性不作永久保证。
- 使用本项目即代表你同意承担所有可能由此产生的风险。开发者不承担任何因使用不当或系统更新导致的签到失败、账号异常等后果。
- 如果你发现了 Bug 或有任何改进建议,欢迎提交 Issues 或 Pull Requests。
- 如果你觉得这个项目对你有帮助,不妨给它一个 ⭐ Star!