早就听说有些学校的d校要求看视频刷学时,今天接到通知我校也有这项政策了。
据说有个很有意思的设计,视频会不时弹出确认框,一定时间内不点确认框就gg当做这视频没看,不得不说这设计还是有其天才之处的。
但实际实施起来就很蠢了:)
下面开整:
链接:
http://dxAonline.rBuc.eCdu.Dcn/Eindex.php?s=/FIndex/Gindex.html
(防止查水表,请将链接中的A-G去掉)
浏览器:Chrome
进来以后,打开一个视频看起来还不错哈
但作为猿的我们,这种视频既不是兴趣也不是特长,首先查看源代码,但右键之后会发现无法查看源代码。没关系,将链接改为:
view-source:http://dxAonline.rBuc.eCdu.Dcn/Eindex.php?s=/FIndex/Gindex.html
同理,请将A-G去掉
查看到源代码后,可以先将源代码搬到本地,慢慢研究。
分析发现,源代码中有这么一句:
var conid="765";
var num="2015207777";
var name="马尼奥";
var hours="1";
$.post("/index.php?s=/Index/gethours.html",{conid:conid,num:num,hours:hours,name:name},function(data){
// if(data==1){
// window.location.href="/index.php?s=/Index/about.html";
// }else{
// //alert('学时更新失败!');
// window.location.href="/index.php?s=/Index/about.html";
// }
});
看到这里,内心对对方程序员产生深深的鄙视。既然你能写出这种代码,就别怪我掏x无情了= =
掏出神器Postman,新建一个Post请求,或者直接利用相似的Post请求。
链接,请求参数等按js代码填好(视频id,学时,学号,姓名):
好,发送,这时会发现返回结果为需要登录。嗯,那应该是因为Cookie没有设置。
找一个同站下的GET/POST请求,把cookie字段复制到我们构造的request下:
好,再来,send。返回结果是1,根据js代码,返回是1说明成功啦!再去网站看看,学时也成功增加了1:)
多刷几个,你就能刷成我这样子:)
以上是比较具有技术含量的方法。实际上还有一种比较简单的方法,也就是非程序员也能使用的方法:)
简单方法:
使用chrome浏览器,打开视频页面。
使用以上步骤,打开开发者工具,切换至console模式
好,播放视频。你会发现控制台(console)一直在输出一些东西。其中有两个数字,没错,他就是控制弹窗的数字。第一个数字表示现在的时间,第二个数字表示下一个弹窗什么时候弹出。愚蠢的程序员啊,你好歹把用来调试的控制台输出注释掉啊
好,有了这个,我们就可以算一下距离下一次弹窗还有多长时间。以上图为例,下一次弹窗在637s。637/60≈10。那就定一个10分钟后的闹钟,干别的事去吧,闹钟响了回来点一下。重复以上过程,就能每次准时从游戏里切回来点那个愚蠢的小窗:)
总结:
我们建站时一定要注意,登录信息(学号啊,用户名啊)这种东西不要从前台传,明明后台可以直接拿来用的东西,从前台传就容易被别有用心者伪造request而利用。
其次,后台接口尽量不要暴露,像以上就暴露的太明显了= =