Skip to content
ChangYo edited this page Oct 26, 2026 · 4 revisions

接口生态地图

交大的校园接口大致分四层。数据获取的难度、稳定性和合规边界,主要取决于接口位于哪一层。

四层

层 典型入口 认证 个人可得性 稳定性 典型失败
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 新闻、教务处、图书馆、班车、食堂、场馆 无 / 混合 高 低 改版、反爬、没有契约

第 1 层:官方 OAuth 开放平台

这一层有正式契约。个人开发者最常卡在申请 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 层。

第 2 层:标准协议与有文档的 API

这一层用的是成熟协议或有公开文档的站点 API,客户端库多,行为相对可预期。

  • 交大邮箱:IMAP mail.sjtu.edu.cn:993(SSL)、SMTP mail.sjtu.edu.cn:465(SSL),用本人邮箱地址和密码。适合做邮件客户端、未读提醒、附件归档。
  • 水源社区:底层是 Discourse,提供标准 REST JSON。可以使用站点 Cookie 或 User API Key。水源协议要求非官方客户端、脚本、API 或 RSS 访问事先取得书面许可,这是使用前提。
  • 选课社区:course.sjtu.plus,学生项目 SJTU-jCourse 的 REST API,用用户 API Key;端点、字段和错误码有面向 Agent 的文档,稳定性接近这一层。它不属于学校系统。

第 3 层:校园 Web 会话

这是个人开发者最常用、也最容易出问题的一层。做法是让用户在受控窗口中完成一次 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;不同站点不一样。
  • 只应该使用本人账号,不要做账号共享、批量抓取、抢资源或绕过风控。

第 4 层:公开网页 / 私有 API

新闻、教务处通知、图书馆、班车、食堂、场馆等。多数没有公开 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。

Clone this wiki locally