利用F12开发者工具 自动化网上抢课

写在前面

  本文只是实现对某校选课系统自动化抢课提供思路,并不提供相应源码,如若需要可在下面评论留下联系方式。

  本文仅仅运用js实现对页面的刷新获取信息并判断发送请求,只要有一定的网页开发知识花费时间便可完成。

  本文共计1823字,阅读需20分钟,非本专业人群可直接跳至下方点赞。本js文件完成共花费4+小时。

  转之722blog查看原文。

正文开始

  
  先上效果图:
利用F12开发者工具 自动化网上抢课_第1张图片
ps:真的还别说,为什么贵校手速都这么快的??我设置5s自动刷新都有时候抢不到课!

思路

  思路实际上很简单:我们找到我们想要选取的目标课程(当然可能有很多个),然后不断的刷新页面等待有人退课,当我们发现退课然后向服务器发送相应的选课请求就可以了。

选取目标

  我们打开某校选课网站:
利用F12开发者工具 自动化网上抢课_第2张图片

  我们很快发现,只有 选择列 存在框框的才能够被选课,而且根据朋友的需求我需要选择的是 南校区体育 课程。

  我们确定需求之后打开开发者工具F12,然后找到相应的代码。

  例如下面是对应的可选择的框框代码。
利用F12开发者工具 自动化网上抢课_第3张图片

  我们可以通过jquery的查找非常方便的找到对应的元素,可是这个教务管理系统竟然没有引用jquery文件,那我们只能手动在console里面引用并找到对应的可选择的元素(也就是可以被选课的课程)。

// 下为引入jquery文件
	var importJs=document.createElement('script')  //在页面新建一个script标签
    importJs.setAttribute("type","text/javascript")  //给script标签增加type属性
    importJs.setAttribute("src", 'http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js') //给script标签增加src属性, url地址为cdn公共库里的
    document.getElementsByTagName("head")[0].appendChild(importJs) //把importJs标签添加在页面
  
     $("[name='kcId']");//利用jquery查找对应的元素只有这句我们是找不到对应元素的,我们只是举个例子而已,由于对应元素存在于frame标签中我们还需要在前面添加$(window.frames["frame的name值"].document),才能查找成功。


  当然我们还需要查找带有南校区体育的课程,这里我们就不再展开了。

  总之,我们可以使用jquery来轻松的找到我们需要的多个目标课程。

刷新界面


  我们需要不断地刷新界面来知道有没有人退课,才能及时获取到退课信息。但是我们刷新界面时会出现很多的问题。

  1. 重新提交表单

      我们手动刷新选课页面我们会发现,刷新完了我们就回到了主页面,而且有时候我们还会提示需要重新提交表单。这并不是我们想要看到的结果。

      查看源码后才知道这个网页是几个frame嵌套形成的,当我们刷新页面时就会丢失我们之前的操作。我们可以直接单独打开那个我们需要的frame,选课内容右下角有一个下一页我们点击右键在新标签页中打开链接就可以了。
  2. 刷新页面,console内容丢失

      这个问题我们可以利用第一个问题中的思路来解决,创建一个frame,单独刷新frame内容并不是全部网页内容。这里贴一个其他博主写的博客来记录这个问题的解决方案:防止网页刷新的console代码

      当然我们利用jquery查找时就会找不到添加frame后里面的课程信息。我们需要前面一句:$(window.frames[“frame的name值”].document)。

    注:实际实现中可能会出现某些问题,还需自己解决。例如frame没有name值,我们就得换种查找方式。

发送请求


  我们完成了上面内容,一旦发现满足条件的课程,我们就可以向服务器发送请求了。当然,这一部分也需要console自动完成。首先我们先看一下,我们在正常选课时向后台服务器发送了什么请求:
利用F12开发者工具 自动化网上抢课_第4张图片

  我们可以很容易知道kcId的内容是课程号+下划线+课序号,而preActionType和actionType似乎是不变的(我多次选不同的课后发现确实如此)。我们再次利用jquery来查找到满足条件的课程号以及课序号,然后利用$.ajax来向对应的服务器发送post请求。

总结


  不知道是网站后台有请求限制还是贵校手速过于快的原因,有时候刷新出来会选不上相应的课程,请求了几个小时后才成功了两门体育课。

  不过还是成功的完成了她的要求,而且她还答应我可以帮我转发推广我的个人博客。

  

你可能感兴趣的:(利用F12开发者工具 自动化网上抢课)