胡云峰,陳皖芬
(1.文山學(xué)院 計科系,云南 文山 663000;2.文山州民族職業(yè)技術(shù)學(xué)校,云南 文山 663000)
國家每年都組織兩次全國計算機等級考試,目的是檢驗考生的計算機使用水平??荚嚱Y(jié)束后,學(xué)校將所有考生的姓名、考號和查詢密碼整理為一個文件(如圖1),組織大量教師分任務(wù)進行查詢。由于考生眾多,工作重復(fù)、枯燥,會導(dǎo)致很多錯誤的發(fā)生,因此往往一位教師完成工作后還需要另一位教師進行審核。是否可以尋求一種簡單便捷的方式,避免重復(fù)輸入考生考號、密碼,同時避免手動登記考生考試成績,最后可以分類統(tǒng)計,匯總及分析考生考試情況?
圖1 學(xué)生姓名、考號及查詢密碼
抓取分數(shù)查詢過程中產(chǎn)生的數(shù)據(jù)包,對數(shù)據(jù)包進行分析,提取有用信息,構(gòu)造出查詢數(shù)據(jù)后,利用XMLHttpRequest對象模擬客戶端瀏覽器向服務(wù)器提交查詢請求,最后根據(jù)服務(wù)器向客戶端瀏覽器發(fā)回的應(yīng)答數(shù)據(jù)包,提取出考生考試成績等有用信息進行保存。
利用HTTPWATCH PROFESSIONAL捕獲查詢過程產(chǎn)生的數(shù)據(jù)包[1],如圖2所示。
圖2 成績查詢結(jié)果數(shù)據(jù)捕獲
得到HTTP數(shù)據(jù)包數(shù)據(jù)如下:
對以上抓取到的HTTP數(shù)據(jù)包數(shù)據(jù)進行分析:
“POST /jsjks2011/servlet/Search HTTP/1.1”表示整個查詢過程利用的是“POST”方式傳遞數(shù)據(jù),數(shù)據(jù)傳遞的目的地址是“/jsjks2011/servlet/Search”。
“xh=3533520043000112&cxmm=19900320&Valid ateCode=gefw3&button=”表示整個查詢過程中傳遞的數(shù)據(jù),由3部分構(gòu)成,其中“xh=3533520043000112”是在頁面上填寫的考號,“cxmm=19900320”是在頁面上填寫的查詢密碼,“ValidateCode=gefw3”是頁面生成的驗證碼。
綜合以上關(guān)鍵數(shù)據(jù),利用易語言[2]及已經(jīng)封裝了XMLHttpRequest模擬數(shù)據(jù)提交絕大多數(shù)功能的“精易模塊”來模擬整個過程的數(shù)據(jù)傳遞。
post地 址 = “http://score.ynzs.cn/jsjks2011/servlet/Search”
post數(shù)據(jù) = “xh=3533520043000112&cxmm=19900320&ValidateCode=” + 刪首尾空 (編輯框1.內(nèi)容)
文本 = 網(wǎng)頁 _ 訪問 (post地址 , 1, , , 到字節(jié)集(post數(shù)據(jù)), ,)
輸出調(diào)試文本(文本)
網(wǎng)頁_訪問()方法的參數(shù)<1>名稱為“提交地址”,即為訪問的網(wǎng)絡(luò)地址。目的地址為:“http://score.ynzs.cn/jsjks2011/servlet/Search”。
網(wǎng)頁_訪問()方法的參數(shù)<2>名稱為“提交方式”,由上分析,知道查詢系統(tǒng)使用的數(shù)據(jù)傳遞方法為“POST”,這里提供1(代表POST方式)作為參數(shù)。
網(wǎng)頁_訪問()方法的參數(shù)<5>名稱為 “提交數(shù)據(jù)”。
利用一個圖片框控件顯示頁面生成的驗證碼,利用一個文本框控件讓查詢者手動填入驗證碼如圖3所示。
圖3 軟件驗證碼輸入界面
運行程序代碼,利用“輸出調(diào)試文本(文本)”在調(diào)試窗口輸出調(diào)試結(jié)果,可以得到數(shù)據(jù)提交后返回的HTTP應(yīng)答報文,如下:
可見,系統(tǒng)在輸入驗證碼后可將準(zhǔn)考證號所對應(yīng)考生的考試結(jié)果以HTML網(wǎng)頁的形式顯示出來。至此,查看考試成績功能實現(xiàn)。
在得到的應(yīng)答數(shù)據(jù)包[3]中,包含了大量HTML代碼,即考試結(jié)果是以HTML代碼的形式返回給客戶端瀏覽器的,因此,該模塊只需從HTML代碼中提取出關(guān)鍵信息,組成固定的格式,進行保存即可。
根據(jù)返回的HTML數(shù)據(jù),利用正則表達式[4]匹配HTML代碼,刪除所有HTML標(biāo)記,從中提取出需要的文本字段,將得到的結(jié)果保存到相應(yīng)文件中即可。如:
系統(tǒng)最主要的功能之一就是能替代人工手動輸入考生考號及密碼信息(驗證碼需要手動輸入)。為實現(xiàn)這一功能,需要系統(tǒng)能讀取待查考生相關(guān)信息,并能將這些信息作為查詢數(shù)據(jù)發(fā)送給服務(wù)器,使用易語言中的通用對話框控件以及相關(guān)屬性和方法。打開通用對話框,選取考號、密碼的記錄文件,系統(tǒng)識別該文件,將以特定規(guī)則排列的考號、密碼,讀取到內(nèi)存數(shù)組中,待要進行查詢的時候,再將內(nèi)存數(shù)組中的考號及密碼一一對應(yīng)組成HTTP數(shù)據(jù)包發(fā)送到服務(wù)器上進行查詢。
考試成績查詢系統(tǒng)通過XMLHttpRequest對象模擬客戶端瀏覽器向服務(wù)器提交查詢請求,抓取服務(wù)器返回的應(yīng)答數(shù)據(jù)包,分析相關(guān)數(shù)據(jù)后可提取出考生的成績信息,并通過正則表達式匹配,刪除HTML標(biāo)記后對結(jié)果進行保存。對考試成績查詢這種重復(fù)枯燥,且必須在網(wǎng)絡(luò)上進行操作并要保證其準(zhǔn)確性的工作,只要根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)果和傳遞方式,對其進行一定的結(jié)構(gòu)及利用,就可以從根本上改變工作方式,解決這個問題。只要根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包的結(jié)構(gòu)和傳遞方式,對其進行一定的構(gòu)造及利用,可以從根本上改變工作與生活方式。
[1]吳功宜,吳英.計算機網(wǎng)絡(luò)技術(shù)教程—自頂向下分析與設(shè)計方案[M].北京:機械工業(yè)出版社,2010:119-126.
[2]易語言教材編委會.易語言編程系統(tǒng)[M].西安:西安地圖出版社,2005:1-2.
[3]李太君,林元乖,張晉.計算機網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2009:67-68.
[4](美)Andrew Watt 著.李松峰,李麗,譯.正則表達式入門經(jīng)典[M].北京:清華大學(xué)出版社,2008:212.