Repository navigation
Atlas
交大的校园接口大致分四层。数据获取的难度、稳定性和合规边界,主要取决于接口位于哪一层。
| 层 | 典型入口 | 认证 | 个人可得性 | 稳定性 | 典型失败 |
|---|---|---|---|---|---|
| 1 官方 OAuth 开放平台 |
developer.sjtu.edu.cn、api.sjtu.edu.cn、graphql.sjtu.edu.cn、form.sjtu.edu.cn/infoplus
|
clientId/secret + scope | 低:单位、教职工、应用审批 | 高 | 没有 clientId、scope 未批、字段未授权 |
| 2 标准协议 / 有文档的 API |
mail.sjtu.edu.cn 的 IMAP/SMTP;水源的 Discourse REST;选课社区 REST |
邮箱密码;User API Key | 高 | 高/中 | 密码错、key 被撤销、站点策略变化 |
| 3 校园 Web 会话 |
i.sjtu.edu.cn、v.sjtu.edu.cn、第二课堂、传承、水源 Cookie、Pan |
浏览器 Cookie / 站点令牌 | 高:本人登录即可 | 低 | 302 回登录页、HTML 代替 JSON、空列表 |
| 4 公开网页 / 私有 API | 新闻、教务处、图书馆、班车、食堂、场馆 | 无 / 混合 | 高 | 低 | 改版、反爬、没有契约 |
这一层有正式契约。个人开发者最常卡在申请 clientId。
-
jAccount OAuth2/OIDC:身份认证入口。
clientId/clientSecret需要走交我办的「jAccount 接口申请」,服务对象写的是部门、教职工,由部门领导审批后网络信息中心处理。 -
Open API:
https://api.sjtu.edu.cn/v1,覆盖 Profile、Enterprise、Education、Task、Mail、File、Notification、Finance、Card、Unicode、Barcode、Calendar、Signature 等。每个接口按 scope 和授权方式控制。 -
InfoPlus:交我办背后的流程/表单平台,
https://form.sjtu.edu.cn/infoplus/apis/v2/。需要 App 身份、租户/流程权限,User Token 和 System Token 语义不同。 -
数据资源 API:
https://graphql.sjtu.edu.cn/v1。接口名包含 graphql,但最新版使用 REST。需要 Client Credentials 和exchange_data,并按字段审批,主要面向部门业务系统。
Warning
学生个人做自用工具,不要把「申请一个 jAccount clientId」当成默认路径。公开页面写得很清楚:申请人是部门/教职工,应用网址要与申请一致。你需要找老师、实验室、社团或院系挂靠。拿不到 clientId 时,走第 2/3 层。
这一层用的是成熟协议或有公开文档的站点 API,客户端库多,行为相对可预期。
-
交大邮箱:IMAP
mail.sjtu.edu.cn:993(SSL)、SMTPmail.sjtu.edu.cn:465(SSL),用本人邮箱地址和密码。适合做邮件客户端、未读提醒、附件归档。 - 水源社区:底层是 Discourse,提供标准 REST JSON。可以使用站点 Cookie 或 User API Key。水源协议要求非官方客户端、脚本、API 或 RSS 访问事先取得书面许可,这是使用前提。
-
选课社区:
course.sjtu.plus,学生项目 SJTU-jCourse 的 REST API,用用户 API Key;端点、字段和错误码有面向 Agent 的文档,稳定性接近这一层。它不属于学校系统。
这是个人开发者最常用、也最容易出问题的一层。做法是让用户在受控窗口中完成一次 jAccount 登录,再带目标站点的 Cookie 调用其 JSON 接口。
-
教学信息服务网:
i.sjtu.edu.cn,课表、成绩、考试等。 -
课堂视频:
v.sjtu.edu.cn,课程录像、转写、AI 总结、PPT。 -
第二课堂:
activity.sjtu.edu.cn,活动列表、详情、报名;接口用站点令牌,不是 Cookie。 -
传承·交大:
share.dyweb.sjtu.cn,课程资料;接口用Auth头里的站点令牌,不是 Cookie。 -
水源:
shuiyuan.sjtu.edu.cn,登录后的 JSON 接口。 -
Pan:
pan.sjtu.edu.cn,官方只提供网页端/客户端,社区项目研究的是私有 Web API。
这一层的特点:
- 没有公开契约,端点、字段、登录方式都可能随站点升级变化。
- 登录态通常是 Cookie,也可能是登录后签发的站点令牌。失效时可能返回 302、HTML、HTTP 401,也可能 HTTP 200 + 业务码 401。
- 写操作可能需要 CSRF Token;不同站点不一样。
- 只应该使用本人账号,不要做账号共享、批量抓取、抢资源或绕过风控。
新闻、教务处通知、图书馆、班车、食堂、场馆等。多数没有公开 API,靠网页 HTML 或社区逆向出来的 JSON。
- 适合做信息聚合,不适合做关键业务。
- 页面结构一变就坏,必须保留「同步失败不清空缓存」的降级。
- 收录时要标清楚:官方页面、社区实现、还是只有传闻。
Note
水源、选课社区、传承·交大不是学校教学系统,接口和内容由站点运营方维护。引用它们的评分、点评或资料时,保留原文链接,并先读站点条款。
你要的数据是什么?
├─ 课程资料、作业、提交、讨论
│ └─ Canvas(个人 Access Token,几分钟)
├─ 课程评价、给分
│ └─ 选课社区(API Key;学生自建)
├─ 往年课件、资料
│ └─ 传承·交大(站点令牌;下载耗积分)
├─ 校园活动、讲座
│ └─ 第二课堂(站点令牌;报名是写操作)
├─ 课表、学期
│ └─ 教学信息服务网(校园会话;成绩/考试只有社区线索,见待验证清单)
├─ 课堂录像、转写、PPT
│ └─ 课堂视频(校园会话;只需要 Cookie)
├─ 邮件
│ └─ 交大邮箱(IMAP/SMTP)
├─ 论坛、搜索、私信
│ └─ 水源(User API Key + 站点书面许可)
├─ 云盘
│ └─ Pan(官方客户端;无公开 API)
├─ 大模型
│ └─ 致远一号(API Key,校园网/VPN)
├─ 身份、组织、教学、校园卡、财务、通知
│ └─ Open API(OAuth + scope;需单位/教职工申请)
├─ 流程、待办、表单、附件
│ └─ InfoPlus(应用审批;User/System Token)
├─ 校级账号、教职工、本科教学、论文、资产
│ └─ 数据资源 API(部门 + 字段审批)
├─ 云主机、HPC、Slurm
│ └─ jCloud / 交我算(账号、SSH、项目 Token)
└─ 新闻、教务通知、图书馆、班车、食堂、场馆
└─ 校园公开信息(逐个验证,标证据等级)
| 路线 | 适合谁 | 能用什么 | 代价 |
|---|---|---|---|
| A 个人自用 | 一个学生,做自己的工具 | Canvas Token、邮箱 IMAP/SMTP、致远 API、选课社区 Key、活动/资料站点令牌、校园 Web 会话 | 接口易变;不能做正式对外服务;要自己处理登录失效 |
| B 实验室/社团 | 有老师或组织挂靠 | jAccount clientId、Open API、InfoPlus | 申请周期、应用网址/回调/scope 审核、密钥保管责任 |
| C 部门/业务系统 | 院系、部处、正式业务 | 数据资源 API、InfoPlus 租户/流程、jCloud/HPC | 字段级审批、用途限制、不能转给第三方 |
如果只做自己用的课程助手,选 A。不必一开始就申请 clientId;先完成 A,再评估是否升级到 B。
- VPN:提供网络可达性。校外访问校内服务时才需要。
- 域名、网站群、SSL、备案:属于建站流程。部署正式服务时再处理。
- 网络短信:部门业务,个人无法申请,也不是校园数据来源。
- HPC / jCloud:提供计算和部署资源。做科研计算或长期运行后端时才需要。
VPN/jCloud/HPC 压缩在计算与网络;域名/SSL/短信属于建站/部门流程,本 Wiki 不单独收录。
页面契约只有一份,见贡献指南。平台页可以在标准顺序中增加平台特有的子节,例如 Canvas 的「文件下载链路」。底线是:要点、数据清单、认证、端点、字段、分页与错误、常见问题、最小示例、证据。
证据等级和写法见阅读约定与证据等级。
最后复核:2026-10-26。
本 Wiki 记录的是开发实践,不是学校官方承诺。每个结论都标注证据与日期;校园平台会调整字段、权限和登录方式,动手前请按页面里的「最后验证」复核。发现过期内容请提 Issue 或直接改。