如何通過抓包實現(xiàn)教務(wù)系統(tǒng)功能:La吧項目詳解與工具推薦
在進行數(shù)據(jù)抓取分析時,許多人會困惑于工具的選擇。實際上,許多瀏覽器本身就配備了強大的開發(fā)工具,足以應(yīng)對這一任務(wù)。下面,我會為大家逐一介紹這些工具。
常見瀏覽器分析工具
使用IE內(nèi)核的瀏覽器,比如360安全瀏覽器,可以安裝一款功能強大的網(wǎng)頁數(shù)據(jù)分析軟件,這軟件對于從事Web開發(fā)的人來說相當(dāng)熟悉。火狐瀏覽器本身也配備了實用的工具,其功能和前面提到的類似,博主通常使用火狐瀏覽器來進行數(shù)據(jù)抓取和分析。
實際案例背景
以博主自身為例,他所創(chuàng)作的作品涉及從廣東石油化工學(xué)院教務(wù)系統(tǒng)中提取數(shù)據(jù)進行分析和處理。通過他繪制的圖表,人們或許會產(chǎn)生類似的抓取數(shù)據(jù)想法。現(xiàn)在,我們即將步入實際操作的階段。
打開抓包分析頁面
??
?/**
??*?登錄時得到cookie
??*?@param?xueHao?學(xué)號,即是登陸賬號
??*?@param?password?登陸密碼
??*?@return
??*/
?public?List?getCookie(String?xueHao,String?password)?{
???List?cookies?=?null;?//?保存獲取的cookie
??try?{
???HttpClient?client?=?new?DefaultHttpClient();
??//學(xué)校的教務(wù)系統(tǒng),改為你的學(xué)校教務(wù)系統(tǒng)
???String?uriAPI?=?"http://218.15.22.136:3008/";
???HttpPost?httpPost?=?new?HttpPost(uriAPI);
???List?params?=?new?ArrayList();
???params.add(new?BasicNameValuePair(
?????"Window1$SimpleForm1$rdl_shenFen",?"學(xué)生"));
???params.add(new?BasicNameValuePair("Window1$SimpleForm1$tbx_XueHao",
?????xueHao));
???params.add(new?BasicNameValuePair("Window1$SimpleForm1$tbx_pwd",
?????password));
???params.add(new?BasicNameValuePair("Window1_Collapsed",?"false"));
???params.add(new?BasicNameValuePair("Window1_Hidden",?"false"));
???params.add(new?BasicNameValuePair("Window1_SimpleForm1_Collapsed",
?????"false"));
???params.add(new?BasicNameValuePair("X_AJAX",?"true"));
???params.add(new?BasicNameValuePair("X_CHANGED",?"true"));
???params.add(new?BasicNameValuePair("X_STATE",?"e30="));
???params.add(new?BasicNameValuePair("X_TARGET",
?????"Window1_Toolbar1_btn_login"));
???params.add(new?BasicNameValuePair("__EVENTARGUMENT",?""));
???params.add(new?BasicNameValuePair("__EVENTTARGET",
?????"Window1$Toolbar1$btn_login"));
???//?發(fā)出HTTP?request
???httpPost.setEntity(new?UrlEncodedFormEntity(params,?HTTP.UTF_8));
???//?取得HTTP?response
???HttpResponse?httpResponse?=?client.execute(httpPost);?//?執(zhí)行
???//?若狀態(tài)碼為200?ok
???if?(httpResponse.getStatusLine().getStatusCode()?==?200)?{?//?返回值正常
????//?獲取返回的cookie
????cookies?=?((AbstractHttpClient)?client).getCookieStore()
??????.getCookies();
????//System.out.println("cookies="?+?cookies);
????if?(cookies.isEmpty())
?????System.out.println("cookies?empty");
???}?else?{
???}
??}?catch?(Exception?e)?{
???System.out.println("getCookie?error:"?+?e);
??}
??return?cookies;
?}
一切準(zhǔn)備就緒,只需輕點瀏覽器的小圖標(biāo),或是直接敲擊F12鍵,抓取頁面數(shù)據(jù)的功能便會顯現(xiàn)。這個頁面,是后續(xù)深入分析的根本,一旦打開,便意味著我們能夠踏入數(shù)據(jù)海洋,探尋所需信息。
選擇并抓取數(shù)據(jù)
登錄系統(tǒng)后,便可著手處理個人感興趣的數(shù)據(jù)。挑選目標(biāo)頁面,一點擊便可知曉登錄是否成功,若已登錄,界面將顯示非空信息。此外,還能觀察到所需數(shù)據(jù)是以json格式呈現(xiàn),這便清晰指出了需要抓取的具體內(nèi)容。
數(shù)據(jù)格式與解析
或許有人會覺得這些數(shù)據(jù)格式難以理解,但請放心。點擊asp格式的網(wǎng)頁,系統(tǒng)會以asp格式響應(yīng);若是html網(wǎng)頁,則響應(yīng)也將是html格式,均能被解析。首先需要確定目標(biāo)網(wǎng)頁的網(wǎng)址,例如3008.aspx,但僅有網(wǎng)址還不夠。
權(quán)限與數(shù)據(jù)處理
??/**
??*?得到成績數(shù)據(jù)
??*/
?public?ArrayList<HashMap<String,?Object>>?getMyGrade(List?cookies)?{
??String?result?=?null;
??ArrayList<HashMap<String,?Object>>?list?=?null;
??String?uriPath?=?"http://218.15.22.136:3008/ChengJiChaXun.aspx";
??try?{
???HttpPost?httpPost?=?new?HttpPost(uriPath);
???httpPost.setHeader("Cookie",?"ASP.NET_SessionId="
?????+?cookies.get(0).getValue()?+?";XingMing="
?????+?cookies.get(1).getValue());
???HttpResponse?httpResponse?=?new?DefaultHttpClient()
?????.execute(httpPost);
???if?(httpResponse.getStatusLine().getStatusCode()?==?200)?{
????result?=?EntityUtils.toString(httpResponse.getEntity());
????if?(result?!=?null?&&?!result.isEmpty())?{
?????list?=?new?ArrayList<HashMap<String,?Object>>();
?????list?=?toGradeData(result);
????}
???}
??}?catch?(ClientProtocolException?e)?{
???//?TODO?Auto-generated?catch?block
???e.printStackTrace();
??}?catch?(IOException?e)?{
???//?TODO?Auto-generated?catch?block
???e.printStackTrace();
??}
??return?list;
?}
進行數(shù)據(jù)檢索時,需向系統(tǒng)透露個人身份信息。需將相關(guān)資料輸入系統(tǒng),例如("","ASP.=" +.get(0).()+";=" +.get(1).()),以便系統(tǒng)能夠判定查詢權(quán)限。在代碼中,list = ()是博主自行開發(fā)的數(shù)據(jù)獲取手段,用于將數(shù)據(jù)存入容器并返回。值得一提的是,博主的數(shù)據(jù)并非存儲在本地文件中,而是通過網(wǎng)絡(luò)從云端服務(wù)中獲取。一旦服務(wù)器數(shù)據(jù)更新,下拉操作即可獲取最新信息,同時還能在該平臺設(shè)置應(yīng)用官網(wǎng)等額外功能。
在使用瀏覽器工具抓取信息的過程中,大家是否遇到過什么困難?若覺得本文對您有所幫助,不妨點個贊或轉(zhuǎn)發(fā)一下!
作者:小藍
鏈接:http://www.tymcc.com.cn/content/8665.html
本站部分內(nèi)容和圖片來源網(wǎng)絡(luò),不代表本站觀點,如有侵權(quán),可聯(lián)系我方刪除。