关于职教智慧云的签到研究
本项目记录对“职教智慧云” App 及其 Flutter 框架的研究,以及如何从日志中获取 Cookie、请求课程与打卡信息并完成打卡的基本实践。理论上可以直接跳过蓝牙设备验证进行远程打卡
- 目标:从日志中截取
token,获取课程与打卡信息,并执行打卡。 - 平台:Android;命令示例包含 Windows PowerShell 与 Linux/macOS 两种形式。
1. 抓取 Cookie(token)
连接 Android 设备后,查看 Flutter 在 Dart 层输出的日志并筛选包含 cookie 的行。
Windows(PowerShell): 在此之前您需要安装安卓调试工具(platform-tools)
adb shell
logcat -s flutter | grep -i cookie
Linux/macOS:
adb logcat -s flutter | grep -i cookie
从输出中截取形如 token=XXXX 的值,后续作为请求头中的 Cookie 使用。
2. 获取课程与打卡信息
接口地址:https://m-zjt.kefang.net/api/zms/zhijiaotong/page/homePageData
通用请求头(表单):
User-Agent: Dart/3.6 (dart:io)
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Cookie: token=YOUR_TOKEN
示例(PowerShell/curl):
curl --silent `
-H "User-Agent: Dart/3.6 (dart:io)" `
-H "Accept-Encoding: gzip" `
-H "Content-Type: application/x-www-form-urlencoded" `
-H "Cookie: token=YOUR_TOKEN" `
"https://m-zjt.kefang.net/api/zms/zhijiaotong/page/homePageData"
示例(Linux/macOS/curl):
curl -s \
-H "User-Agent: Dart/3.6 (dart:io)" \
-H "Accept-Encoding: gzip" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Cookie: token=YOUR_TOKEN" \
"https://m-zjt.kefang.net/api/zms/zhijiaotong/page/homePageData"
从响应中提取 contentId 以及后续需要的 attendanceId 等字段。
3. 提交打卡
接口地址:https://m-zjt.kefang.net/api/zms/attendance/attendanceRecord/punchCourseByStudent
方法:PUT;Content-Type:application/x-www-form-urlencoded
示例(PowerShell/curl):
curl -X PUT `
-H "User-Agent: Dart/3.6 (dart:io)" `
-H "Accept-Encoding: gzip" `
-H "Content-Type: application/x-www-form-urlencoded" `
-H "Cookie: token=YOUR_TOKEN" `
-d "attendanceId=YOUR_ATTENDANCE_ID" `
"https://m-zjt.kefang.net/api/zms/attendance/attendanceRecord/punchCourseByStudent"
示例(Linux/macOS/curl):
curl -X PUT \
-H "User-Agent: Dart/3.6 (dart:io)" \
-H "Accept-Encoding: gzip" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Cookie: token=YOUR_TOKEN" \
-d "attendanceId=YOUR_ATTENDANCE_ID" \
"https://m-zjt.kefang.net/api/zms/attendance/attendanceRecord/punchCourseByStudent"
您可在项目文件 main.py 中查看示例脚本
返回结果若包含“操作成功”的 message,则表示打卡成功。
4. 常见问题
token过期:重新通过日志抓取;或在 App 内重新登录再抓取。- 403/401:检查
Cookie是否正确;确认Content-Type是否为表单。 - 字段变动:以实际接口响应为准,名称或层级可能更新。
5. 注意事项
- 仅用于学习与研究,请勿用于任何不当用途。
- 请妥善保护个人隐私与账号安全。
- 操作前请确保已安装
adb并正确连接设备。
Description
Languages
Python
100%