如何通過抓包實現教務系統功能:La吧項目詳解與工具推薦
在進行數據抓取分析時,許多人會困惑于工具的選擇。實際上,許多瀏覽器本身就配備了強大的開發工具,足以應對這一任務。下面,我會為大家逐一介紹這些工具。
常見瀏覽器分析工具
使用IE內核的瀏覽器,比如360安全瀏覽器,可以安裝一款功能強大的網頁數據分析軟件,這軟件對于從事Web開發的人來說相當熟悉。火狐瀏覽器本身也配備了實用的工具,其功能和前面提到的類似,博主通常使用火狐瀏覽器來進行數據抓取和分析。
實際案例背景
以博主自身為例,他所創作的作品涉及從廣東石油化工學院教務系統中提取數據進行分析和處理。通過他繪制的圖表,人們或許會產生類似的抓取數據想法。現在,我們即將步入實際操作的階段。
打開抓包分析頁面
??
?/**
??*?登錄時得到cookie
??*?@param?xueHao?學號,即是登陸賬號
??*?@param?password?登陸密碼
??*?@return
??*/
?public?List?getCookie(String?xueHao,String?password)?{
???List?cookies?=?null;?//?保存獲取的cookie
??try?{
???HttpClient?client?=?new?DefaultHttpClient();
??//學校的教務系統,改為你的學校教務系統
???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",?"學生"));
???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"));
???//?發出HTTP?request
???httpPost.setEntity(new?UrlEncodedFormEntity(params,?HTTP.UTF_8));
???//?取得HTTP?response
???HttpResponse?httpResponse?=?client.execute(httpPost);?//?執行
???//?若狀態碼為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;
?}
一切準備就緒,只需輕點瀏覽器的小圖標,或是直接敲擊F12鍵,抓取頁面數據的功能便會顯現。這個頁面,是后續深入分析的根本,一旦打開,便意味著我們能夠踏入數據海洋,探尋所需信息。
選擇并抓取數據
登錄系統后,便可著手處理個人感興趣的數據。挑選目標頁面,一點擊便可知曉登錄是否成功,若已登錄,界面將顯示非空信息。此外,還能觀察到所需數據是以json格式呈現,這便清晰指出了需要抓取的具體內容。
數據格式與解析
或許有人會覺得這些數據格式難以理解,但請放心。點擊asp格式的網頁,系統會以asp格式響應;若是html網頁,則響應也將是html格式,均能被解析。首先需要確定目標網頁的網址,例如3008.aspx,但僅有網址還不夠。
權限與數據處理
??/**
??*?得到成績數據
??*/
?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;
?}
進行數據檢索時,需向系統透露個人身份信息。需將相關資料輸入系統,例如("","ASP.=" +.get(0).()+";=" +.get(1).()),以便系統能夠判定查詢權限。在代碼中,list = ()是博主自行開發的數據獲取手段,用于將數據存入容器并返回。值得一提的是,博主的數據并非存儲在本地文件中,而是通過網絡從云端服務中獲取。一旦服務器數據更新,下拉操作即可獲取最新信息,同時還能在該平臺設置應用官網等額外功能。
在使用瀏覽器工具抓取信息的過程中,大家是否遇到過什么困難?若覺得本文對您有所幫助,不妨點個贊或轉發一下!
作者:小藍
鏈接:http://www.beijingshangmencuiru.cn/content/8665.html
本站部分內容和圖片來源網絡,不代表本站觀點,如有侵權,可聯系我方刪除。