模拟登录学校的学生服务子系统查询成绩
2016-08-02 23:01
375 查看
期末查成绩很是不方便,总是页面还没有出来就超时了,所以自己写个任务,每十分钟查询一次,查询到成绩,将数据写进记事本。
原理:
第一步,访问验证码图片,获取验证码和sessionId,保存起来。
第二步:带着账号密码,验证码和sessionId去登录,登陆成功后获取cookies
带着第二步获取的cookies去查成绩。
遇到的问题:
1.访问源问题; 解决方式:浏览器登录抓包,抓取到登录信息的依赖
2.验证码图片怎么获取图片上的文字:我们学校的网站居然是直接回返回验证码数字,所以我不用解析图片就获得验证码
直接上代码:
完毕
原理:
第一步,访问验证码图片,获取验证码和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(); }
完毕
相关文章推荐
- SQL查询每所学校语文成绩最高的学生信息
- python爬虫实战之模拟正方教务系统登录查询成绩
- 写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我
- python3模拟登录我们学校的官网爬去本学期的成绩
- python爬虫实战之模拟正方教务系统登录查询成绩
- java模拟登录校内成绩查询网站,将获得的HTML代码用jsoup解析
- sql查询每个班上成绩最高的学生信息
- 查询学生平均成绩及其名次_24
- 在服务中模拟当前登录用户读取HKEY_CURRENT_USER
- vcenter使用搜索功能提示登录查询服务失败
- RMI实现一个学生成绩或教师信息查询的程序
- PHP+MYSQL+HTML 学生成绩查询
- 查询学生平均成绩及其名次
- 学生成绩储存及查询系统(一)
- 学生成绩管理查询系统
- 使用LINQ查询成绩合格的学生,并按照成绩降序排序。
- HttpClient 实例模拟登录 查询数据
- sql2005 学生成绩排名查询
- SQL的老题目:查询学生平均成绩及其名次
- 查询成绩都大于80分的学生