什么是SIGAA
SIGAA Skill 是一个专为巴西联邦大学设计的自动化工具,旨在帮助用户高效地与 SIGAA(学术活动综合管理系统)进行交互。该系统被包括 UNB(巴西国立大学)在内的50余所巴西高校广泛采用,是学生、教师和行政人员日常教务管理的重要平台。由于 SIGAA 本身基于 JSF(JavaServer Faces)架构且未提供公开的 REST API,SIGAA Skill 通过模拟浏览器行为,利用 curl 和 Python 脚本实现自动化操作,从而绕过了官方接口的限制。所有功能均依赖用户身份验证后的网页抓取技术,确保与目标系统的无缝对接。该工具的设计充分考虑了安全性与稳定性,要求用户通过环境变量传递登录凭证,避免敏感信息泄露,并内置会话管理和请求延迟机制,以应对系统的反爬策略。 使用 SIGAA Skill 前,用户需配置三项关键环境变量:`SIGAA_URL`(机构基础 URL)、`SIGAA_USER`(学号或 CPF)以及 `SIGAA_PASSWORD`(密码)。其中,用户名格式因学校而异,建议参考项目文档中的机构支持列表。一旦完成配置,即可通过简单的 Bash 脚本命令快速执行各类操作,如查看成绩、课程表、注册状态等。整个流程强调自动化与轻量化,无需复杂安装,仅需标准 Unix 环境和 curl 工具即可运行。此外,脚本会自动处理 Cookie 文件的安全权限(chmod 600),并在 shell 退出时自动清理,进一步保障隐私安全。 尽管 SIGAA Skill 功能强大,但其运作高度依赖于目标院校的 SIGAA 系统版本和行为模式。由于每次 POST 请求都需要最新的 ViewState 参数,若操作失败(如返回首页或提示“ViewState 过期”),通常意味着需要重新获取门户页面刷新状态。同时,SIGAA 会话通常在约20分钟无操作后失效,因此长时间任务中需定期重新登录。网络层面,所有请求仅限于 `$SIGAA_URL` 及其关联的 CAS SSO 单点登录主机,用户应确认这些地址与其所在学校一致,以防误连其他站点。总体而言,SIGAA Skill 是一款面向特定生态的高度实用型工具,特别适合需要批量查询、数据导出或集成教务流程的技术用户。
核心功能特点
- 支持50余所巴西联邦大学的 SIGAA 系统自动化操作
- 基于 JSF 网页抓取技术,无需官方 REST API 支持
- 提供学生端与教师端的完整功能覆盖(成绩、课表、考勤等)
- 使用环境变量传递凭据,保障登录信息安全
- 自动管理 Cookie 文件权限与生命周期,防止信息泄露
- 内置请求延迟与会话续期机制,提升操作稳定性
适用场景
SIGAA Skill 最典型的应用场景是学生日常学业信息查询。例如,一名 UNB 本科生希望在不登录网页端的情况下,快速获取本学期已选课程的详细课表、当前学期成绩以及注册申请的状态(SUBMETIDA/DEFERIDA/NEGADA)。通过执行 `bash scripts/sigaa_student.sh schedule` 或 `grades` 命令,系统将自动登录 SIGAA 并解析 HTML 响应,提取结构化数据输出至终端,极大提升了信息获取效率。对于需要定期监控选课结果的学生而言,该工具可集成到定时任务中,实现自动通知功能。 另一个高频使用场景是教师的教学管理工作。教授可以使用 `bash scripts/sigaa_professor.sh attendance` 检查待处理的考勤记录,或通过 `students ` 命令导出某门课程的全体学生名单,便于后续的成绩录入或出勤统计。此外,教师还能利用 `schedule` 脚本查看自己的授课安排,避免时间冲突。这些操作在传统网页界面下往往涉及多步点击和表单提交,而 SIGAA Skill 将其简化为一行命令,显著节省了重复性劳动的时间成本。 除了个体用户的便利性需求外,SIGAA Skill 也适用于开发者和系统集成商构建自动化工作流。例如,教育机构的信息中心可以调用其脚本批量导出全校学生的 GPA 数据,用于生成年度分析报告;或者与内部数据库对接,实现学生信息同步更新。虽然此类高级用法需要一定的脚本编写能力,但项目提供的参考指南(如 student-guide.md 和 professor-guide.md)详细列出了所有可用的 JSF 动作路径和响应解析方法,降低了二次开发的门槛。需要注意的是,所有自动化操作必须遵守学校的网络使用政策,避免因频繁请求触发反爬机制导致账户受限。
