HBTech's Blog
HBTech's Blog
超星学习通云盘API不完全统计

因为之前疫情在家上网课需要用到学习通,意外发现了这个宝藏网盘。这个网盘每个帐号有100G的空间,而且上传下载几乎不限速。尽管空间有点小,但是可以通过自己创建一个课程,将文件存放至“资料”栏目,实现无限空间。

存放在超星学习通的云盘的每一个文件都会有一个唯一的 objectid 参数和 resid 参数。objectid 参数由 0123456789abcdef 组成,共32位,可能是由某种哈希算法生成;resid 参数为18位的纯数字,可能是该文件存放在服务器上的顺序,或者是某种时间戳,因为发现该参数的值会因上传的文件时间靠后而增加。文件的这两个参数可以在部分学习通网站内通过审查元素查看,也可根据文件的链接查看。

通过 objectid 和 resid 都可以确定一个文件,就类似于一个“指针”。这两者的区别在于,objectid 只与文件关联,一个文件只会有唯一的一个 objectid;而 resid 实际上与用户在云盘中的文件相关联,当不同用户上传了同一个内容相同的文件时,resid 是不同的,但 objectid 一定相同。另外,resid 指向的文件是可修改的(即指向的 objectid 不总是唯一的)。假设用户使用超星的在线 WPS 修改了根目录下的一个 通知.docx 文件,修改前后的 objectid 会发生改变,因为前后两个文件的内容实际上改变了;但是其 resid 不会改变,也就是说该 resid 指向的是用户云盘里的/通知.docx文件,文件发生了变动后,通过 resid 所指向的文件自然是最新的。

下面列出超星云盘目前(2022-07-15)所找到的API。基本上都是不需要验证登录的,如有会标明。下方的 API 链接若不是 https 开头则说明该 API 不支持 HTTPS 。

这些API随时可能失效。

2021-01-03 UPDATE: 免登录上传已失效
2021-04-04 UPDATE: 部分直链、预览 API 失效或需要加鉴权参数才能使用
2021-04-08 UPDATE: 图片外链检测referer,失效
2022-07-15 UPDATE: 修正了对 objectid 及 resid 的表述,新增一个 API ,再次检测了 API 的可用性

直链API

API 1 直链下载

GET https://d0.ananas.chaoxing.com/download/[objectid]?fn=[file_name]&at_=[at]&ak_=[ak]&ad_=[ad]

[objectid] 必选参数
[file_name] 必选参数,但可以置空。定义返回的下载文件名,不包括后辍名。置空时返回文件原始名称
[at] [ak] [ad] 这三个应该是鉴权参数,理论上在错误或者置空时将不能下载,但目前(2021-04-04)测试发现,对于某些文件即使置空也可正常下载(非常玄学)
[at] [ak] [ad] 这三个鉴权参数,目前(2022-07-15)测试已做检查,置空或错误将返回 403
API类型 直链下载
referer检查 不可留空,需为超星旗下域名
https://d0.ananas.chaoxing.com/download/315e1eda1badaa2f6a50bfda7cbf71c7?at_=1657822862409&ak_=1822a6676267e762113144a1249fb8eb&ad_=6c9bfee2ee5b8c736c2a8c0888233fb7&fn=big_buck_bunny

API 2 直链下载

GET https://dl-ans.chaoxing.com/download/[objectid]?fn=[file_name]&at_=[at]&ak_=[ak]&ad_=[ad]

参数说明同 API 1 ,虽然不检测 referer,但同样需要鉴权
示例https://dl-ans.chaoxing.com/download/315e1eda1badaa2f6a50bfda7cbf71c7?at_=1657822862409&ak_=1822a6676267e762113144a1249fb8eb&ad_=6c9bfee2ee5b8c736c2a8c0888233fb7&fn=big_buck_bunny

API 3 直链下载

GET https://cloud.ananas.chaoxing.com/view/fileviewDownload?objectId=[objectid]

[objectid] 必选参数
API类型 直链下载,但不返回 Content-Length,只能单线程下载。因此下载时下载工具不会显示剩余时间
referer检查 不检查
示例https://cloud.ananas.chaoxing.com/view/fileviewDownload?objectId=315e1eda1badaa2f6a50bfda7cbf71c7

API 4 图片直链 会检测referer

GET https://p.ananas.chaoxing.com/star3/[img_size]/[objectid][img_type]

[img_size] 必选参数,设置为origin时返回原图大小,设置为[width]_[height]c时返回[width]×[height]大小的图片,若不符合原图比例,图片将被裁剪
[objectid] 必选参数
[img_type] 可选参数,定义返回的图片类型,可选.jpg .png等,留空返回原图类型。
API类型 图片直链,即上面的下载直链区别在于返回的 Content-Type 是 image/xxx
文件类型 仅限图片文件,非图片文件返回500错误
referer检查 不检查,可作为图床链接 2021-04-08 UPDATE: 会检查
示例https://p.ananas.chaoxing.com/star3/origin/2bc23d896acecb81b7e56b6d9b0c32ae.jpg

logo

预览,分享页API

API 5 文件分享页

GET https://pan-yz.chaoxing.com/external/m/file/[resid/objectid]?name=[file_name]

[resid/objectid] 必选参数,resid 或者 objectid 均可
[file_name] 可选参数,定义预览界面显示的文件名,下载时后辍名会被忽略。留空显示原文件名
API类型 文件分享页
文件类型 任意类型
referer检查 不检查
登录检查 检查,需要登录后才能查看
示例 以下两个链接指向同一个文件
https://pan-yz.chaoxing.com/external/m/file/754511752605163520
https://pan-yz.chaoxing.com/external/m/file/315e1eda1badaa2f6a50bfda7cbf71c7

API 6 文件分享页

GET https://cloud.ananas.chaoxing.com/view/fileview?objectid=[objectid]

[objectid] 必选参数
API类型 文件分享页。视频文件仅可预览,不提供下载选项
文件类型 任意类型
referer检查 不检查
示例1 视频文件,仅提供预览,点击播放后跳转至被学习通压缩过的视频直链
https://cloud.ananas.chaoxing.com/view/fileview?objectid=785a94b84d788b065785323776848a45
示例2 其它文件,只有下载按钮(指向的链接其实就是 API 3)
https://cloud.ananas.chaoxing.com/view/fileview?objectid=6ffa14b2501249c38a7c15b64f4dbbe9

API 7 文档在线预览

GET https://pan-yz.chaoxing.com/screen/file_[objectid]

[objectid] 必选参数
API类型 文档预览页,图片形式。无下载选项
文件类型 仅限文档
referer检查 不检查,可通过使用<iframe>标签应用到自己的网站中
示例 https://pan-yz.chaoxing.com/screen/file_6ffa14b2501249c38a7c15b64f4dbbe9

API 8 多媒体文件在线预览

GET https://pan-yz.chaoxing.com/preview/showpreview_[resid].html[?wps=false]

[resid] 必选参数
[?wps=false] 可选参数,若预览文档,不设置此参数且为PC端将重定向至 WPS 预览(只读),设置后或为移动端将类似 API 7 为图片形式预览
API类型 视频,音频,图片,文档预览页,无下载选项。
文件类型 仅限视频,音频,图片,文档类型
referer检查 不检查 2022-07-15测试发现检查,不可留空,且须为超星域名
User-Agent检查 当文件类型为音频或视频时,移动设备会重定向至压缩过的文件直链(使用除了 Android 设备以外的移动设备 UA 均提示403错误,可能是学习通的bug),PC 则出现 html5 播放器(偶现 Flash 播放器)。当为文档类型时,见[?wps=false]说明。无论是什么 UA ,图片类型均会重定向至 imageproxy.chaoxing.com 域名开头的链接。
示例1 音频文件预览,音质有压缩
https://pan-yz.chaoxing.com/preview/showpreview_534549815865073664.html
示例2 视频文件预览,分辨率、码率等有压缩
https://pan-yz.chaoxing.com/preview/showpreview_754511752605163520.html
示例3 图片文件预览,重定向至另一域名,画质被压缩(从链接中可以看出压缩等级)
https://pan-yz.chaoxing.com/preview/showpreview_534742315874480128.html
示例4 文档文件预览
使用 WPS 预览
https://pan-yz.chaoxing.com/preview/showpreview_753568870554517504.html
图片形式
https://pan-yz.chaoxing.com/preview/showpreview_753568870554517504.html?wps=false

API 9 多媒体文件在线预览

GET https://pan-yz.chaoxing.com/preview/objectshowpreview.html?puid=[puid]&objectid=[objectid]

[puid] 必选参数,理论上与用户相关联,实际上是一个大于0的数字即可
[objectid] 必选参数
referer检查 目前(2022-07-15)不检查
API类型 功能与 API 8 完全一致,只不过参数为 objectid 而非 resid,且文档预览是图片形式
文件类型 仅限视频,音频,图片,文档类型
示例1 音频文件预览,音质有压缩
https://pan-yz.chaoxing.com/preview/objectshowpreview.html?puid=1&objectid=b1d80cb4b331a092ba2ecbab71c467c8
示例2 视频文件预览,分辨率、码率等有压缩
https://pan-yz.chaoxing.com/preview/objectshowpreview.html?puid=1&objectid=315e1eda1badaa2f6a50bfda7cbf71c7
示例3 图片文件预览,重定向至另一域名,画质被压缩(从链接中可以看出压缩等级)
https://pan-yz.chaoxing.com/preview/objectshowpreview.html?puid=1&objectid=2bc23d896acecb81b7e56b6d9b0c32ae
示例4 文档文件预览,图片形式
https://pan-yz.chaoxing.com/preview/objectshowpreview.html?puid=1&objectid=f8e86d905ab1678fe2411ad7d1caa9fd

API 10 课程资料直链 已失效

GET https://mooc1-1.chaoxing.com/coursedata/toPreview?courseId=[courseId]&dataId=[dataId]&objectId=[objectid]

[courseId] 非必要参数,为文件所在的课程ID
[dataId] 可选参数,为文件添加到课程资料时的Data ID
API类型 添加到课程资料后产生的文件预览页,dataId正确填写时有下载按钮。文档,视频,音频、图片等文件可以在线预览,其他类型文件跳转到下载直链
文件类型 任意类型
referer检查 不检查,但若跳转至直链下载则检查

上传API

API 11 免登录上传已失效

POST https://notice.chaoxing.com/pc/files/uploadNoticeFile

参数{attrFile: [文件]}
API类型 上传文件
文件类型 任意文件,大小须小于 200M
referer检查 不检查
Python代码示例

import requests
def upload2cx(path):
    file = open(path, 'rb')
    data = {'attrFile': file}
    respond = requests.post(url="https://notice.chaoxing.com/pc/files/uploadNoticeFile", files=data).text
    return respond
print(upload2cx(r"replace/your/file/path/here"))

返回参数示例 返回的链接默认以 http 开头,均可自行替换成 https 使用。

{
    "att_file": {
        "att_clouddisk": {
            "size": 53753,
            "fileSize": "52.5 KB",
            "isfile": true,
            "modtime": 1605419663715,
            "parentPath": "/logo.png",
            "icon": "http://p.ananas.chaoxing.com/star3/origin/bc9e7b6bae5286fa1202badf7c0d75bd.png",
            "name": "has.png",
            "downPath": "http://d0.ananas.chaoxing.com/download/2bc23d896acecb81b7e56b6d9b0c32ae",
            "shareUrl": "http://cloud.ananas.chaoxing.com/view/fileview?objectid=2bc23d896acecb81b7e56b6d9b0c32ae",
            "suffix": "png",
            "fileId": "2bc23d896acecb81b7e56b6d9b0c32ae"
        },
        "attachmentType": 18
    },
    "type": "img",
    "url": "http://p.ananas.chaoxing.com/star3/origin/2bc23d896acecb81b7e56b6d9b0c32ae.png?rw=250&rh=250&_fileSize=53753&_orientation=1",
    "status": true
}

其它API

API 12 多媒体文件缩略图

GET https://pan-yz.chaoxing.com/thumbnail/[img_size]/[objectid]

[img_size] 必选参数,设置为origin时重定向至原图直链,设置为[width],[height],[quality]时,重定向至imageproxy.chaoxing.com 域名开头的链接。[quality]取值(猜测)为0-100,0为原始质量;[width],[height],[quality]均为0时表示原图大小原图质量,[width],[height]只有一个为0时,则以另一个不为0的参数对应方向缩放至给定大小。
[objectid] 必选参数
API类型 重定向至多媒体文件缩略图链接
文件类型 视频,图片,文档。视频类型仅限压缩成功的视频文件,即刚上传的视频可能无法获取;文档会得到第一页的链接。
referer检查 重定向至 imageproxy.chaoxing.com 时不检查
示例1 视频缩略图
https://pan-yz.chaoxing.com/thumbnail/origin/a1e56b11f7bef221d462a6f0645103ec
示例2 文档缩略图,就是第1页的截图。可修改后面的 1.png 为其它数字得到其它页面
https://pan-yz.chaoxing.com/thumbnail/origin/f8e86d905ab1678fe2411ad7d1caa9fd
示例3 图片
直接返回原图直链
https://pan-yz.chaoxing.com/thumbnail/origin/60669dffccffdefbb68df31dbc303bd0
大小,质量与原图等同
https://pan-yz.chaoxing.com/thumbnail/0,0,0/60669dffccffdefbb68df31dbc303bd0

色图

API 13 文件信息API

该 API 由一位不具名网友在本博客关于页告知,在此作出感谢

GET http://mooc.chaoxing.com/ananas/status/[objectid]

[objectid] 必选参数
API类型 返回 JSON 格式的文件信息,包含了下载链接,预览链接等,具体不表
示例 视频文件
http://mooc.chaoxing.com/ananas/status/315e1eda1badaa2f6a50bfda7cbf71c7

HBTech's Blog

超星学习通云盘API不完全统计
因为之前疫情在家上网课需要用到学习通,意外发现了这个宝藏网盘。这个网盘每个帐号有100G的空间,而且上传下载几乎不限速。尽管空间有点小,但是可以通过自己创建一个课程,将文件存放至…
扫描二维码继续阅读
2020-11-13