技能标识:sigaa
Interact with SIGAA (Sistema Integrado de Gestão de Atividades Acadêmicas), the academic management system used by 50+ Brazilian federal universities (UNB, UFRN, UFC, UFPE, UFCG, UFPI, etc.). Use when: (1) checking enrollment status or classes for students, (2) verifying grades or academic history, (3) accessing professor portal (classes, attendance, grade launch), (4) logging in to any SIGAA instance via CAS SSO or direct authentication, (5) automating any SIGAA task via web scraping. Handles b
技能名称: sigaa
详细描述:
SIGAA 是一个基于 JSF 的 Web 系统,没有公开的 REST API。所有自动化操作均使用经过身份验证的 Web 抓取(curl + Python)。
必需的环境变量:
bash
export SIGAA_URL=https://sigaa.unb.br # 机构基础 URL(末尾无斜杠)
export SIGAA_USER=241104251 # 登录名:学号或 CPF(因机构而异)
export SIGAA_PASSWORD=yourpassword # 您的 SIGAA 密码
bash
source scripts/sigaa_login.sh
bash
bash scripts/sigaa_student.sh status # 基本信息 + 当前课程
bash scripts/sigaa_student.sh enrollments # 当前学期课程
bash scripts/sigaa_student.sh enrollment-result # 选课申请状态(已提交 / 已批准 / 已拒绝)
bash scripts/sigaa_student.sh grades # 成绩
bash scripts/sigaa_student.sh history # 完整学业历史
bash scripts/sigaa_student.sh schedule # 课程表
bash
bash scripts/sigaa_professor.sh classes # 当前学期课程
bash scripts/sigaaprofessor.sh students
bash scripts/sigaa_professor.sh attendance # 待处理的考勤
bash scripts/sigaa_professor.sh schedule # 教学日程
SIGAA 使用 JavaServer Faces (JSF) 和 jsCookMenu。所有菜单操作都需要使用最新的 ViewState 和 jscook_action 进行 POST 请求:
bash
VS=$(curl -s -b $SIGAACOOKIEFILE -c $SIGAACOOKIEFILE \
${SIGAA_URL}/sigaa/portais/discente/discente.jsf | \
grep -oP name=javax\.faces\.ViewState[^>]*value=\K[^]+ | head -1)
curl -s -L -b $SIGAACOOKIEFILE -c $SIGAACOOKIEFILE \
-X POST ${SIGAA_URL}/sigaa/portais/discente/discente.jsf \
-d menu%3Aformmenudiscente=menu%3Aformmenudiscente \
-d id=${SIGAAUSERID} \
--data-urlencode jscookaction=menuformmenudiscentediscentemenu:A]#{BEAN.method} \
--data-urlencode javax.faces.ViewState=${VS}
完整操作参考 → references/student-guide.md 和 references/professor-guide.md
python
import re, html as h
def clean_html(content):
content = re.sub(r, , content, flags=re.DOTALL)
content = re.sub(r, , content, flags=re.DOTALL)
text = re.sub(r<[^>]+>, , content)
return h.unescape(re.sub(r[ \t]+, , text))
def extracttablerows(html_content):
content = re.sub(r, , html_content, flags=re.DOTALL)
rows = re.findall(r
| 症状 | 解决方法 |
|---|---|
| Credenciais inválidas | 检查机构的用户名格式(参见 references/institutions.md) |
| Nenhuma turma neste semestre |
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 sigaa-1776282213 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 sigaa-1776282213 技能
skillhub install sigaa-1776282213
文件大小: 12.72 KB | 发布时间: 2026-4-16 15:51