期末查成绩很是不方便,总是页面还没有出来就超时了,所以自己写个任务,每十分钟查询一次,查询到成绩,将数据写进记事本。
原理:
第一步,访问验证码图片,获取验证码和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();
}
完毕