网课邦

当前位置:首页 > 网课资讯

网课资讯

2023最新智慧职教MOOC学院刷课脚本原理分析及使用教程详解

时间:2025-06-05 01:12:00 作者:暂无作者 浏览量:
内容页左侧

2022/03/16已更新至Github 100分【考试+测验+作业+刷课】:https://github.com/11273/mooc-work-answer
2022/03/30以下内容以后不在此处更新,具体内容将发布至Github

1. 现在职教云(https://zjy2.icve.com.cn/)的刷课方法基本没用,所以没找职教云的接口
2. mooc的用的人不多,但也有课在里面,经过分析,只要调用一个接口就能快速刷课
3. 用的是python做的,可以用别的,看懂了可以自己搞,甚至可以用postnam软件一个一个发请求都行
4. 甚至可以用js做,都是发请求什么的,有时间的可以搞一下
5. 通过多次调试,确定目前(2020-12-26)能使用
6. 没弄 考试,作业 的答题,因为要找接口,没有
7. 时间问题没捕获任何异常,有报错解决不了的可以发出来一起解决
8. python技术不行,后面都是for循环甚至嵌套,可能过几天我都不知道是什么了,凑合能用
9. 作业没做也会显示完成,但是未完成,不要忘记做作业

先来张效果图:

当打开课件之后,发现右侧或不断发送一个包StuProcessCellLog的包,初步估计这就是不断向服务器发送我们目前的观看情况的包

点开之后翻到最可以看到Form Data,经过自己之前补签的分析,可以猜到下面对应的值的信息,以及刷网课的思路

CourseOpenID:这个课程ID可以直接在网址栏查看

OpenClassID:这个课程班级ID一样的可以直接在网址栏看

上面这两个值在同一个课程都是不变的

CellID:这个就是下一步分析怎么来的了

token:后来发现这个和Cookie里面的token是一样的,所以也可以不变

下面是分析CellID的获取过程:

1,首先是获取整个课件的大列表,也就是下图这一块

打开之后按F12,打开工具,然后刷新网页

可以看到,多了三个东西出来

getProcessList,getStuStudyClassList,getTopicByModuleId

一个个来看吧,从第一个开始

getProcessList:

他提交了两条数据,一个是课程id一个是课程班级id

返回来一个list,全部展开之后就是我们的课件列表了

返回来第一级目录,和他的ID

然后是第二个getStuStudyClassList:

这个是获取你账户下有哪些课程,在这里可以不用管

第三个是getTopicByModuleId

可以看到这个是二级目录的id,然后uptopicid这个应该是上传者的id(网易翻译猜的,在这里没啥用,不过修改作业时间那里需要这个id)

到这里,目前的三个包已经分析完了,但是还是没有得到刷进度要的CellID,这三个包只翻出来二级目录,还差最后课件的ID就行了,那是因为我们还没有展开课件,所以没有加载,然后我们现在来点开二级目录查看一下

查看一下Form Data:

一个三个值,第一个courseOpenID:说过了的,第二个OpenClassID:说过的,第三个topicid:现在说

topicid:fzpq初步估计就是就是之前传递过的值,经对比可以发现这个id等于我们获取到的二级目录ID。

到这里就已经得到了最开始我们所需要的CellID了

回过神看这个文件列表发现,职教云好实诚呀。。

第一个getProcessList:获取列表

第二个getStuStudyClassList:获取学生学习班级列表

第三个TopicidByMouduleid:通过Moduleid获取Topicid

第四个getCellByTopicId:通过Topicid获取CellID

总上就能快乐的为所欲为了

最后附上批量获取课程CellID的python代码

import randomimport timeimport requestsdef get_all():url = &9;https://zjyapp.icve.com.cn/newmobileapi/assistTeacher/getModuleListByClassId&9;data = {&9;courseOpenId&9;: &9;courseOpenId&9;,&9;openClassId&9;: &9;courseOpenId&9;,&9;stuId&9;: &9;stuId&9;,}html = requests.post(url=url, data=data).json()data = html[&9;moduleList&9;]moduleIds = []for i in data:print(i[&9;moduleName&9;] + &9;已加载&9;)moduleIds.append(i[&9;moduleId&9;])return moduleIdsdef get_list(moduleId):url = &9;https://zjy2.icve.com.cn/newmobileapi/assistTeacher/getTopicListByModuleId&9;moduleIds = []for i in moduleId:data = {&9;openClassId&9;: &9;openClassId&9;,&9;courseOpenId&9;: &9;courseOpenId&9;,&9;moduleId&9;: f&9;{i}&9;}html = requests.post(url=url, data=data).json()data = html[&9;topicList&9;]for j in data:moduleIds.append(j[&9;topicId&9;])return moduleIdsdef get_cell(topicIds):url = &9;https://zjy2.icve.com.cn/newmobileapi/assistTeacher/getCellListByTopicId&9;cellids = []for k in topicIds:data = {&9;openClassId&9;: &9;openClassId&9;,&9;courseOpenId&9;: &9;courseOpenId&9;,&9;topicId&9;: k,&9;stuId&9;: &9;stuId&9;}html = requests.post(url=url, data=data).json()data = html[&9;cellList&9;]for i in data:if i[&9;categoryName&9;] == &9;子节点&9;:for j in i[&9;cellChildNodeList&9;]:cellids.append(j[&9;cellId&9;])else:cellids.append(i[&9;cellId&9;])return cellids