Java模拟登录正方教务管理系统
生活随笔
收集整理的這篇文章主要介紹了
Java模拟登录正方教务管理系统
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
概述
這里我僅僅就說(shuō)說(shuō)怎么登錄,后續(xù)有時(shí)間再更新怎么查成績(jī)、課表等
工具
- OkHttpClient(這個(gè)聯(lián)網(wǎng)框架還不錯(cuò))
- 抓包工具(這里演示的是使用chrome自帶的)
流程簡(jiǎn)述
- 抓包,查看請(qǐng)求頭,確定提交的信息
- 構(gòu)建表單,請(qǐng)求頭
詳細(xì)流程
一、抓包
【不會(huì)的可以點(diǎn)這里】
這里的目標(biāo)鏈接:我們學(xué)校的正方管理系統(tǒng)
開(kāi)始:
我們點(diǎn)擊紅色框住的那個(gè)鏈接,就可以看到右邊的詳細(xì)信息了
我們來(lái)看看表單:
再看看請(qǐng)求頭(鑒于篇幅,簡(jiǎn)要列幾個(gè)重要的屬性):
Content-Type:application/x-www-form-urlencoded Cookie:**** Host:*****根據(jù)抓包,發(fā)現(xiàn)需要提交的信息有:form表單,請(qǐng)求頭得有Cookie。表單顯而易見(jiàn),那么Cookie從哪里來(lái)的呢—-這貨是獲取驗(yàn)證碼傳來(lái)的Cookie,所以我們還得請(qǐng)求一次驗(yàn)證碼的鏈接,拿到Cookie→驗(yàn)證碼圖片鏈接
二、構(gòu)建表單,獲取驗(yàn)證碼Cookie
構(gòu)建表單:
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("學(xué)生", "gbk"));builder.add("Button1", "");builder.add("hidPdrs", "");builder.add("hidsc", "");RequestBody requestBody = builder.build();獲取驗(yàn)證碼圖片并且返回拿到的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");//驗(yàn)證碼下載到本地,手動(dòng)輸入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;}構(gòu)建請(qǐng)求頭:
final String cookie = DownloadImg.downLoad("這里寫(xiě)驗(yàn)證碼圖片的鏈接"); Request request = new Request.Builder().url(school_url).addHeader("Cookie", cookie).post(requestBody).build();三、構(gòu)建完成開(kāi)始模擬登錄
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);開(kāi)始進(jìn)行查成績(jī)操作}}});然后就登錄成功了:
總結(jié)
總的來(lái)說(shuō)不是很多,關(guān)鍵要心細(xì),有耐心。不懂的地方大家下面留言,一起交流,一起進(jìn)步。
總結(jié)
以上是生活随笔為你收集整理的Java模拟登录正方教务管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows如何将软件添加到右键快捷菜
- 下一篇: 现代支付系统设计 ——基于微服务的实践