網(wǎng)頁元素屏蔽方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種網(wǎng)頁元素屏蔽方法和裝置。其中,網(wǎng)頁元素屏蔽方法包括:獲取資源請求;獲取資源請求中的第一資源請求,其中,第一資源請求對應(yīng)的資源文件為屏蔽資源;加載資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,第一資源文件為第一資源請求對應(yīng)的資源文件;以及輸出加載后的資源文件以生成網(wǎng)頁。通過本發(fā)明,解決了現(xiàn)有技術(shù)中網(wǎng)頁元素的屏蔽方法容易造成網(wǎng)頁加載速度降低的問題,進而達到了提高網(wǎng)頁加載速度的效果。
【專利說明】網(wǎng)頁元素屏蔽方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種網(wǎng)頁元素屏蔽方法和裝置。
【背景技術(shù)】
[0002]用戶在瀏覽網(wǎng)頁時,大多會遇到一些不想見到的內(nèi)容,如網(wǎng)頁廣告、漂浮的動畫以及一些其他的有害信息(如有害腳本、非法圖片等)。現(xiàn)有瀏覽器的廣告過濾功能,一般只會簡單的對網(wǎng)頁資源的統(tǒng)一資源定位符,也被稱為網(wǎng)頁地址(Uniform/Universal ResourceLocator,簡稱URL)進行屏蔽,或是在資源下載后不進行加載。但在實際應(yīng)用中,采用網(wǎng)頁地址屏蔽的方案使得整個網(wǎng)頁都無法顯示,直接造成非有害信息被屏蔽,采用資源下載后不進行加載的方案雖然解決了非有害信息被屏蔽的弊端,但是在實際應(yīng)用中,資源下載后不進行加載的方案對網(wǎng)頁資源處理時,往往是通過將資源下載到本地后再進行隱藏來實現(xiàn)網(wǎng)頁元素屏蔽,此種方法不僅占用了網(wǎng)絡(luò)流量,造成加載速度降低,而且還存在需要進行隱藏的資源被瀏覽器誤加載的風(fēng)險,無法達到網(wǎng)頁元素屏蔽。此外,按照現(xiàn)有技術(shù)中的屏蔽方法,當(dāng)網(wǎng)頁資源被攔截后,圖像占位符或網(wǎng)頁框架等仍然存在,這就使得處理后的頁面變得支離破碎,十分的不美觀。
[0003]針對相關(guān)技術(shù)中網(wǎng)頁元素的屏蔽方法容易造成網(wǎng)頁加載速度降低的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的主要目的在于提供一種網(wǎng)頁元素屏蔽方法和裝置,以解決現(xiàn)有技術(shù)中網(wǎng)頁元素的屏蔽方法容易造成網(wǎng)頁加載速度降低的問題。
[0005]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了 一種網(wǎng)頁元素屏蔽方法,包括:獲取資源請求;獲取資源請求中的第一資源請求,其中,第一資源請求對應(yīng)的資源文件為屏蔽資源;加載資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,第一資源文件為第一資源請求對應(yīng)的資源文件;以及輸出加載后的資源文件以生成網(wǎng)頁。
[0006]進一步地,對第一資源文件進行屏蔽包括:獲取第一資源文件的類型;判斷獲取到的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件;若判斷出獲取到的類型是第一預(yù)設(shè)類型,則對第一資源請求進行攔截;以及若判斷出獲取到的類型是第二預(yù)設(shè)類型,則獲取第一資源文件的占位符,并以第一預(yù)設(shè)資源文件替換第一資源文件,其中,第一預(yù)設(shè)資源文件的占位符與獲取到的占位符相同。
[0007]進一步地,第一資源請求包括第一資源子請求和第二資源子請求,第一資源子請求對應(yīng)的資源文件為第一資源子文件,第二資源子請求對應(yīng)的資源文件為第二資源子文件,對第一資源文件進行屏蔽包括:分別獲取第一資源子文件和第二資源子文件的類型;判斷獲取到的第一資源子文件的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件;判斷獲取到的第二資源子文件的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型;若判斷出第一資源子文件的類型是第一預(yù)設(shè)類型,并且第二資源子文件的類型是第二預(yù)設(shè)類型,則對第一資源子請求進行攔截,并對第二資源子文件的占位符進行獲取后以第二預(yù)設(shè)資源文件替換第二資源子文件,其中,第二預(yù)設(shè)資源文件的占位符與第二資源子文件的占位符相同;以及若判斷出第二資源子文件的類型是第一預(yù)設(shè)類型,并且第一資源子文件的類型是第二預(yù)設(shè)類型,則對第二資源子請求進行攔截,并對第一資源子文件的占位符進行獲取后以第三預(yù)設(shè)資源文件替換第一資源子文件,其中,第三預(yù)設(shè)資源文件的占位符與第一資源子文件的占位符相同。
[0008]進一步地,獲取第一資源文件的類型包括:獲取產(chǎn)生第一資源請求的內(nèi)核類型;判斷獲取到的內(nèi)核類型是Trident內(nèi)核還是Webkit內(nèi)核;若判斷出獲取到的內(nèi)核類型為Trident內(nèi)核,則獲取第一資源請求的地址信息并根據(jù)地址信息獲取第一資源文件的類型;以及若判斷出獲取到的內(nèi)核類型為Webkit內(nèi)核,則直接獲取第一資源文件的類型。
[0009]進一步地,根據(jù)地址信息獲取第一資源文件的類型包括:獲取地址信息的擴展名信息;以及對擴展名信息進行分類以得到第一資源文件的類型。
[0010]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種網(wǎng)頁元素屏蔽裝置,該網(wǎng)頁元素屏蔽裝置用于執(zhí)行上述本發(fā)明提供的任意一種網(wǎng)頁元素屏蔽方法。
[0011]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種網(wǎng)頁元素屏蔽裝置,包括:第一獲取單元,用于獲取資源請求;第二獲取單元,用于獲取資源請求中的第一資源請求,其中,第一資源請求對應(yīng)的資源文件為屏蔽資源;處理單元,用于加載資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,第一資源文件為第一資源請求對應(yīng)的資源文件;以及輸出單元,用于輸出加載后的資源文件以生成網(wǎng)頁。
[0012]進一步地,處理單元包括:獲取子單元,用于獲取第一資源文件的類型;判斷子單元,用于判斷獲取到的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件;攔截子單元,用于在判斷子單元判斷出獲取到的類型是第一預(yù)設(shè)類型時,對第一資源請求進行攔截;以及替換子單元,用于在判斷子單元判斷出獲取到的類型是第二預(yù)設(shè)類型時,獲取第一資源文件的占位符,并以第一預(yù)設(shè)資源文件替換第一資源文件,其中,第一預(yù)設(shè)資源文件的占位符與獲取到的占位符相同。
[0013]進一步地,第一資源請求包括第一資源子請求和第二資源子請求,第一資源子請求對應(yīng)的資源文件為第一資源子文件,第二資源子請求對應(yīng)的資源文件為第二資源子文件,處理單元包括:獲取子單元,用于分別獲取第一資源子文件和第二資源子文件的類型;第一判斷子單元,用于判斷獲取到的第一資源子文件的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件;第二判斷子單元,用于判斷獲取到的第二資源子文件的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型;第一處理子單元,用于在第一判斷子單元判斷出第一資源子文件的類型是第一預(yù)設(shè)類型,并且第二判斷子單元判斷出第二資源子文件的類型是第二預(yù)設(shè)類型時,對第一資源子請求進行攔截,并對第二資源子文件的占位符進行獲取后以第二預(yù)設(shè)資源文件替換第二資源子文件,其中,第二預(yù)設(shè)資源文件的占位符與第二資源子文件的占位符相同;以及第二處理子單元,用于在第二判斷子單元判斷出第二資源子文件的類型是第一預(yù)設(shè)類型,并且第一判斷子單元判斷出第一資源子文件的類型是第二預(yù)設(shè)類型時,對第二資源子請求進行攔截,并對第一資源子文件的占位符進行獲取后以第三預(yù)設(shè)資源文件替換第一資源子文件,其中,第三預(yù)設(shè)資源文件的占位符與第一資源子文件的占位符相同。
[0014]進一步地,獲取子單元包括:第一獲取模塊,用于獲取產(chǎn)生第一資源請求的內(nèi)核類型;判斷模塊,用于判斷獲取到的內(nèi)核類型是Trident內(nèi)核還是Webkit內(nèi)核;第二獲取模塊,用于在判斷模塊判斷出獲取到的內(nèi)核類型為Trident內(nèi)核時,獲取第一資源請求的地址信息并根據(jù)地址信息獲取第一資源文件的類型;以及第三獲取模塊,用于在判斷模塊判斷出獲取到的內(nèi)核類型為Webkit內(nèi)核時,直接獲取第一資源文件的類型。
[0015]進一步地,第二獲取模塊包括:獲取子模塊,用于獲取地址信息的擴展名信息;以及分類子模塊,用于對擴展名信息進行分類以得到第一資源文件的類型。
[0016]通過本發(fā)明,采用獲取資源請求;獲取資源請求中的第一資源請求,其中,第一資源請求對應(yīng)的資源文件為屏蔽資源;加載資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,第一資源文件為第一資源請求對應(yīng)的資源文件;以及輸出加載后的資源文件以生成網(wǎng)頁。通過在對資源請求所對應(yīng)的資源文件進行加載之前對資源請求進行處理,以確定出需要屏蔽的資源所對應(yīng)的資源請求,進而在加載資源文件中屏蔽掉需要屏蔽的資源文件,實現(xiàn)了在加載資源前即對資源請求進行處理,以避免瀏覽器下載任何不必要的資源,解決了現(xiàn)有技術(shù)中網(wǎng)頁元素的屏蔽方法容易造成網(wǎng)頁加載速度降低的問題,進而達到了提高網(wǎng)頁加載速度的效果。
【專利附圖】
【附圖說明】
[0017]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0018]圖1是根據(jù)本發(fā)明實施例的網(wǎng)頁元素屏蔽方法的流程圖;
[0019]圖2是根據(jù)本發(fā)明實施例的屏蔽方法進行資源類型確定的流程圖;
[0020]圖3是根據(jù)本發(fā)明實施例的屏蔽方法對不同類型的資源文件進行屏蔽的流程圖;
[0021]圖4是根據(jù)本發(fā)明實施例的屏蔽方法進行網(wǎng)頁元素加載輸出的流程圖;以及
[0022]圖5是根據(jù)本發(fā)明實施例的網(wǎng)頁元素屏蔽裝置的示意圖。
【具體實施方式】
[0023]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。
[0024]本發(fā)明實施例提供了一種網(wǎng)頁元素屏蔽方法,以下對本發(fā)明實施例所提供的網(wǎng)頁元素屏蔽方法進行具體介紹:
[0025]圖1是根據(jù)本發(fā)明實施例所提供的網(wǎng)頁元素屏蔽方法的流程圖,如圖1所示,該實施例的網(wǎng)頁元素屏蔽方法包括如下步驟S102至步驟S108:
[0026]S102:獲取資源請求,具體地,當(dāng)用戶通過瀏覽器打開網(wǎng)頁時,瀏覽器首先會產(chǎn)生資源請求,之后再通過對資源請求進行響應(yīng)來得到與資源請求相對應(yīng)的資源文件。
[0027]S104:獲取資源請求中的第一資源請求,其中,第一資源請求對應(yīng)的資源文件為屏蔽資源,具體地,對第一資源請求的獲取既可以根據(jù)實際需要進行自定義設(shè)定,也可以采用現(xiàn)有技術(shù)中任意一種篩選資源請求的方法,最終達到篩選出需要屏蔽的資源文件的資源請求,此處對需要屏蔽的資源文件的資源請求采用“第一資源請求”這樣的描述語言,只是為了將需要屏蔽的資源文件的資源請求與不需屏蔽的資源文件的資源請求進行區(qū)分,并非是對資源請求的次序做限定。
[0028]S106:加載資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,第一資源文件為第一資源請求對應(yīng)的資源文件,即,在步驟S104完成對資源請求的處理之后,再進行相關(guān)資源文件的加載。
[0029]S108:輸出加載后的資源文件以生成網(wǎng)頁,具體地,瀏覽器在對第一資源文件進行屏蔽后輸出加載后的資源文件至瀏覽器前端,其中,所謂的資源文件是指網(wǎng)頁中包含且顯示需要加載的文件,當(dāng)資源文件被瀏覽器加載并在網(wǎng)頁中進行顯示后,就稱其為網(wǎng)頁元素,即,資源文件和網(wǎng)頁元素是對同一實質(zhì)相同的對象在不同時期的稱呼,這一對象在被瀏覽器加載前稱作資源文件,在被瀏覽器加載后稱作網(wǎng)頁元素。
[0030]本發(fā)明實施例所提供的網(wǎng)頁元素屏蔽方法通過在對資源請求所對應(yīng)的資源文件進行加載之前對資源請求進行處理,以確定出需要屏蔽的資源所對應(yīng)的資源請求,進而在加載資源文件中屏蔽掉需要屏蔽的資源文件,實現(xiàn)了在加載資源前即對資源請求進行處理,以避免瀏覽器下載任何不必要的資源,解決了現(xiàn)有技術(shù)中網(wǎng)頁元素的屏蔽方法容易造成網(wǎng)頁加載速度降低的問題,進而達到了提高網(wǎng)頁加載速度的效果。
[0031]進一步地,步驟S106中在對第一資源文件進行屏蔽時,對于不同類型的資源文件,具體屏蔽方法不相同,具體地,可以通過以下方式實現(xiàn)對第一資源文件的屏蔽:
[0032]首先,對第一資源文件的類型進行獲取,具體地,當(dāng)用戶通過不同內(nèi)核的瀏覽器加載網(wǎng)頁時,會通過瀏覽器的內(nèi)核產(chǎn)生資源請求,而對于不同內(nèi)核瀏覽器所對應(yīng)的資源請求的資源文件類型的獲取方法不同,此時,可以先對產(chǎn)生資源請求的內(nèi)核類型進行獲取并判斷產(chǎn)生資源請求的內(nèi)核類型是Webkit內(nèi)核還是Trident內(nèi)核,所謂Trident內(nèi)核就是IE瀏覽器所使用的內(nèi)核,也是很多瀏覽器所使用的內(nèi)核,通常被稱為IE內(nèi)核。Trident內(nèi)核的常見瀏覽器有:IE6、IE7、IE8 (Trident 4.0)、IE9 (Trident 5.0)、IElO (Trident 6.0);世界之窗、360安全瀏覽器、傲游;搜狗瀏覽器;騰訊TT ;阿云瀏覽器(早期版本)、百度瀏覽器(早期版本)、瑞星安全瀏覽器等;所謂WebKit內(nèi)核是一個開源的瀏覽器引擎,是目前最火熱的瀏覽器內(nèi)核,常見的WebKit內(nèi)核的瀏覽器有:Apple Safari (Win/Mac/iPhone/iPad)、Symbian手機瀏覽器、Android默認(rèn)瀏覽器,獵豹瀏覽器是一款同時具備Trident內(nèi)核和WebKit內(nèi)核的雙核瀏覽器。對于瀏覽器內(nèi)核為Webkit內(nèi)核的情況,瀏覽器通過Webkit內(nèi)核加載網(wǎng)頁產(chǎn)生資源請求時,會在封裝層做出修改,使其在請求資源時通過ResourceDispatcherHostlmpl:: OnRequestResource^ResourceDispatcherHostImpl::BeginRequest 等函數(shù)回調(diào)給處理函數(shù),由于Webkit內(nèi)核在內(nèi)部預(yù)定義了 ResourceType,所以對于Webkit內(nèi)核瀏覽器所產(chǎn)生的資源請求對應(yīng)的資源類型可以直接獲取得到;而對于瀏覽器內(nèi)核為Trident內(nèi)核的情況,對該 瀏覽器內(nèi)核所產(chǎn)生的資源請求對應(yīng)的資源類型的獲取,可以通過程序注冊“異步可插協(xié)議”(Asynchronous Pluggable Protocol),使該內(nèi)核請求的所有資源經(jīng)由COInetProt:: StartEx>CInternetProtocoIFiIter:: Start 等函數(shù)回調(diào)給程序,以此獲得所有資源請求的地址信息,并通過對該地址信息的擴展名信息進行分類得到資源文件的類型(包括圖像資源、網(wǎng)頁資源、樣式表資源、腳本資源和嵌入對象資源等),其中,對于Webkit內(nèi)核瀏覽器和Trident內(nèi)核瀏覽器所生成資源請求的資源類型的獲取流程在圖2中示出。
[0033]其次,將獲取到的第一資源文件的類型與兩個預(yù)設(shè)的類型進行對比以確定出第一資源文件的類型具體是哪個類型,這兩個預(yù)設(shè)的類型為第一預(yù)設(shè)類型和第二預(yù)設(shè)類型,其中,第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁中進行顯示時為不可見的資源文件,第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁中進行顯示時為可見的資源文件;
[0034]最后,根據(jù)上述的對比結(jié)果來對第一資源文件進行具體處理,其中,如果對比確定出第一資源文件的類型與第一預(yù)設(shè)類型相同,則直接對第一資源請求進行攔截;如果對比確定出第一資源文件的類型與第二預(yù)設(shè)類型相同,此時則對第一資源請求對應(yīng)的第一資源文件的占位符進行獲取,然后從預(yù)設(shè)數(shù)據(jù)庫中調(diào)用一個預(yù)設(shè)資源文件來替換第一資源文件,所調(diào)用的預(yù)設(shè)資源文件滿足的條件是,這個調(diào)用的預(yù)設(shè)資源文件的占位符與第一資源文件的占位符相同。
[0035]需要說明的是,當(dāng)?shù)谝毁Y源文件包括多個資源子文件時,則同樣采用上述方式對各個子文件的類型進行對比,然后將類型與第一預(yù)設(shè)類型相同的資源子文件的資源請求進行攔截,將類型與第二預(yù)設(shè)類型相同的資源子文件采用相同占位符的預(yù)設(shè)文件進行替換。其中,對第一資源文件的屏蔽(攔截和/或替換)的流程在圖3中示出。對于攔截和/或替換后的資源文件(即,需要屏蔽的資源文件)在步驟S108進行加載后的資源文件輸出時,按照圖4所示的流程進行屏蔽資源的輸出,具體地,如圖4所示,在進行加載后的資源文件輸出時,會生成對應(yīng)攔截和/或替換后的資源文件屬性的層疊樣式表屬性選擇器(CSSSelector),并將選擇到的元素設(shè)置{display:none! important;}隱藏屬性,生成完整的樣式規(guī)則,此段樣式規(guī)則將被動態(tài)拼接至JavaScript代碼中,以便注入網(wǎng)頁HTML代碼頭部,當(dāng)頁面完成加載時,JavaScript代碼會被自動執(zhí)行,完成攔截和/或替換的網(wǎng)頁元素的隱藏。
[0036]通過對需屏蔽資源文件的類型進行對比,以準(zhǔn)確確定出需屏蔽資源文件中的可見資源文件和非可見資源文件,進而針對不同類型的資源文件采用不同的處理手段進行處理,通過對需屏蔽資源文件中非可見類型的資源文件的資源請求進行攔截,避免了下載任何不必要的資源,進而達到了避免占用網(wǎng)絡(luò)流量所造成的加載速度降低的弊端;通過對需屏蔽資源文件中可見類型的資源文件以相同占位符的預(yù)設(shè)資源文件進行替換,避免資源文件被攔截后因圖像占位符或網(wǎng)頁框架被屏蔽所造成的網(wǎng)頁空白顯示,進而達到了提升網(wǎng)頁美觀度。
[0037]本發(fā)明實施例還提供了一種網(wǎng)頁元素屏蔽裝置,該網(wǎng)頁元素屏蔽裝置可以用以執(zhí)行本發(fā)明實施例上述內(nèi)容所提供的網(wǎng)頁元素屏蔽方法,以下對本發(fā)明實施例所提供的網(wǎng)頁元素屏蔽裝置進行具體介紹:
[0038]圖5是根據(jù)本發(fā)明實施例的網(wǎng)頁元素屏蔽裝置的示意圖,如圖5所示,該實施例的網(wǎng)頁元素屏蔽裝置包括第一獲取單元10、第二獲取單元20、處理單元30和輸出單元40。
[0039]具體地,第一獲取單元10用于獲取來自瀏覽器內(nèi)核發(fā)出的資源請求;
[0040]第二獲取單元20用于獲取資源請求中的第一資源請求,其中,第一資源請求對應(yīng)的資源文件為屏蔽資源,具體地,第二獲取單元20可以是一個對資源請求進行篩選判斷的單元,其具體實現(xiàn)原理既可以根據(jù)實際需要進行自定義設(shè)定,也可以是應(yīng)用現(xiàn)有技術(shù)中任意一種篩選資源請求方法的單元,最終達到篩選出需要屏蔽的資源文件的資源請求。
[0041]處理單元30用于加載資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,第一資源文件為第一資源請求對應(yīng)的資源文件,即,處理單元30在第二獲取單元20完成對資源請求的處理之后再進行相關(guān)資源文件的加載。
[0042]輸出單元40用于輸出加載后的資源文件以生成網(wǎng)頁,具體地,瀏覽器在對第一資源文件進行屏蔽后輸出加載后的資源文件至瀏覽器前端,其中,所謂的資源文件是指網(wǎng)頁中包含且顯示需要加載的文件,當(dāng)資源文件被瀏覽器加載并在網(wǎng)頁中進行顯示后,就稱其為網(wǎng)頁元素,即,資源文件和網(wǎng)頁元素是對同一實質(zhì)相同的對象在不同時期的稱呼,這一對象在被瀏覽器加載前稱作資源文件,在被瀏覽器加載后稱作網(wǎng)頁元素。
[0043]本發(fā)明實施例所提供的網(wǎng)頁元素屏蔽裝置通過在對資源請求所對應(yīng)的資源文件進行加載之前對資源請求進行處理,以確定出需要屏蔽的資源所對應(yīng)的資源請求,進而在加載資源文件中屏蔽掉需要屏蔽的資源文件,實現(xiàn)了在加載資源前即對資源請求進行處理,以避免瀏覽器下載任何不必要的資源,解決了現(xiàn)有技術(shù)中網(wǎng)頁元素的屏蔽方法容易造成網(wǎng)頁加載速度降低的問題,進而達到了提高網(wǎng)頁加載速度的效果。
[0044]進一步地,處理單元30在對第一資源文件進行屏蔽時,對于不同類型的資源文件,具體屏蔽方法不相同,具體地,可以通過以下各子單元實現(xiàn)對第一資源文件的屏蔽:
[0045]首先,由 獲取子單元對第一資源文件的類型進行獲取,具體地,當(dāng)用戶通過不同內(nèi)核的瀏覽器加載網(wǎng)頁時,會通過瀏覽器的內(nèi)核產(chǎn)生資源請求,而對于不同內(nèi)核瀏覽器所對應(yīng)的資源請求的資源文件類型的獲取方法不同,此時,可以先由一個獲取模塊對產(chǎn)生資源請求的內(nèi)核類型進行獲取,然后由判斷模塊判斷產(chǎn)生資源請求的內(nèi)核類型是Webkit內(nèi)核還是Trident內(nèi)核,對于瀏覽器內(nèi)核為Webkit內(nèi)核的情況,瀏覽器通過Webkit內(nèi)核加載網(wǎng)頁產(chǎn)生資源請求時,會在封裝層做出修改,使其在請求資源時通過ResourceDispatcherHostlmpl:: OnRequestResource^ResourceDispatcherHostImpl::BeginRequest 等函數(shù)回調(diào)給處理函數(shù),由于Webkit內(nèi)核在內(nèi)部預(yù)定義了 ResourceType,所以對于Webkit內(nèi)核瀏覽器所產(chǎn)生的資源請求對應(yīng)的資源類型可以由一個獲取模塊直接獲取得到;而對于瀏覽器內(nèi)核為Trident內(nèi)核的情況,對該瀏覽器內(nèi)核所產(chǎn)生的資源請求對應(yīng)的資源類型的獲取,可以通過程序注冊“異步可插協(xié)議”(Asynchronous Pluggable Protocol),使該內(nèi)核請求的所有資源經(jīng)由 COInetProt::StartEx> ClnternetProtocolFiIter::Start 等函數(shù)回調(diào)給程序,以此實現(xiàn)由獲取模塊獲得所有資源請求的地址信息,并通過對該地址信息的擴展名信息進行分類得到資源文件的類型(包括圖像資源、網(wǎng)頁資源、樣式表資源、腳本資源和嵌入對象資源等)。
[0046]其次,由判斷子單元將獲取到的第一資源文件的類型與兩個預(yù)設(shè)的類型進行對比判斷以確定出第一資源文件的類型具體是哪個類型,這兩個預(yù)設(shè)的類型為第一預(yù)設(shè)類型和第二預(yù)設(shè)類型,其中,第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁中進行顯示時為不可見的資源文件,第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁中進行顯示時為可見的資源文件;
[0047]最后,根據(jù)上述的對比結(jié)果來對第一資源文件進行具體處理,其中,如果對比確定出第一資源文件的類型與第一預(yù)設(shè)類型相同,則由攔截子單元直接對第一資源請求進行攔截;如果對比確定出第一資源文件的類型與第二預(yù)設(shè)類型相同,此時則由替換子單元對第一資源請求對應(yīng)的第一資源文件的占位符進行獲取,然后從預(yù)設(shè)數(shù)據(jù)庫中調(diào)用一個預(yù)設(shè)資源文件來替換第一資源文件,所調(diào)用的預(yù)設(shè)資源文件滿足的條件是,這個調(diào)用的預(yù)設(shè)資源文件的占位符與第一資源文件的占位符相同。
[0048]需要說明的是,當(dāng)?shù)谝毁Y源文件包括多個資源子文件時,則同樣采用上述方式對各個子文件的類型進行獲取后與預(yù)設(shè)類型進行對比,然后將類型與第一預(yù)設(shè)類型相同的資源子文件的資源請求進行攔截,將類型與第二預(yù)設(shè)類型相同的資源子文件采用相同占位符的預(yù)設(shè)文件進行替換。對于攔截和/或替換后的資源文件(即,需要屏蔽的資源文件)在加載后的資源文件輸出時,會生成對應(yīng)攔截和/或替換后的資源文件屬性的層疊樣式表屬性選擇器(CSS Selector),并將選擇到的元素設(shè)置{display:none! important;}隱藏屬性,生成完整的樣式規(guī)則,此段樣式規(guī)則將被動態(tài)拼接至JavaScript代碼中,以便注入網(wǎng)頁HTML代碼頭部,當(dāng)頁面完成加載時,JavaScript代碼會被自動執(zhí)行,完成攔截和/或替換的網(wǎng)頁元素的隱藏。
[0049]通過對需屏蔽資源文件的類型進行對比,以準(zhǔn)確確定出需屏蔽資源文件中的可見資源文件和非可見資源文件,進而針對不同類型的資源文件采用不同的處理手段進行處理,通過對需屏蔽資源文件中非可見類型的資源文件的資源請求進行攔截,避免了下載任何不必要的資源,進而達到了避免占用網(wǎng)絡(luò)流量所造成的加載速度降低的弊端;通過對需屏蔽資源文件中可見類型的資源文件以相同占位符的預(yù)設(shè)資源文件進行替換,避免資源文件被攔截后因圖像占位符或網(wǎng)頁框架被屏蔽所造成的網(wǎng)頁空白顯示,進而達到了提升網(wǎng)頁美觀度。
[0050]從以上的描述中,可以看出,本發(fā)明實現(xiàn)了在瀏覽器內(nèi)核加載資源前即捕獲請求并進行處理,以避免下載任何不必要的資源,達到了提升加載速度的效果,同時通過按照被屏蔽元素在網(wǎng)頁中的占位符進行屏蔽元素的替換,避免了因元素被屏蔽所造成的網(wǎng)頁空白顯示的錯誤,達到了提 升網(wǎng)頁美觀度的效果。
[0051]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0052]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0053]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種網(wǎng)頁元素屏蔽方法,其特征在于,包括: 獲取資源請求; 獲取所述資源請求中的第一資源請求,其中,所述第一資源請求對應(yīng)的資源文件為屏蔽資源; 加載所述資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,所述第一資源文件為所述第一資源請求對應(yīng)的資源文件;以及輸出加載后的資源文件以生成網(wǎng)頁。
2.根據(jù)權(quán)利要求1所述的網(wǎng)頁元素屏蔽方法,其特征在于,對所述第一資源文件進行屏蔽包括: 獲取所述第一資源文件的類型; 判斷獲取到的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,所述第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,所述第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件; 若判斷出獲取到的類型是所述第一預(yù)設(shè)類型,則對所述第一資源請求進行攔截;以及若判斷出獲取到的類型是所述第二預(yù)設(shè)類型,則獲取所述第一資源文件的占位符,并以第一預(yù)設(shè)資源文件替換所述第一資源文件,其中,所述第一預(yù)設(shè)資源文件的占位符與獲取到的占位符相同。
3.根據(jù)權(quán)利要求1所述的網(wǎng)頁元素屏蔽方法,其特征在于,所述第一資源請求包括第一資源子請求和第二資源子請求,所述第一資源子請求對應(yīng)的資源文件為第一資源子文件,所述第二資源子請求對應(yīng)的資源文件為第二資源子文件,對所述第一資源文件進行屏蔽包括: 分別獲取所述第一資源子文件和所述第二資源子文件的類型; 判斷獲取到的所述第一資源子文件的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,所述第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,所述第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件; 判斷獲取到的所述第二資源子文件的類型是所述第一預(yù)設(shè)類型還是所述第二預(yù)設(shè)類型; 若判斷出所述第一資源子文件的類型是所述第一預(yù)設(shè)類型,并且所述第二資源子文件的類型是所述第二預(yù)設(shè)類型,則對所述第一資源子請求進行攔截,并對所述第二資源子文件的占位符進行獲取后以第二預(yù)設(shè)資源文件替換所述第二資源子文件,其中,所述第二預(yù)設(shè)資源文件的占位符與所述第二資源子文件的占位符相同;以及 若判斷出所述第二資源子文件的類型是所述第一預(yù)設(shè)類型,并且所述第一資源子文件的類型是所述第二預(yù)設(shè)類型,則對所述第二資源子請求進行攔截,并對所述第一資源子文件的占位符進行獲取后以第三預(yù)設(shè)資源文件替換所述第一資源子文件,其中,所述第三預(yù)設(shè)資源文件的占位符與所述第一資源子文件的占位符相同。
4.根據(jù)權(quán)利要求2所述的網(wǎng)頁元素屏蔽方法,其特征在于,獲取所述第一資源文件的類型包括: 獲取產(chǎn)生所述第一資源請求的內(nèi)核類型; 判斷獲取到的內(nèi)核類型是Trident內(nèi)核還是Webkit內(nèi)核;若判斷出獲取到的內(nèi)核類型為所述Trident內(nèi)核,則獲取所述第一資源請求的地址信息并根據(jù)所述地址信息獲取所述第一資源文件的類型;以及 若判斷出獲取到的內(nèi)核類型為所述Webkit內(nèi)核,則直接獲取所述第一資源文件的類型。
5.根據(jù)權(quán)利要求4所述的網(wǎng)頁元素屏蔽方法,其特征在于,根據(jù)所述地址信息獲取所述第一資源文件的類型包括: 獲取所述地址信息的擴展名信息;以及 對所述擴展名信息進行分類以得到所述第一資源文件的類型。
6.一種網(wǎng)頁元素屏蔽裝置,其特征在于,包括: 第一獲取單元,用于獲取資源請求; 第二獲取單元,用于獲取所述資源請求中的第一資源請求,其中,所述第一資源請求對應(yīng)的資源文件為屏蔽資源; 處理單元,用于加載所述資源請求對應(yīng)的資源文件并對第一資源文件進行屏蔽,其中,所述第一資源文件為所述第一資源請求對應(yīng)的資源文件;以及輸出單元,用于輸出加載后的資源文件以生成網(wǎng)頁。
7.根據(jù)權(quán)利要求6所述的網(wǎng)頁元素屏蔽裝置,其特征在于,所述處理單元包括: 獲取子單元,用于獲取所述第一資源文件的類型; 判斷子單元,用于判斷獲取到的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,所述第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,所述第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件; 攔截子單元,用于在所述判斷子單元判斷出獲取到的類型是所述第一預(yù)設(shè)類型時,對所述第一資源請求進行攔截;以及 替換子單元,用于在所述判斷子單元判斷出獲取到的類型是所述第二預(yù)設(shè)類型時,獲取所述第一資源文件的占位符,并以第一預(yù)設(shè)資源文件替換所述第一資源文件,其中,所述第一預(yù)設(shè)資源文件的占位符與獲取到的占位符相同。
8.根據(jù)權(quán)利要求6所述的網(wǎng)頁元素屏蔽裝置,其特征在于,所述第一資源請求包括第一資源子請求和第二資源子請求,所述第一資源子請求對應(yīng)的資源文件為第一資源子文件,所述第二資源子請求對應(yīng)的資源文件為第二資源子文件,所述處理單元包括: 獲取子單元,用于分別獲取所述第一資源子文件和所述第二資源子文件的類型; 第一判斷子單元,用于判斷獲取到的所述第一資源子文件的類型是第一預(yù)設(shè)類型還是第二預(yù)設(shè)類型,其中,所述第一預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為非可見資源文件,所述第二預(yù)設(shè)類型表示的資源文件在網(wǎng)頁顯示中為可見資源文件; 第二判斷子單元,用于判斷獲取到的所述第二資源子文件的類型是所述第一預(yù)設(shè)類型還是所述第二預(yù)設(shè)類型; 第一處理子單元,用于在所述第一判斷子單元判斷出所述第一資源子文件的類型是所述第一預(yù)設(shè)類型,并且所述第二判斷子單元判斷出所述第二資源子文件的類型是所述第二預(yù)設(shè)類型時,對所述第一資源子請求進行攔截,并對所述第二資源子文件的占位符進行獲取后以第二預(yù)設(shè)資源文 件替換所述第二資源子文件,其中,所述第二預(yù)設(shè)資源文件的占位符與所述第二資源子文件的占位符相同;以及第二處理子單元,用于在所述第二判斷子單元判斷出所述第二資源子文件的類型是所述第一預(yù)設(shè)類型,并且所述第一判斷子單元判斷出所述第一資源子文件的類型是所述第二預(yù)設(shè)類型時,對所述第二資源子請求進行攔截,并對所述第一資源子文件的占位符進行獲取后以第三預(yù)設(shè)資源文件替換所述第一資源子文件,其中,所述第三預(yù)設(shè)資源文件的占位符與所述第一資源子文件的占位符相同。
9.根據(jù)權(quán)利要求7所述的網(wǎng)頁元素屏蔽裝置,其特征在于,所述獲取子單元包括: 第一獲取模塊,用于獲取產(chǎn)生所述第一資源請求的內(nèi)核類型; 判斷模塊,用于判斷獲取到的內(nèi)核類型是Trident內(nèi)核還是Webkit內(nèi)核; 第二獲取模塊,用于在所述判斷模塊判斷出獲取到的內(nèi)核類型為所述Trident內(nèi)核時,獲取所述第一資源請求的地址信息并根據(jù)所述地址信息獲取所述第一資源文件的類型;以及 第三獲取模塊,用于在所述判斷模塊判斷出獲取到的內(nèi)核類型為所述Webkit內(nèi)核時,直接獲取所述第一資源文件的類型。
10.根據(jù)權(quán)利要求9所述的網(wǎng)頁元素屏蔽裝置,其特征在于,所述第二獲取模塊包括: 獲取子模塊,用于獲取所述地址信息的擴展名信息;以及 分類子模塊, 用于對所述擴展名信息進行分類以得到所述第一資源文件的類型。
【文檔編號】G06F17/30GK103810193SQ201210446096
【公開日】2014年5月21日 申請日期:2012年11月8日 優(yōu)先權(quán)日:2012年11月8日
【發(fā)明者】楊振輝, 丁川達, 張?zhí)煲? 徐鳴, 張志和 申請人:北京金山安全軟件有限公司, 北京金山網(wǎng)絡(luò)科技有限公司, 貝殼網(wǎng)際(北京)安全技術(shù)有限公司, 可牛網(wǎng)絡(luò)技術(shù)(北京)有限公司