1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Java模拟登录正方教务管理系统

Java模拟登录正方教务管理系统

时间:2023-08-17 13:06:58

相关推荐

Java模拟登录正方教务管理系统

概述

这里我仅仅就说说怎么登录,后续有时间再更新怎么查成绩、课表等

工具

OkHttpClient(这个联网框架还不错)抓包工具(这里演示的是使用chrome自带的)

流程简述

抓包,查看请求头,确定提交的信息构建表单,请求头

详细流程

一、抓包

【不会的可以点这里】

这里的目标链接:我们学校的正方管理系统

开始:

我们点击红色框住的那个链接,就可以看到右边的详细信息了

我们来看看表单:

__VIEWSTATE:dDwyODE2NTM0OTg7Oz4H213j3BiKeXgjVheNPxLa8P8Bjw==//这货我也不知道是啥,通过尝试,直接传一样的就行txtUserName:13408***//学号TextBox2:******//密码txtSecretCode:66mw//验证码RadioButtonList1:(unable to decode value)//RadioButton,乱码,可以用URLEncoder.encode("学生", "gbk")代替//下面四个不解释,传空值就行Button1:lbLanguage:hidPdrs:hidsc:

再看看请求头(鉴于篇幅,简要列几个重要的属性):

Content-Type:application/x-www-form-urlencodedCookie:****Host:*****

根据抓包,发现需要提交的信息有:form表单,请求头得有Cookie。表单显而易见,那么Cookie从哪里来的呢—-这货是获取验证码传来的Cookie,所以我们还得请求一次验证码的链接,拿到Cookie→验证码图片链接

二、构建表单,获取验证码Cookie

构建表单:

FormEncodingBuilder builder = new FormEncodingBuilder();builder.add("__VIEWSTATE","dDwyODE2NTM0OTg7Oz4H213j3BiKeXgjVheNPxLa8P8Bjw==");builder.add("txtUserName", studentId);builder.add("TextBox2", password);builder.add("txtSecretCode", check_code);builder.add("lbLanguage", "");builder.add("RadioButtonList1", URLEncoder.encode("学生", "gbk"));builder.add("Button1", "");builder.add("hidPdrs", "");builder.add("hidsc", "");RequestBody requestBody = builder.build();

获取验证码图片并且返回拿到的Cookie:

public class DownloadImg {private static FileOutputStream fos;public static String downLoad(String url){OkHttpClient okHttpClient = new OkHttpClient();Request request = new Request.Builder().url(url).build();try {Response response = okHttpClient.newCall(request).execute();if(response.isSuccessful()){byte[] bytes = response.body().bytes();File file = new File("D:\\","check_code.png");//验证码下载到本地,手动输入fos = new FileOutputStream(file);fos.write(bytes);fos.flush();String cookie = response.header("set-cookie");System.out.println("cookie:"+cookie);return cookie;}} catch (IOException e) {e.printStackTrace();}finally{try {fos.close();} catch (IOException e) {e.printStackTrace();}}return null;}

构建请求头:

final String cookie = DownloadImg.downLoad("这里写验证码图片的链接");Request request = new Request.Builder().url(school_url).addHeader("Cookie", cookie).post(requestBody).build();

三、构建完成开始模拟登录

okHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) {System.out.println("登录失败");}@Overridepublic void onResponse(Response response) throws IOException {if (response.isSuccessful()) {System.out.println("登录成功");String score_url = response.request().urlString();System.out.println(score_url);//Score(score_url, cookie);开始进行查成绩操作}}});

然后就登录成功了:

总结

总的来说不是很多,关键要心细,有耐心。不懂的地方大家下面留言,一起交流,一起进步。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。