本發(fā)明涉及互聯(lián)網(wǎng)技術領域,尤其是關于一種具有源文件保護功能的靜態(tài)頁面訪問方法。
背景技術:
普通的頁面訪問過程是客戶端的瀏覽器發(fā)送頁面訪問請求給服務器,服務器將該頁面的HTML文檔返回給客戶端,由客戶端瀏覽器解釋執(zhí)行并顯示在窗口中,呈現(xiàn)給終端用戶。這樣做的弊端是客戶端得到的HTML文檔中包含著大量超鏈接信息,甚至邏輯代碼,使得惡意頁面分析、網(wǎng)絡爬蟲、頁面病毒等惡意程序有機可乘。
技術實現(xiàn)要素:
本發(fā)明的主要目的是提供一種具有源文件保護功能的靜態(tài)頁面訪問方法,克服現(xiàn)有方法存在的問題,有效保護源代碼,防止非授權(quán)頁面二次開發(fā)。
本發(fā)明的技術方案是:一種具有源文件保護功能的靜態(tài)頁面訪問方法,當客戶端向服務器發(fā)送頁面訪問請求時,服務器將頁面解析生成靜態(tài)圖片,提取并保存頁面上可訪問鏈接的坐標區(qū)域集合及其對應的鏈接地址集合,然后向客戶端發(fā)送包含靜態(tài)圖片及其坐標區(qū)域集合的響應消息,將頁面以靜態(tài)圖片的形式在客戶端顯示;當客戶端請求訪問靜態(tài)圖片上所點擊位置的鏈接時,服務器根據(jù)點擊位置得到其所在的坐標區(qū)域,然后將該坐標區(qū)域?qū)溄拥刂分赶虻捻撁娼馕錾尚碌撵o態(tài)圖片,提取并保存該頁面上可訪問鏈接的坐標區(qū)域集合及其對應的鏈接地址集合,在客戶端顯示該新的靜態(tài)圖片。
在客戶端請求訪問靜態(tài)圖片上所點擊位置的鏈接之前,客戶端先要判斷鼠標點擊位置是否在靜態(tài)圖片的坐標區(qū)域集合中,如果不在,則不回應請求,如果在,則客戶端向服務器發(fā)送包含鼠標點擊位置的頁面訪問請求消息。
當請求訪問的頁面上有動態(tài)圖時,服務器提取頁面上所有動態(tài)圖的資源地址及其坐標區(qū)域集合并發(fā)送給客戶端,客戶端根據(jù)每個動態(tài)圖的坐標區(qū)域,將所有動態(tài)圖覆蓋在靜態(tài)圖片相應位置進行動態(tài)顯示。
所述動態(tài)圖的坐標區(qū)域是其左上角的坐標和該坐標區(qū)域的寬度和高度。
當服務器解析生成新的靜態(tài)圖片、坐標區(qū)域集合及其對應的鏈接地址集合時,服務器覆蓋替換原內(nèi)容進行存儲。
服務器將所有解析生成的靜態(tài)圖片、坐標區(qū)域集合及其對應的鏈接地址集合保存在本次會話單元存儲路徑下各自訪問鏈接對應的目錄中,供客戶端返回訪問使用。
與現(xiàn)有技術相比,本發(fā)明至少具有下述優(yōu)點及有益效果:
本發(fā)明中服務器不直接將網(wǎng)址域名指向的HTML文件轉(zhuǎn)發(fā)給客戶端,而是對該HTML文件進行解析,客戶端在提出頁面請求后,得到的反饋只有服務器解析后的圖片及可發(fā)生鼠標事件的坐標區(qū)域,客戶端收到的解析后的圖片在客戶端窗口中的顯示效果與采用現(xiàn)有方法的HTML文檔被客戶端解釋后在瀏覽器窗口上顯示的效果完全相同,本發(fā)明主要是針對不含表單等輸入框的靜態(tài)頁面的解析方法,但靜態(tài)圖片頁面上可以有小視頻,小動畫等動態(tài)圖,根據(jù)動態(tài)圖在靜態(tài)圖片的坐標區(qū)域,將所有動態(tài)圖覆蓋在靜態(tài)圖片上進行動態(tài)顯示,本發(fā)明的方法可有效防止頁面的HTML文檔被客戶端獲取,保護了源代碼,防止了非授權(quán)頁面的二次開發(fā),具有防爬蟲、防病毒、防釣魚網(wǎng)站等功能。
附圖說明
圖1是本發(fā)明一實施例的首次頁面訪問處理流程圖;
圖2是本發(fā)明一實施例的鼠標點擊事件處理流程圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明進一步說明。
在本發(fā)明的核心思想是當瀏覽器輸入網(wǎng)址時,服務器不直接將域名指向的HTML文件轉(zhuǎn)發(fā)給客戶端,而是對該HTML文件進行解析,發(fā)送給客戶端的是解析后的靜態(tài)圖片及其可發(fā)生鼠標點擊事件的坐標區(qū)域集合。
當客戶端通過瀏覽器向服務器發(fā)送頁面訪問請求時,參考圖1的流程圖,具體方法是:
(1)服務器將頁面解析生成初始的靜態(tài)圖片PIC_INIT(jpg格式),提取頁面上可訪問鏈接的坐標區(qū)域集合ListArea及其對應的鏈接地址集合href,靜態(tài)圖片在瀏覽器窗口中的顯示效果與采用現(xiàn)有方法的HTML文檔被客戶端解釋后在瀏覽器窗口上顯示的效果完全相同;
(2)服務器向客戶端發(fā)送包含初始的靜態(tài)圖片PIC_INIT及其坐標區(qū)域集合ListArea的響應消息ResponseMessage(PIC_ INIT,ListArea);
(3)客戶端收到初始的靜態(tài)圖片PIC_INIT及其ListArea后,將PIC_INIT顯示在瀏覽器上;
(4)服務器將靜態(tài)圖片PIC_INIT的副本、坐標區(qū)域集合ListArea及其對應的鏈接地址集合href保存在本次會話單元(Session)存儲路徑下,建立一個存放目錄以區(qū)別之后存儲的不同圖片。
當客戶端請求訪問初始的靜態(tài)圖片PIC_INIT上鼠標點擊位置的鏈接時,參考圖2的流程圖,具體方法是:
(1)客戶端獲取鼠標點擊位置的坐標Location,判斷Location是否包含在該初始靜態(tài)圖片PIC_INIT的坐標區(qū)域集合ListArea中,若不在,則不回應請求;若在,則向服務器發(fā)送包含鼠標點擊位置的頁面訪問請求消息RequestMessage(Location);
(2)服務器按照鼠標點擊位置的坐標Location得到其所在的坐標區(qū)域,然后將該坐標區(qū)域?qū)溄拥刂分赶虻捻撁娼馕錾尚碌拇L問的靜態(tài)圖片PIC_EXE,提取該頁面上可訪問鏈接的坐標區(qū)域集合ListArea’及其對應的鏈接地址集合href’;
(3)服務器將包含待訪問的靜態(tài)圖片PIC_EXE及其坐標區(qū)域集合ListArea’的響應消息ResponseMessage(PIC_EXE,ListArea’)發(fā)送給客戶端;
(4)客戶端收到PIC_EXE及其ListArea’后,將PIC_EXE顯示在瀏覽器上;
(5)服務器將靜態(tài)圖片PIC_EXE的副本、坐標區(qū)域集合ListArea’及其對應的鏈接地址集合href’保存在本次會話單元(Session)存儲路徑下,新建一個存放目錄以區(qū)別之前保存的內(nèi)容。
需要說明的是,當請求訪問的頁面上有gif、flash等動態(tài)圖時,服務器提取頁面上的所有動態(tài)圖的資源地址及其坐標區(qū)域集合并發(fā)送給客戶端,客戶端在顯示靜態(tài)圖片時,根據(jù)每個動態(tài)圖的坐標區(qū)域,將所有動態(tài)圖覆蓋在靜態(tài)圖片相應位置進行動態(tài)顯示。動態(tài)圖的坐標區(qū)域是其左上角的坐標和該坐標區(qū)域的寬度和高度或其他可準確表達其位置的坐標區(qū)域集合(如四個角的坐標)。
另外,當服務器更新解析出新的靜態(tài)圖片、坐標區(qū)域集合及其對應的鏈接地址集合時,可以有以下幾種存儲處理方式:
(1)服務器清除之前存儲的靜態(tài)圖片、坐標區(qū)域集合及其對應的鏈接地址集合,保存本次解析的靜態(tài)圖片、坐標區(qū)域集合及其對應的鏈接地址集合,以最大程度節(jié)省存儲空間;
(2)服務器將本次解析的靜態(tài)圖片、坐標區(qū)域集合及其對應的鏈接地址集合存儲在本次會話單元的存儲路徑下,新建一個存放目錄以區(qū)別之前的存放內(nèi)容,待本次會話結(jié)束(用戶關閉本次訪問的初始靜態(tài)圖片PIC_ INIT及其下所有已訪問過的靜態(tài)圖片PIC_EXE)時,服務器再刪除本次會話單元的所有存儲內(nèi)容,這里的“其下所有已訪問過的靜態(tài)圖片”指的是本次初始靜態(tài)圖片PIC_ INIT所代表頁面中,已訪問過的鏈接對應的靜態(tài)圖片。這樣,在用戶點擊“后退”回到先前訪問的頁面時,服務器能根據(jù)存儲目錄快速調(diào)出解析過的頁面圖片,不必因刪除了之前的內(nèi)容而需重新解析頁面,在節(jié)省存儲空間的同時,提高了本次會話的訪問速度和效率;待用戶關閉本次會話的所有頁面結(jié)束本次會話時,刪除存儲的本次會話所有文件,以節(jié)省存儲空間;
(3)待存儲器存儲滿時,按時間順序優(yōu)先刪除距今較遠時間的存儲內(nèi)容。
下面通過一個具體的例子詳細介紹一下本發(fā)明中服務器對HTML文件的解析過程。
當瀏覽器輸入網(wǎng)址http://tomcat.apache.org/tomcat-9.0-doc/index.html時,服務器不直接將該域名指向的HTML文件轉(zhuǎn)發(fā)給客戶端,而是對該HTML文件進行解析,將該HTML文件記為HTML_1,則服務器對HTML_1解析過程是:
(1)服務器將HTML_1截圖保存為初始的靜態(tài)圖片PIC_INIT,并提取出PIC_INIT上的所有動態(tài)圖和鏈接事件
(1a)服務器將HTML_1進行截圖并保存為初始的靜態(tài)圖片PIC_INIT
此步驟可由帶有解析功能的類完成,如JSP中可以由Robot類的robot.createScreenCapture()完成,ASP.NET中可以由WebBrowser類的WebBrowser.DrawToBitmap()完成。
(1b)提取HTML_1所有的動態(tài)圖
動態(tài)圖是通過判斷src指向文件的格式是否為動態(tài)圖的格式(如gif,mp4,swf等)確定的,判斷語句可以是$(“img[src$=gif], embed[src$=swf]”)。動態(tài)圖的提取內(nèi)容包括:動態(tài)圖的資源地址(src),坐標(x,y)和大?。╳idth,height)。將篩選出的動態(tài)圖保存為animate{(src,x,y,height,width),….}。該步驟可以通過嵌入jquery選擇器完成。
(1c)提取HTML_1的鏈接事件
提取出HTML_1中所有可訪問鏈接所在標簽的坐標區(qū)域集合ListArea(即x’,y’ ,width,height)及其對應的鏈接地址集合(href),保存為鏈接事件的集合lnk{{href1, ListArea1;href2, ListArea2;href3 ListArea3;….},其中,{href1, ListArea1}表示第一個鏈接事件,{href2, ListArea2}表示第二個鏈接事件,{href3, ListArea3}表示第三個鏈接事件,依次類推,多個鏈接事件組成鏈接事件的集合。例如,存在一個鏈接為<a href=“http://123.233.123.86/login.jsp”>,保存鏈接地址href=http://123.233.123.86/login.jsp,鏈接所在標簽的坐標區(qū)域ListArea(即x’,y’,width,height)可以由jquery的offset(),$(obj).width(),$(obj).width()方法獲得。
需要說明,(1)中的(1a)、(1b)、(1c)互不影響可同時進行,(1)完成后,才能進行(2)。
(2)服務器生成一個新的HTML文件HTML_2
(2.1)HTML_2以(1a)中的PIC_INIT作為背景,其實現(xiàn)形式可以為:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
<img src”PIC_INIT”/>
</div>
</body>
</html>
(2.2)服務器將(1b)中保存動態(tài)圖的animate嵌入(2.1)的HTML_2中,嵌入形式可以為:
<div>
<embed src =”src.swf ” style=”position:absolute; left=x; top:y; width:width; height:height”>
<img src =”src.gif ” style=”position:absolute; left=x; top:y; width:width; height:height”>
</div>
(2.3)服務器為(2.1)中的HTML_2添加事件,添加事件的主要內(nèi)容有:①當處于任意一個坐標區(qū)域ListArea(即(x’+width,y’+height))時,鼠標變?yōu)槭值臉幼?;②當鼠標產(chǎn)生點擊動作時,判斷鼠標點擊位置的坐標,如果處于某個坐標區(qū)域ListArea,則向服務器發(fā)送包含當前鼠標點擊位置的頁面訪問請求消息。
需要說明,(2)中的(2.1)、(2.2)、(2.3)是按順序進行的。
經(jīng)過上述過程,服務器解析出的HTML_2中包含初始靜態(tài)圖片PIC_INIT、可訪問鏈接的坐標區(qū)域集合ListArea、動態(tài)圖animate以及(2.3)中添加的事件,服務器將HTML_2作為響應消息ResponseMessage(PIC_INIT,ListArea,animate)發(fā)送給客戶端,客戶端顯示該PIC_ INIT,完成該頁面的訪問。
當客戶端再訪問上述頁面進而產(chǎn)生點擊事件時,客戶端會根據(jù)(2.3)中的準則,判斷鼠標點擊位置Location是否在靜態(tài)圖片的坐標區(qū)域集合ListArea中,如果不在,則不回應請求,否則,向服務器包含鼠標點擊位置Location的頁面訪問請求消息;
服務器收到客戶端發(fā)送的包含鼠標點擊位置Location的消息后,根據(jù)(1c)中的lnk集合,得到該Location所在的坐標區(qū)域ListArea’’,將該坐標區(qū)域ListArea’’對應鏈接地址href’’指向的頁面HTML文件記為HTML_3。
服務器按照(1)中的方法提取HTML_3的所有動態(tài)圖animate’和鏈接事件lnk’,解析生成的HTML_4中包含待訪問的靜態(tài)圖片PIC_EXE、可訪問鏈接的坐標區(qū)域集合ListArea’、動態(tài)圖animate’以及添加的事件(參考(2.3)中添加的事件),服務器將HTML_4作為響應消息ResponseMessage(PIC_EXE,ListArea’,animate’)發(fā)送給客戶端,如果發(fā)送失敗,則繼續(xù)發(fā)送或經(jīng)過設定時間后停止發(fā)送。
客戶端顯示該PIC_EXE。服務器清除HTML_2的(PIC_INIT,lnk,animate),保留HTML_4的(PIC_EXE,lnk’,animate’),以最大程度節(jié)省存儲空間。
本發(fā)明還可以廣泛地用在其他實施例中,并且本發(fā)明的保護范圍并不受實施例的限定,以權(quán)利要求的保護范圍為準。任何熟悉本專業(yè)的技術人員,可以在不偏離本發(fā)明技術思想的范圍內(nèi),進行多樣的變更以及修改,仍屬于本發(fā)明技術方案的保護范圍。