与SIGAA(学术活动综合管理系统)互动,该系统被50余所巴西联邦大学(如UNB等)使用。

安装

概览

什么是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 是一款面向特定生态的高度实用型工具,特别适合需要批量查询、数据导出或集成教务流程的技术用户。

核心功能特点

  1. 支持50余所巴西联邦大学的 SIGAA 系统自动化操作
  2. 基于 JSF 网页抓取技术,无需官方 REST API 支持
  3. 提供学生端与教师端的完整功能覆盖(成绩、课表、考勤等)
  4. 使用环境变量传递凭据,保障登录信息安全
  5. 自动管理 Cookie 文件权限与生命周期,防止信息泄露
  6. 内置请求延迟与会话续期机制,提升操作稳定性

适用场景

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 动作路径和响应解析方法,降低了二次开发的门槛。需要注意的是,所有自动化操作必须遵守学校的网络使用政策,避免因频繁请求触发反爬机制导致账户受限。