Java登录方正教务系统

  • 内容
  • 评论
  • 相关

在正式开始之前,先来看看浏览器与服务器的通讯过程

浏览器给服务器发送请求连接,服务器接收到浏览器发送的请求,在服务器端生成一个对应的标示(Session),并且返回这个标识的id(Cookie)给浏览器保存,以后浏览器每一次的请求都带着这个cookie,这样服务器就可以对应到相应的用户了

login

登录流程

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

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

2

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

3

4

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

实际编码

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

  • 获取cookie

  • 获取__VIEWSTATE

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

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

  • 获取验证码

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

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

读取验证码成功

5

  • 登录方正管理系统

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

什么情况下是登录成功?这是一个问题,在我们的程序中,如何判断登录成功了

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

 

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

大家可以获取登录失败以后的页面,查看源码,不难找到错误提示的位置

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

温馨提示:编码不易,且编且珍惜

评论

0条评论

发表评论

电子邮件地址不会被公开。