您的位置:首页 > 其它

模拟登录学校的学生服务子系统查询成绩

2016-08-02 23:01 375 查看
期末查成绩很是不方便,总是页面还没有出来就超时了,所以自己写个任务,每十分钟查询一次,查询到成绩,将数据写进记事本。

原理:

第一步,访问验证码图片,获取验证码和sessionId,保存起来。

第二步:带着账号密码,验证码和sessionId去登录,登陆成功后获取cookies

带着第二步获取的cookies去查成绩。

遇到的问题:

1.访问源问题; 解决方式:浏览器登录抓包,抓取到登录信息的依赖

2.验证码图片怎么获取图片上的文字:我们学校的网站居然是直接回返回验证码数字,所以我不用解析图片就获得验证码

直接上代码:

@Test
public void testHttppost() throws IOException
{

URL url = new URL("http://jwc.wyu.edu.cn/student/rndnum.asp");             //访问验证码图片地址
URLConnection rulConnection = url.openConnection();
HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection;
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setDoInput(true);
httpUrlConnection.setUseCaches(false);
httpUrlConnection.setRequestProperty("Content-type", "application/x-java-serialized-object");

httpUrlConnection.setRequestMethod("GET");
httpUrlConnection.connect();

Map<String, List<String>> cookievals = httpUrlConnection.getHeaderFields();
for (Map.Entry<String,List<String>> entry : cookievals.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
String cookievalss = httpUrlConnection.getHeaderField("Set-Cookie");
String sessionid = cookievalss.substring(0, cookievalss.indexOf(";"));           //获取服务器发放的Sessionid

String code=cookievals.get("Set-Cookie").get(1);
String codes=code.substring(0,code.indexOf(";"));
String codess=codes.substring(12);

System.out.println(code.substring(0,code.indexOf(";")));

System.out.print(codess);

httpUrlConnection.disconnect();

URL urls = new URL("http://jwc.wyu.edu.cn/student/logon.asp");
URLConnection rulConnections = urls.openConnection();
HttpURLConnection httpUrlConnections = (HttpURLConnection) rulConnections;
httpUrlConnections.setDoOutput(true);
httpUrlConnections.setDoInput(true);
httpUrlConnections.setUseCaches(false);
httpUrlConnections.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

httpUrlConnections.setRequestProperty("cookie","1dec8f54-9653-7118-51ab-f8973159cea2=http%3A//jwc.wyu.edu.cn/student/body.htm; b2612fa0-67d3-5bc4-22c8-bb2f51c3a749=http%3A//jwc.wyu.edu.cn/student/body.htm; 2d243fde-31cf-1284-1a6c-e7808044f4e8=http%3A//jwc.wyu.edu.cn/student/body.htm; NGID=c503ab65-7999-44e5-59da-4aa0e9783617; c503ab65-7999-44e5-59da-4aa0e9783617=http%3A//jwc.wyu.edu.cn/student/body.htm; safedog-flow-item=BD8A5760D62EB1B9E3493771FA385C99; "+sessionid+"; "+codes);       //设置http头中的cookie

httpUrlConnections.setRequestProperty("Referer","http://jwc.wyu.edu.cn/student/body.htm");
httpUrlConnections.setRequestMethod("POST");

httpUrlConnections.connect();
DataOutputStream out = new DataOutputStream( httpUrlConnections.getOutputStream());

String content = "UserCode=" + URLEncoder.encode("3113002379", "UTF-8");

content +="&UserPwd="+URLEncoder.encode("573725", "UTF-8");
content +="&Validate="+URLEncoder.encode(codess, "UTF-8");

out.writeBytes(content);

out.flush();
out.close();

//			 Map<String, List<String>> cookievalsss = httpUrlConnections.getHeaderFields();
//
//			 for (Map.Entry<String,List<String>> entry : cookievalsss.entrySet()) {
//				   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
//				  }
//
//			 String cookievalsst = httpUrlConnections.getHeaderField("Set-Cookie");
//			 String sessionidt = cookievalsst.substring(0, cookievalsst.indexOf(";"));
//
//			 String codet=cookievalsss.get("Set-Cookie").get(1);
//			String codest=codet.substring(0,codet.indexOf(";"));
//			String codesst=codest.substring(12);

InputStream ins=httpUrlConnections.getInputStream();

System.out.println(httpUrlConnections.getResponseCode());
BufferedReader br =new BufferedReader(new InputStreamReader(ins,"gbk"));

String line = "";
String result = "";
while(null != (line=br.readLine())){
result += line;

}
System.out.println(result);

ins.close();
httpUrlConnections.disconnect();

//去访问成绩链接

URL urlst = new URL("http://jwc.wyu.edu.cn/student/f4_myscore11.asp");
URLConnection rulConnectionst = urlst.openConnection();
HttpURLConnection httpUrlConnectionst = (HttpURLConnection) rulConnectionst;
httpUrlConnectionst.setDoOutput(true);
httpUrlConnectionst.setDoInput(true);
httpUrlConnectionst.setUseCaches(false);
httpUrlConnectionst.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

httpUrlConnectionst.setRequestProperty("cookie","1dec8f54-9653-7118-51ab-f8973159cea2=http%3A//jwc.wyu.edu.cn/student/body.htm; b2612fa0-67d3-5bc4-22c8-bb2f51c3a749=http%3A//jwc.wyu.edu.cn/student/body.htm; 2d243fde-31cf-1284-1a6c-e7808044f4e8=http%3A//jwc.wyu.edu.cn/student/body.htm; NGID=c503ab65-7999-44e5-59da-4aa0e9783617; c503ab65-7999-44e5-59da-4aa0e9783617=http%3A//jwc.wyu.edu.cn/student/body.htm; safedog-flow-item=BD8A5760D62EB1B9E3493771FA385C99; "+sessionid+"; LogonNumber= ");

httpUrlConnectionst.setRequestProperty("Referer","http://jwc.wyu.edu.cn/student/menu.asp");
httpUrlConnectionst.setRequestMethod("GET");

httpUrlConnectionst.connect();

Map<String, List<String>> cookievalssst = httpUrlConnectionst.getHeaderFields();

Map<String, String> hmst=HttpUtil.getHttpResponseHeader(httpUrlConnectionst);

InputStream inst=httpUrlConnectionst.getInputStream();

System.out.println(httpUrlConnectionst.getResponseCode());
BufferedReader brt =new BufferedReader(new InputStreamReader(inst,"gbk"));

String linet = "";
String resultt = "";
while(null != (linet=brt.readLine())){
resultt += linet;

}

HttpUtil.StringToFile(resultt,"D:/Eproject/weibo/src/score.txt");
inst.close();
httpUrlConnectionst.disconnect();

}


完毕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: