當前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌OA行業(yè)資訊
巧用HTTP自動訪問 提高網(wǎng)絡(luò)管理效率
HTTP協(xié)議的瀏覽器是人們訪問互聯(lián)網(wǎng)常用的主要手段。目前使用程序自動訪問Web網(wǎng)頁尚屬于黑客技術(shù)范疇,經(jīng)常用于自動點擊網(wǎng)頁廣告、自動搶注冊等活動,很多網(wǎng)頁設(shè)置驗證碼試圖阻止機器登錄。隨著互聯(lián)網(wǎng)的普及,大量專業(yè)應(yīng)用以及網(wǎng)絡(luò)通信設(shè)備都使用Browser/Server界面實現(xiàn),操作人員使用瀏覽器往往需要做大量簡單重復(fù)、相對固定的操作,利用程序自動訪問可以大幅提高操作效率和操作正確性。
在瀏覽器接口實現(xiàn)自動訪問,實質(zhì)是由程序代替操作人員操作瀏覽器,優(yōu)點是直觀,可參照人工瀏覽器操作和響應(yīng)編程,易于處理網(wǎng)絡(luò)不穩(wěn)定、服務(wù)器響應(yīng)延遲等情況; 缺點是編程較為復(fù)雜。
在服務(wù)器接口實現(xiàn)自動訪問,實質(zhì)上是由程序取代瀏覽器直接和服務(wù)器交互,優(yōu)點是編程簡單,但要求對HTTP協(xié)議有較深入的了解,詳細分析頁面動作。
我們可以針對不同應(yīng)用,根據(jù)實際情況,選擇合適的方法。
自動修改認證 服務(wù)器用戶數(shù)據(jù)
下面介紹一個實際應(yīng)用案例: 某企業(yè)要通過電信提供的Web界面的用戶信息管理系統(tǒng),管理上萬個用戶賬號,人工操作復(fù)雜、錯誤率高、響應(yīng)不及時,尤其在要求限時更新全部用戶賬號時,人工操作根本不可能完成。為此,某企業(yè)開發(fā)了一個自動管理用戶程序,應(yīng)用Windows系統(tǒng)VC++模擬人工瀏覽器操作實現(xiàn),由于找到成熟網(wǎng)頁操作函數(shù)庫比較困難,該企業(yè)找到了網(wǎng)絡(luò)佚名作者的WebAuto(1.0.0.1)提供的一些簡單易用的網(wǎng)頁基本操作函數(shù),剛好滿足項目的需要,開發(fā)要點如下:
(1)網(wǎng)頁操作
VC支持MicroSoft Web Browser ActiveX控件,在系統(tǒng)自動產(chǎn)生的事件處理函數(shù)DocumentCompleteExplorer1()中可獲取服務(wù)器響應(yīng)的(IHTMLDocument2 *)類型的 HTML文檔,并可在該文檔上實現(xiàn)瀏覽器交互操作,瀏覽器控件可直觀顯示操作結(jié)果。 WebAuto.dll提供了幾個基本的網(wǎng)頁操作函數(shù):
WEBInputValue(): 在指定名字的文本框輸入文本值;
WEBExecScriptFunc(): 執(zhí)行指定函數(shù)名的JavaScript函數(shù);
WEBElemClick(): 可點擊單選按鈕;
WEBFormSubmit(): 模擬點擊表單提交,IE控件完成實際提交動作。
(2)判斷返回結(jié)果
根據(jù)控件的get_LocationURL()判斷是否轉(zhuǎn)到目的網(wǎng)頁。
WEBGetFrameDoc(): 從含有Frame框架文檔中讀取Frame內(nèi)含文檔;
WEBGetSource():讀取目的文檔源碼,判斷是否有預(yù)期結(jié)果。
(3)點擊彈出窗口
有些網(wǎng)頁用alert()彈出Message窗口,提示輸入錯誤和返回結(jié)果,并一直等待人工輸入。調(diào)用WEBDlgClick()函數(shù)自動點擊彈出窗口,結(jié)束等待。也可根據(jù)函數(shù)返回值判斷返回文本,確定操作結(jié)果成功或失敗,或者超時無響應(yīng),即沒有彈出預(yù)期的窗口。在網(wǎng)絡(luò)不穩(wěn)定的情況下,應(yīng)在定時延遲進程中執(zhí)行自動點擊操作。
(4)驗證碼
網(wǎng)站的驗證碼用于防止程序自動登錄。驗證碼在網(wǎng)頁中用動態(tài)URL表示,WEBVerifyCode函數(shù)調(diào)用驗證碼URL,在屏幕顯示出來,等待人工查看并輸入。關(guān)于如何自動識別驗證碼,隨不同網(wǎng)站驗證碼圖像復(fù)雜程度不同差異很大。
通過自動訪問Web技術(shù)能夠?qū)崿F(xiàn)用戶賬號全程自動管理,并且在批量修改時可達到40條/分鐘的處理速度,幾個小時即可完成上萬條數(shù)據(jù)修改,從而滿足批量修改的需求。
網(wǎng)頁操作函數(shù)庫的開發(fā)
某企業(yè)利用WebAuto.dll滿足了該項目開發(fā)要求,思路是將網(wǎng)頁的操作分解為基本動作,基本動作開發(fā)相應(yīng)的函數(shù),既大大降低了應(yīng)用程序編程工作量,又避免了庫函數(shù)開發(fā)過于復(fù)雜。但它還很不完善,為滿足自動訪問,一般網(wǎng)頁要求至少需要增加和完善以下函數(shù)或功能:
(1)自動登錄需要使用基本驗證保護的網(wǎng)站,即在彈出窗口自動輸入用戶和密碼;
(2)增加設(shè)置SELECT對象,即選擇點擊選擇下拉菜單的函數(shù);
(3)增加對多Frame網(wǎng)頁和多表單文檔的支持;
(4)支持點選單選按鈕組,即同一名字多個值輸入。
其中自動登錄和點擊確定窗口屬于利用Windows系統(tǒng)函數(shù)實現(xiàn),其他都是利用VC的瀏覽器對象類對HTML文檔交互操作。
以下舉例說明庫函數(shù)開發(fā)要點:
(1) 自動登錄使用基本身份認證
需要在彈出登錄窗口輸入用戶名、密碼,點擊確定。應(yīng)在訪問網(wǎng)頁前設(shè)置定時程序,在定時程序中調(diào)用自動登錄程序。自動登錄是嵌套窗口結(jié)構(gòu)。注意彈出登錄窗口不是瀏覽器的子窗口,故先調(diào)用FindWindow()根據(jù)窗口標題找到登錄窗口的句柄,再調(diào)用FindWindow()根據(jù)窗口類名或標題找到各個子窗口,再SendMessage()向各窗口發(fā)送消息,設(shè)置記憶選擇為“不記憶”。
(2)點擊選擇SELECT對象的實現(xiàn)
VC定義了各種HTML對象。
實現(xiàn)方法是調(diào)用各文檔對象的get_forms()獲得表單集合,再依次調(diào)用各對象的item(),QueryInterface,get_name()獲得目標SELECT對象,最后調(diào)用SELECT 的put_selectedIndex()方法設(shè)置選擇的值。支持多表單的就是get_forms(),讀出包含所有表單的集合,逐一讀出表單名稱,取出與目標表單名稱相符的表單即可。
Web操作函數(shù)庫雖然每條函數(shù)只有幾十條語句,主要使用各種系統(tǒng)定義各種類型參數(shù)調(diào)用各種系統(tǒng)函數(shù),編程和調(diào)測還是相對繁雜。將訪問網(wǎng)頁行為分解為十幾個對應(yīng)函數(shù),簡單地用表單對象名字做參數(shù),接口簡單易用,把復(fù)雜的系統(tǒng)函數(shù)調(diào)用封裝到函數(shù)內(nèi),開發(fā)自動訪問Web應(yīng)用程序就比較容易了。
Linux系統(tǒng)自動設(shè)置網(wǎng)絡(luò)設(shè)備
上文提到的某企業(yè)還有一些分散各地的辦公網(wǎng)點,需要自動設(shè)置ADSL PPPOE撥號連接。絕大多數(shù)路由器僅提供Web界面設(shè)置,只有開發(fā)HTTP自動訪問程序,才能滿足動態(tài)自動配置的需要。
在Linux環(huán)境下,無需理會可視操作界面和彈出窗口、網(wǎng)絡(luò)延遲等,采用服務(wù)器接口比較適宜。
“Haxx”的開源項目libcurl提供了Linux和Windows等平臺下客戶端和Web服務(wù)器間用于實現(xiàn)HTTP協(xié)議交換數(shù)據(jù)的函數(shù)庫。但是由于該企業(yè)系統(tǒng)對存儲空間要求苛刻,無法使用功能豐富的libcurl庫函數(shù),必須轉(zhuǎn)而尋找盡量簡單的實現(xiàn)基本HTTP協(xié)議的函數(shù)庫。Ben Campbell開發(fā)的開源軟件happyHTTP僅用一個C++源文件就可實現(xiàn)簡單的HTTP協(xié)議。
以下介紹用happyHTTP實現(xiàn)自動設(shè)置路由器的開發(fā)要點:
(1) 程序結(jié)構(gòu)
HTTP協(xié)議客戶端請求和服務(wù)器響應(yīng)基本結(jié)構(gòu)(服務(wù)器響應(yīng)無請求頭):
happyHTTP定義一些基本類實現(xiàn)構(gòu)造和發(fā)送請求,接收和分析響應(yīng)的功能。
調(diào)用happyHTTP的:Connection對象的request函數(shù)發(fā)送GET/POST,調(diào)用Connection的pump()函數(shù)處理來自服務(wù)器的響應(yīng)。在定義的CALLBACK函數(shù)中獲取服務(wù)器響應(yīng)文檔的相關(guān)信息。
(2) 基礎(chǔ)認證:
絕大多數(shù)路由器用基礎(chǔ)認證,登錄時要求輸入用戶名和密碼,RFC2617描述了基礎(chǔ)認證過程:
①客戶端發(fā)送URL請求;
②服務(wù)端發(fā)送401文檔(無權(quán)限),并在HEADER加入“WWW-Authenticate”屬性,聲明要求basic authentication;
③客戶端重新發(fā)送請求,并在以后發(fā)送請求HEADER加入” Authorization”屬性,設(shè)置為經(jīng)過base64編碼的用戶名和密碼。
這個過程在上一個應(yīng)用中由瀏覽器控件自動處理。在本應(yīng)用中調(diào)用request模擬瀏覽器發(fā)送認證響應(yīng),在設(shè)置完成前保持連接會話。Base64是簡單地將二進制數(shù)據(jù)編碼為ASCII碼的編碼方法,可在libcurl源碼中找到該函數(shù)。
極少數(shù)路由器采用動態(tài)網(wǎng)頁登錄,不需要基本驗證,登錄操作就是普通提交表單操作。
(3) 確定請求發(fā)送內(nèi)容和響應(yīng)處理
設(shè)置一個網(wǎng)頁在提交時需要將設(shè)置內(nèi)容發(fā)送到路由器。Request請求頭目標URL表單ACTION指向。如上所述,HEADER應(yīng)有身份驗證屬性和保持連接屬性.BODY則是提交網(wǎng)頁需要發(fā)送的參數(shù)。
通過分析網(wǎng)頁文件,確定發(fā)送的項目和如何處理服務(wù)器的響應(yīng),這是比較復(fù)雜的過程。好在有HTTP協(xié)議監(jiān)控器,可記錄請求和響應(yīng)的詳細內(nèi)容。實際編程時可借助HTTP協(xié)議監(jiān)控器,如EffeTech Http Sniffer,人工進行網(wǎng)頁操作,參照EffeTech記錄結(jié)果,設(shè)計發(fā)送和接收內(nèi)容。注意在設(shè)置結(jié)束前,在請求頭中設(shè)置Connection屬性為 “Keep-Alive”,保持會話連接,準確模擬人工執(zhí)行連續(xù)操作結(jié)果。
(4) 判斷操作執(zhí)行結(jié)果
①用重定向進行地址判斷。服務(wù)器執(zhí)行完操作后,轉(zhuǎn)向相應(yīng)網(wǎng)頁,或轉(zhuǎn)向錯誤網(wǎng)頁,服務(wù)器給出303(重定向)文檔,在HEADER Location屬性中可判斷是否轉(zhuǎn)向正確網(wǎng)頁。
②如需要判斷網(wǎng)頁內(nèi)容,可查找文檔BODY中指定信息,用于監(jiān)控路由器狀態(tài),如是否已撥號連接成功。
③超時無響應(yīng)情況下,響應(yīng)處理函數(shù)pump()會超時退出,拋出異常。
應(yīng)用happyHTTP實現(xiàn)了自動配置功能,正確模擬了人工操作結(jié)果,目標代碼只有80KB左右,可滿足存儲空間苛刻的要求。
(5) happyHTTP的不足和改進
happyHTTP1.0對HTTP協(xié)議處理不完善,存在BUG,需要原作者改進。在對存儲和內(nèi)存要求不嚴格的應(yīng)用中,推薦使用較為成熟的開源項目libcurl。
隨著Web應(yīng)用不斷增加和相關(guān)工具不斷完善,通過HTTP Web界面自動訪問系統(tǒng)將成為提高網(wǎng)絡(luò)管理效率的重要手段。
- 1企業(yè)服務(wù)器安全防護的七個切入點
- 2智能視頻分析中的貓膩
- 3淺談數(shù)據(jù)容災(zāi)備份的等級和技術(shù)
- 4打造新一代數(shù)據(jù)中心解決方案完整生態(tài)鏈
- 5數(shù)據(jù)中心綠化 配置管理至關(guān)重要
- 6巧用HTTP自動訪問 提高網(wǎng)絡(luò)管理效率
- 7云存儲:技術(shù)、平臺還是服務(wù)?
- 8新一代SAS技術(shù)浮出水面
- 9SOA如何提升中國管理軟件產(chǎn)業(yè)?
- 10OA辦公為模糊查找“訂單”的查詢結(jié)果顯示
- 11移動支付標準:統(tǒng)一不統(tǒng)一?這是個問題
- 12迅速掌握桌面虛擬化的八大問題
- 13七大常見VM Manager虛擬機故障排查方法
- 14IT技術(shù)成為組織的核心戰(zhàn)略能力
- 15什么是web2.0?
- 16統(tǒng)一通信真的有效嗎
- 17泛普OA系統(tǒng)的車輛申請審批與使用
- 18協(xié)同OA軟件使用表單建模搭建了圖書管理
- 19物聯(lián)網(wǎng)三大應(yīng)用架構(gòu)
- 20Win 7錯失PC桌面與云計算融合良機?
- 21ITSM價值體現(xiàn),從被動管理走向平臺化
- 22虛擬化、刀片、節(jié)能 跨越數(shù)據(jù)中心的三道坎
- 23SOA設(shè)計模式應(yīng)用技巧:理解模式相互關(guān)系?
- 24基于FPGA技術(shù)的RFID板級標簽設(shè)計與實現(xiàn)
- 25利用CMDB來對數(shù)據(jù)中心進行變更管理
- 26小型數(shù)據(jù)中心的規(guī)劃和設(shè)計原則
- 27移動互聯(lián)網(wǎng):你進哪扇門
- 28后OA時代即將到來了
- 29節(jié)能是動態(tài)數(shù)據(jù)中心管理的關(guān)鍵
- 30即時通信監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓