# 广州理工自动宿舍查寝 **Repository Path**: AMDMolang/Dormitory-inspection ## Basic Information - **Project Name**: 广州理工自动宿舍查寝 - **Description**: 广州理工自动宿舍查寝 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 广州理工学院查寝脚本 基于 [CMJNB/bed_check](https://github.com/CMJNB/bed_check) 修改而来,用于 [广州理工学院查寝系统](https://xsfw.gzist.edu.cn/xsfw/sys/swmzncqapp/*default/index.do) 的自动化签到。 通过广州理工统一认证平台登录,自动完成验证码识别、密码加密和查寝流程。 ## 功能特点 - 自动验证码识别(ddddocr + OCR 数学计算) - RSA 密码加密(Node.js) - 支持多种凭证输入方式:配置文件、环境变量、命令行参数 - 首次运行自动引导配置账号密码 - Windows 定时任务支持和 GitHub Actions 自动运行 - 消息通知(企业微信、QMSG、飞书、钉钉、邮件) - 完善的错误处理和重试机制 ## 环境要求 - Python 3.13+ - Node.js v24.13.0+(用于 RSA 密码加密) - Windows 10+ ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` > Python 新手可参考 [依赖安装教程.txt](./依赖安装教程.txt) ### 2. 配置账号 首次运行时会自动提示输入学号和密码,保存到 `login.ini`: ```bash python main.py ``` 也可手动创建 `login.ini`: ```ini [loginInfo] LOGIN_USERNAME = 你的学号 LOGIN_PASSWORD = 你的密码 [setting] ``` > `login.ini` 已加入 `.gitignore`,不会被提交到 Git 仓库。 ### 3. 运行 双击 `启动查寝.bat` 或执行: ```bash python main.py ``` ### 4. 定时任务(可选) 以管理员身份运行 `设置定时任务.bat`(该文件已被删除,可手动通过 `taskschd.msc` 创建)。 ## 命令行参数 ```bash python main.py [选项] ``` | 参数 | 说明 | |------|------| | `-e`, `--env` | 从环境变量读取账号密码 | | `-c`, `--config` | 从指定配置文件读取 | | `-u`, `--username` | 命令行传入用户名 | | `-p`, `--password` | 命令行传入密码 | 优先级:无参数(login.ini)> `-e` > `-c` > `-u` ## GitHub Actions 自动查寝 1. **Fork 仓库** 2. **配置 Secrets**:在 `Settings → Secrets and variables → Actions` 添加: - `LOGIN_USERNAME`:学号 - `LOGIN_PASSWORD`:密码 - `SETTING_STRING`(可选):JSON 格式的配置覆盖,见 [setting.py](./setting.py) 3. **修改定时时间**:编辑 `.github/workflows/定时自动查寝.yml` 中的 cron 表达式 ## 项目结构 | 文件 | 说明 | |------|------| | `main.py` | 主程序,查寝爬虫逻辑 | | `login.js` | RSA 密码加密脚本(Node.js 执行) | | `env.py` | 环境变量与配置读取 | | `setting.py` | 全局配置文件 | | `local_tools.py` | 消息通知模块 | | `pillow_compat.py` | Pillow 兼容性补丁 | | `requirements.txt` | Python 依赖 | | `login.ini` | 用户账号配置(已 gitignore) | | `启动查寝.bat` | 一键启动脚本 | | `删除定时任务.bat` | Windows 定时任务删除 | ## 技术栈 - **爬虫框架**:feapder - **验证码识别**:ddddocr - **密码加密**:Node.js + RSA(login.js) - **图片处理**:Pillow - **自动执行**:Windows 任务计划程序 / GitHub Actions ## 常见问题 **Q: 验证码识别失败?** numpy 版本不兼容,ddddocr 要求 `numpy < 2.0.0`: ```bash pip uninstall numpy -y pip install "numpy<2.0.0" ``` **Q: 密码加密失败?** 确保已安装 Node.js:`node --version`,否则会降级使用明文密码。 **Q: 提示"当前时段不在考勤时段内"?** 程序运行正常,只是当前不在查寝时段。 **Q: 定时任务设置失败?** 需要以管理员身份运行 bat 脚本,或手动通过 `Win+R` → `taskschd.msc` 创建。 ## 注意事项 1. 妥善保管账号密码,`login.ini` 已被 gitignore 排除 2. 请勿在公共场合运行此脚本 3. 务必按 `requirements.txt` 安装依赖,尤其注意 `numpy<2.0.0` 4. 定时任务推荐手动创建(`taskschd.msc`),bat 脚本创建的可能不稳定 ## 许可证 [MIT License](./LICENSE) ## 免责声明 本项目基于 [CMJNB/bed_check](https://github.com/CMJNB/bed_check) 修改。仅供学习交流使用,使用者需自行承担使用风险,请遵守学校相关规定。