苏大Mooc系统的刷课脚本的制作(1/3)
闲话不说,其实写这个目的大家都懂,懒得看那些无聊的网络课。但是由于课程的要求,这些课程必须要看,而且由于技术原因,又不能跳着看,视频的播放条不能拖动,只能硬着头皮的刷时间。很多同学都是开着视频开着静音做其他的事,想想也是悲哀。
当然,我写这个程序的初衷并不是为了偷懒,而是纯粹的学习。用技术手段做出一些别人难以实现的事情可是很有成就感的。为了实现这样一个简单的目的其实也不是那么简单的(至少对我这个前几天刚接触web的人而言)。。。
课程首页
从右边点击课程名字就会打开视频,学习完的视频前面会有绿色的钩钩;每个视频下面有播放条,播放条只能在已经看过的部分任意拖动,不能向前拖动。
这就是课程首页的情况,接下来就是想查看源码。结果发现网页是动态生成的,而不是之前学习的静态网页。这两者最直观的感受就是源代码和审查元素得到的代码不一样,也就是用javascript之类的语言根据即时的情况生成的网页。这时候就需要细致的分析js代码了。
封包分析
很自然的想法就是查看下封包,弄清楚在观看视频的时候到底是发送了什么东西给后台让后台标记当前视频为已看。经过一番查找(需要细心的找),在用chrome找到了这样的一个包:
General:
Request URL:http://kczx.suda.edu.cn/G2S/Learning/StudentLearning.ashx?action=GetG2SSetStageLearnPartStudent&fPlanID=34&fPartID=359&fSecond=550&_=1451308953409
Request Method:GET
Status Code:200 OK
Remote Address:42.244.42.191:80
Request Headers:
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Cookie:ASP.NET_SessionId=zh4ifl55q521xx45bmbjwa45; amlbcookie=01; iPlanetDirectoryPro=AQIC5wM2LY4SfcxX1vREajjp5zIi4s9GtkPT1Ivxjw%2BJfo4%3D%40AAJTSQACMDE%3D%23
Host:kczx.suda.edu.cn
Referer:http://kczx.suda.edu.cn/G2S/Learning/Learning.htm?Part=&Plan=34&type=2
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
X-Requested-With:XMLHttpRequest
Query String Parameters:
action:GetG2SSetStageLearnPartStudent
fPlanID:34
fPartID:359
fSecond:550
_:1451308953409
看到了顿时就豁然开朗了,原来每隔一段时间,网页会通过一个get请求,将当前看的视频的名称、看到的时间发送给后台,让后台加以记录,确认已经看到的地方。fPlanID很明显是课程的编号,fPartID应该是视频的编号,而fSecond应该是当前看到的时间了(最后哪个_:的值,可能是token值,然而翻遍代码,并没有找到对应的值,我想应该是一个随机数,暂时不去管他,应该也无妨)。所以,“作弊”的方法也就很简单了,就是根据这个信息,将描述视频的信息和当前看到(伪造)的时间发送给后台就可以了。
经过一番尝试,这样做果断是合理的。那么,通过这个手段,我们就可以手动的通过输入地址发送get请求来“刷课”了。虽然这显然不够帅,然而对那些没有编程基础的人来说,这种方法倒也是简单快捷的(总比挂着视频方便)。
相关文章
- vue : 无法加载文件 C:UsersAdministratorAppDataRoamingnpmvue.ps1,因为在此系统上禁止运行脚本
- 详解Linux系统中Oracle数据库程序的启动和关闭方式
- Linux系统的负载与CPU、内存、硬盘、用户数监控的shell脚本详解程序员
- Linux系统如何运行Python脚本(linux执行python脚本)
- 如何在Linux系统上安装软件包(怎么安装linux的包)
- Linux脚本执行:轻松操作简化工作(linux系统执行脚本)
- Linux系统调整休眠时间的方法(linux设置休眠时间)
- 脚本实现自动化?使用脚本实现Linux系统自动化操作(linux系统如何用)
- Linux 系统提升时间精度的方法(linux系统时间精度)
- Linux系统的发展史及其分支(linux的分支)
- 系统从Linux走向分支系统之路(linux的分支)
- Linux系统:实现安全性的最佳实践(linux系统安全)
- 关闭Linux系统防火墙的步骤(关闭linux的防火墙)
- 操作指南:关闭Linux系统的防火墙(关闭linux的防火墙)
- Linux系统的多元分支之旅(linux的分支)
- Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息
- 如何在Linux系统中定时执行sh脚本?How to schedule the execution of a sh script in Linux?(linux定时执行sh)
- ASLR保护机制在Linux系统中的应用(aslrlinux)
- Linux系统快速反弹提权大法(linux反弹提权脚本)
- 函数Linux系统内存管理:介绍calloc函数(linuxcalloc)
- 使用SQLServer管理员考勤系统(sqlserver考勤表)
- 使用RPC与Redis连接池实现高效可扩展的系统(rpc和redis连接池)
- 使用Oracle RDA脚本 快速开发业务系统(oracle rda脚本)
- linux系统使用python监测系统负载脚本分享
- linux系统使用python获取cpu信息脚本分享
- 用WindowsMediaService打造的流媒体直播系统