优学院刷课

ufec2021-05-08

优学院刷课

前言

优学院刷课项目再 15 个月之前就发布了:GitHub 地址,很久没用自然就会出些问题。也多次收到过邮件问什么时候更新,2 个月前更新过一次,那次没深入,就随便搞了下,让程序能完整运行起来,但发现没效果。最近有网课要刷,又重新捡起来了!

重蹈覆辙

我又完整了地看了一遍整个流程的网络请求内容,从登录->选课程->选教材->选章节学习->选小节->浏览每个页面->保存学习记录,看的人头皮发麻,不过比去年来说,这次整体重构轻松了不少。

去年写这个刷课的时候麻烦许多,起初准备用PHP实现(命令行运行完全可行!!!),所以两边写来写去,代码很混乱。其实PHP是准备写成接口调用,可以集成到别的系统中直接使用!出于某些方面的考虑并没有这样做,懂得都懂!

修复的时候左手IDE断点调试,右手看网络请求,刚开始觉得没啥问题,但就是到了最后一步:学习记录时无法保存,我以为是优学院系统升级了,知道验证用户提交的数据了,都准备放弃了!抱着试试的心态,拿到解密后的提交数据,我只看到有零零星星几处参数的改动,好家伙改参数名混淆视听,有修XSS漏洞那范儿了(去年在后台告诉客服这个漏洞,过几天不行了,但后来尝试了几个参数又可以了,真能修)。于是就按照新参数规范重新构造数据,模拟提交,看到成绩和进度以及学习时间的变化,很是欣慰!!!

效果

先看效果图吧!!!

刷课前

ulearning_before

刷课中

ulearning_running

注:这次重构改了显示颜色,之前清一色黑底白字,眼睛都看疼了,这次区分显示了,但cmd好像效果不太好看,在Pycharm里面还可不错滴,如下图:

ulearning_run_in_ide

强烈建议在IDE中运行,没有别的意思,就是看起来舒服点

刷完后

ulearning_after

安排得明明白白地

更新说明

  • 更新了输出颜色(虽然没有实质作用,但心理安慰还是得有)
  • 针对每节每个页面自定义时间,之前写的时候是一节一个时间,感觉太无脑了,有的页面就是点一下就代表学习了,没必要
  • 删除了获取视频时间,本版本输入时间就是视频时间,想要数据更真实,就自己打开视频算吧!
  • 好像没啥了!!!!

对于那个视频时间我要声明一下:他系统把视频链接改成了m3u8的,很不错知道升级了!没有之前mp4那么容易获取视频时长了(好像不对,更容易了,更快速了),但是呢,也不是没有办法,m3u8文件里描述了整个视频如何分割的详细信息,这样就很简单了,读文件,把每一小块的视频时长加起来就可以了,为什么没写呢?没必要!当然还有另外的办法,就是你提前把每个视频都播放一下,不用看完,他系统就有记录,某某视频有多长,我去读就可以了,为什么没写呢?没必要!

至于为什么没必要呢?因为他系统根本就不检测视频时长合不合法!!!传个负值他都觉得合理,建议还是别了,给系统一点儿面子,别给人家搞溢出了。

使用说明

如果不出意外,安装Python后你可能只需要再安装两个库:

pip install requests
pip install colorama

然后python main.py 回车 起飞

注:第二个库是用于再终端展示颜色的,本来是可要可不要的,但是我导了包,你不用的话就删了 9,10 两行,在IDE中不用这个也是可以展示颜色的

一些说明:时间是累加的,不够可以重新运行,或者在别的小节多输点就可以了,多了输入负数,就会减少,0 则保持不变(对单个页面而言),整章是多个小节多个页面配合而来的,其他的没啥了吧!想起来再加吧!看输出信息应该能明白。

功能

  • 自定义学习时间
  • 自定义分数
  • 自动答题

功能去掉了读单词那个功能,今年我们好像没有了,就没加上去,GitHub上有这个功能看自己需求吧!

另外为保证程序可控性,加密函数仍由我提供接口调用,暂不公开,其实也很简单,要的直接F12,优学院写给你看了

心得

先聊聊优学院这个平台吧!怎么说呢,只能说有很多问题吧!

首先:就算不校验别的,时间总得校验吧!学习了-2个小时,这也是合法数据;今天学习的内容,记录时间是几周前,这也是合法数据;满分一百分,我写个200分也是合法数据,真就要多少分自己写呗!!!

其次:一看网络请求,请求头有的是UA-AUTHORIZATION,有的是AUTHORIZATION,本以为是两个不同的东西,一个验证客户端设备,一个验证用户身份,好家伙,cookie 里一看,不能说毫无关系只能说一模一样。

感想

写完程序,我都觉得优学院这个系统是不是版本没切换,是develop而不是release。这也说明WEB开发永远的真理:永远不要相信用户的输入,后端开发不要搞些花里胡哨的banner,这句话就是永远的banner

下载代码

为防止失效过快,就不GitHub了,也没梯子上。代码有 300 多行,放文章太长了。微信公众号回复优学院刷课获取代码(没错就是想引一波流)

公众号二维码


Python


编辑此页面