学了java后想设计一个在线提交活动中心使用申请的web网站,但问题是学生身份的验证。开始时是设想每年爬取一次全校学生信息,但速度太慢了,而且学号的规律也不清楚。然后想到借用教务管理系统自带的验证功能,这样不用更新数据库,但是每到抢课或查成绩的时候教务管理系统总会比较卡,但其他大部分时间都没问题,所以就采用模拟登陆教务管理系统的方式来验证登录用户的身份。
登录教务管理系统需要输入学号、密码、验证码以及用户身份,因为是验证学生身份的,所以身份这一项固定死为学生。经过实验发现验证码是由另外的js生成验证的,而且默认0为正确,所以验证码可以不用输入。在firefox上用adblock屏蔽了验证码的js,然后直接输学号和密码就能登录了。
通过调试功能查看发送的数据。第一个数据的值在网页中是固定的,但不知道是否会换,所以用java的正则获取这个值,第二个是学号,第三个是密码,第四个是验证码,第五个是登录身份,后两个不知道是什么。
登录页面是default2.aspx,登录成功后的页面是xs_main.aspx,只要检测返回地址是否匹配就能验证登录是否成功了。
实际测试可以验证成功。
相关代码:
package www.wamgk.com;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServlet