- Thanks To JasonYANG170/AutoCheckBJMF ,根据自己学校的签到进行了简化
- 仅根据自己学校的班级魔方需求更改简化代码,仅支持GPS签到(可在范围外),其他功能请到项目AutoCheckBJMF项目查看其他内容
- 可配置多人签到
- 可配置QQ/WX通知签到情况
- 如果你觉得好用,
Please Starorz
项目已进行模块化重构,提高了代码的可维护性和可读性:
BJMF/
├── BJMF.py # 主程序,负责整体流程控制
├── auto_add_user.py # 自动添加用户工具,通过微信扫码获取用户信息并写入配置data.json
├── .env # (可选) 环境变量配置文件,用于配置公共参数
└── utils/ # 工具模块目录
├── __init__.py # 模块初始化文件
├── config_manager.py # 配置文件管理模块
├── user_info.py # 用户信息获取模块
├── notification.py # 通知发送模块
└── attendance.py # 签到任务执行模块
- BJMF.py: 主程序入口,负责读取配置、遍历用户、调用签到任务
- auto_add_user.py: 自动添加用户工具,通过微信扫码获取用户信息并写入data.json配置文件;支持读取.env公共配置
- config_manager.py: 处理配置文件的读取和保存
- user_info.py: 获取用户信息和班级信息
- notification.py: 处理QQ和微信消息发送
- attendance.py: 执行签到任务的核心逻辑
- 自动从指定课程中获取签到项
- 通过模拟表单提交,实现自动签到
- 签到成功后,发送QQ/WX消息通知(可选配,可以不用配置)
- 支持通过微信扫码快速添加用户
- 支持
.env配置公共参数,简化多人配置
-
2026.01.10
auto_add_user.py优化: 支持通过.env文件配置公共参数(经纬度、通知Key等),简化配置流程auto_add_user.py优化: 增加二维码自动清理机制,避免垃圾文件堆积及文件占用问题utils/attendance.py修复: 优化签到状态检测逻辑,增加对"已签到"状态的HTML解析,解决正则匹配失败导致的误报问题
-
2025.12.15
- 更新
utils/attendance.py,改用 requests.Session()防止获取签到项失败问题;同时增加了对 response.url 的检测
- 更新
-
2025.12.04 v2版本
- 新增
auto_add_user.py工具,实现微信扫码自动获取用户信息并写入配置文件data.json - 简化了用户添加流程,无需手动获取Cookie和班级ID
- 新增
在使用该脚本之前,请确保安装以下依赖项:
pip install -r requirements.txt最简单的方法,无需手动抓包或查找 Cookie。
-
(可选) 配置公共参数: 在项目根目录下创建
.env文件(可参考下方模板),填入经纬度等公共信息。# 是否启用公共配置 (True/False) ENABLE_COMMON_CONFIG=True # 公共配置参数 COMMON_LAT=xxxxxx # 纬度 COMMON_LNG=xxxxxx # 经度 COMMON_ACC=30 # 精度 COMMON_QMSG_KEY= # Qmsg推送Key(可选) COMMON_WX_KEY= # Server酱推送Key(可选)
-
运行自动工具:
python auto_add_user.py
-
扫码登录: 使用微信扫描弹出的二维码,程序会自动获取 Cookie 和班级信息并保存到
data.json。
如果你需要手动配置 data.json,可以按照以下步骤获取参数。
{
"students": [
{
"name": "用户备注",
"class": "110141",
"lat": "30.123456",
"lng": "120.123456",
"acc": "30",
"cookie": "从浏览器获取的Cookie字符串",
"QmsgKEY": "",
"WXKey": ""
}
]
}-
Cookie 获取方法 (PC端浏览器):
- 电脑微信登录并打开签到页面:
http://g8n.cn/student/login?ref=%2Fstudent - 按
F12打开开发者工具,切换到 网络 (Network) 标签。 - 刷新页面,在左侧请求列表中找到第一个请求(通常是数字或 student)。
- 点击该请求,在右侧 标头 (Headers) -> 请求标头 (Request Headers) 中找到
Cookie。 - 复制
Cookie:后面的所有内容(通常以PHPSESSID=...或remember_student_...开头)。
- 电脑微信登录并打开签到页面:
-
Class (班级ID):
-
经纬度 (Lat/Lng):
- 使用 高德地图坐标拾取器 获取。
-
推送 Key (可选):
- 配置用户:使用上述任意一种方法完成用户配置(生成
data.json)。 - 执行签到:
python BJMF.py
- 自动化运行:
- Windows: 使用"任务计划程序"设置定时任务。
- Linux: 使用
crontab设置定时任务。 - 云函数: 可部署至云函数平台。
data.json、.env等文件中包含个人 Cookie、经纬度、推送 Key 等敏感信息,不会被提交到 Git 仓库(已在.gitignore中忽略),请妥善保管本地副本并做好备份。web_signin/目录下的本地数据库文件web_signin/db/web_signin.db也已默认加入.gitignore,仅用于本地运行和调试,不会上传到远程仓库。- 如需分享或上传日志/截图,请注意手动打码或删除其中的 Cookie、班级 ID、经纬度等个人隐私信息。
web_signin/ 提供了一个基于 Flask + 前端页面的Web 管理界面,用于在浏览器中管理用户、查看签到任务等。
- 安装 Web 版依赖(在项目根目录执行):
pip install -r web_signin/requirements.txt
- (可选)在
web_signin/目录下复制一份配置模板:如需自定义 Web 端口,可在cd web_signin copy config.json.example config.json # Windows # 或 cp config.json.example config.json # Linux / macOS
config.json中填写"port": 9988等数值,或通过环境变量WEB_SIGNIN_PORT覆盖。 - 启动 Web 服务:
python web_signin/run.py
- 在浏览器访问:
若修改了端口,请将
http://127.0.0.1:99889988替换为实际端口。
项目内已提供 web_signin/Dockerfile,可用于快速构建和运行 Web 版:
docker build -t bjmf-web -f web_signin/Dockerfile .
docker run -d --name bjmf-web -p 9988:9988 bjmf-web如需调整端口,可修改映射 -p 宿主端口:容器端口,或通过环境变量 WEB_SIGNIN_PORT 覆盖容器内部端口。
- 程序会自动检测并填充空的 class 字段。
- 签到二维码/Cookie 具有时效性,如果签到失败(提示 Cookie 无效),请重新运行
auto_add_user.py更新凭证。

