Java登录方正教务系统
首页
阅读:
admin
2019-11-10 07:16

  浏览器给服务器发送请求连接,服务器接收到浏览器发送的请求,在服务器端生成一个对应的标示(Session),并且返回这个标识的id(Cookie)给浏览器保存,以后

  第一步:访问教务处网址(本人教务处网址为),教务处服务器会返回一个cookie,作为你的标识

  第二步:请求验证码(验证码网址见下图),带着cookie去请求,这样服务器就知道这个验证码对应的用户是谁

  第三步:提交数据给服务器,包括用户名,密码,验证码,还有一个特殊字段_VIEWSTATE(下面讲解),cookie(用于标示用户)

  经历过上面的3步,我们就登录到系统了,也就是我们的cookie对于服务器来说,就是已经登录的了,通过这个cookie可以获取课表等浏览器上的操作

  上面讲了一大堆原理性的东西,其实就是使用程序去模拟浏览器的行为,向服务器请求和发送数据,下面讲解实际编码

  关于_VIEWSTATE的作用请自行百度,这个本人测试时必须随着用户名密码等一起提交

  _VIEWSTATE存在于首页的源码中,打开,右键查看源代码,搜索,_VIEWSTATE,即可看到他的值,现在我们通过代码来获取,由于在获取Cookie的时候,我们访问了首页,所以这里可以把两个操作合二为一

  一定要在请求头中设置cookie,不然服务器无法知道这个验证码对应的是哪一个用户发送过来的

  保存验证码就是访问验证码对应的网址,在浏览器中,右键验证码 即可选择复制图片网址,这里我们保存到本地的d:\\img.gif

  刚才我们已经获取了cookie,验证码,_VIEWSTATE,是不是觉得有点小激动呢?现在就用获取到的数据来登录教务系统

  在请求登录的情况中,如果服务器的返回码为302则为登录成功(通知我们跳转到登录以后的界面),如果为200则代码登录失败,大家可以尝试着用火狐浏览器自带的抓包工具查看两种情况下的返回码

  提交的数据中存在一个用户类型,就是上面截图中乱码的字段RadioButtonList1,这个是由于编码的不同造成的,在服务器的相应头中,我们可以看到服务器采用的编码为gb2312,所以我们在拼接参数的时候使用URLEncoder.encode()方法进行编码

  经过以上的步骤,我们就正式登录到方正教务系统了,通过火狐浏览器自带的抓包工具,我们可以很轻松的获取浏览器提交的数据以及服务器返回的数据,然后用程序模拟这一过程,就可以获取到自己想要的信息了,获取课表就在下一篇日志里面讲吧

  您好,我想查看您的超级课表的代码用于学习,但是您的地址已经失效,能单独给我发一份吗?感激不尽