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

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


原理:

第一步,访问验证码图片,获取验证码和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();
             
             
			
	}
	
	
	

完毕


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值