一種網(wǎng)址重定向的檢測裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)址重定向技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)址重定向的檢測裝置及方法。
【背景技術(shù)】
[0002]網(wǎng)址重定向,俗稱網(wǎng)址跳轉(zhuǎn),是指當(dāng)用戶輸入網(wǎng)址A進行訪問時,瀏覽器會自動跳轉(zhuǎn)到網(wǎng)址B,向用戶展示網(wǎng)址B的內(nèi)容。
[0003]準確識別網(wǎng)址跳轉(zhuǎn),建立全面的網(wǎng)址跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫,對于自動網(wǎng)站分類、索引、網(wǎng)站安全性檢測等方面具有重要意義。例如,在檢測網(wǎng)站是否安全時,通常需要下載網(wǎng)站的HTML文件做分析,惡意網(wǎng)站可能通過在HTML中嵌入跳轉(zhuǎn)代碼,使得基于當(dāng)前HTML內(nèi)容的檢測無法探測到任何惡意內(nèi)容;又如,搜索引擎在索引網(wǎng)站時,如果不能正確探測頁面存在的跳轉(zhuǎn),也可能將用戶錯誤地引導(dǎo)至不安全的網(wǎng)站。比如釣魚網(wǎng)站制作者在頁面HTML中包含大量常見的搜索關(guān)鍵詞,但是頁面中嵌入了導(dǎo)致跳轉(zhuǎn)至真正釣魚網(wǎng)站的Javascript代碼(簡稱JS代碼),如果搜索引擎不能識別此類跳轉(zhuǎn),很可能在搜索結(jié)果中出現(xiàn)這些跳轉(zhuǎn)網(wǎng)站而誤導(dǎo)用戶。
[0004]目前,實現(xiàn)網(wǎng)址跳轉(zhuǎn)通常有兩類方法:
[0005]一是通過HTTP頭返回的狀態(tài)碼指定,例如301跳轉(zhuǎn),302跳轉(zhuǎn)等狀態(tài)碼實現(xiàn)跳轉(zhuǎn)。
[0006]二是通過HTML內(nèi)容實現(xiàn)。比如meta標簽指定:
[0007]〈meta http-equiv=//Refresh//content=//0; url=http: //www.example, com/^/);
[0008]或者執(zhí)行JS代碼實現(xiàn)跳轉(zhuǎn):
[0009]window.locat1n=//http://example, com"。
[0010]對于第一類網(wǎng)址跳轉(zhuǎn),通常容易識別,只需要獲取并分析HTTP頭即可;對于第二類網(wǎng)址跳轉(zhuǎn),可以通過對HTML內(nèi)容做靜態(tài)分析,從而解析出跳轉(zhuǎn)目的URL的字符串,但是,這種靜態(tài)分析方式很容易被惡意網(wǎng)站制作者通過字符串的拼接、加密等手段繞過。
【發(fā)明內(nèi)容】
[0011]本發(fā)明提供了一種網(wǎng)址重定向的檢測裝置,能夠檢測出通過HTML內(nèi)容實現(xiàn)的網(wǎng)址重定向。
[0012]本發(fā)明還提供了一種網(wǎng)址重定向的檢測方法,能夠檢測出通過HTML內(nèi)容實現(xiàn)的網(wǎng)址重定向。
[0013]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0014]一種網(wǎng)址重定向的檢測裝置,包括:
[0015]瀏覽器插件模塊,所述瀏覽器插件模塊以插件的形式設(shè)置在網(wǎng)頁瀏覽器中,用于在所述網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在執(zhí)行所述當(dāng)前頁面內(nèi)容之前,獲取當(dāng)前頁面地址、當(dāng)前頁面的引用頁面地址以及當(dāng)前頁面的父頁面地址,判斷獲取的內(nèi)容是否同時滿足如下2個條件:
[0016]條件1:當(dāng)前頁面的引用頁面地址非空;
[0017]條件2:當(dāng)前頁面地址等于當(dāng)前頁面的父頁面地址;
[0018]如果是,則判定所述當(dāng)前頁面的引用頁面地址向當(dāng)前頁面地址存在跳轉(zhuǎn)關(guān)系,將所述跳轉(zhuǎn)關(guān)系發(fā)送至跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫;
[0019]跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫,用于接收并保存所述跳轉(zhuǎn)關(guān)系。
[0020]上述裝置中,網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在執(zhí)行所述當(dāng)前頁面內(nèi)容之前具體可以為:所述網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在所述當(dāng)前頁面的文件對象模型(DOM)樹建立之前。
[0021]上述裝置還可以包括HTTP頭跳轉(zhuǎn)檢測模塊,用于抓取給定頁面返回的HTTP頭,根據(jù)所述HTTP頭中的狀態(tài)碼判斷是否存在跳轉(zhuǎn),如果是,則獲取所述HTTP頭中的跳轉(zhuǎn)地址,得到所述給定頁面的地址向所述跳轉(zhuǎn)地址的跳轉(zhuǎn)關(guān)系,將所述跳轉(zhuǎn)關(guān)系發(fā)送至跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫;
[0022]所述跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫用于接收并保存所述跳轉(zhuǎn)關(guān)系,還用于根據(jù)自身保存的跳轉(zhuǎn)關(guān)系建立包括多個頁面地址的跳轉(zhuǎn)關(guān)系鏈條。
[0023]上述裝置還可以包括:頁面地址發(fā)送模塊,用于將頁面地址發(fā)送至HTTP頭跳轉(zhuǎn)檢測模塊及所述瀏覽器插件模塊所屬的網(wǎng)頁瀏覽器;
[0024]所述HTTP頭跳轉(zhuǎn)檢測模塊抓取該頁面返回的HTTP頭,并判斷及獲取跳轉(zhuǎn)關(guān)系。
[0025]瀏覽器插件模塊還可以用于,當(dāng)確定跳轉(zhuǎn)關(guān)系后,將所述跳轉(zhuǎn)關(guān)系中的當(dāng)前頁面地址發(fā)送至所述HTTP頭跳轉(zhuǎn)檢測模塊;
[0026]所述HTTP頭跳轉(zhuǎn)檢測模塊抓取該當(dāng)前頁面返回的HTTP頭,并判斷及獲取跳轉(zhuǎn)關(guān)系O
[0027]一種網(wǎng)址重定向的檢測方法,包括:
[0028]在網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在執(zhí)行所述當(dāng)前頁面內(nèi)容之前,獲取當(dāng)前頁面地址、當(dāng)前頁面的引用頁面地址以及當(dāng)前頁面的父頁面地址,判斷獲取的內(nèi)容是否同時滿足如下2個條件:
[0029]條件1:當(dāng)前頁面的引用頁面地址非空;
[0030]條件2:當(dāng)前頁面地址等于當(dāng)前頁面的父頁面地址;
[0031]如果是,則判定所述當(dāng)前頁面的引用頁面地址向當(dāng)前頁面地址存在跳轉(zhuǎn)關(guān)系,保存該跳轉(zhuǎn)關(guān)系。
[0032]上述方法中,網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在執(zhí)行所述當(dāng)前頁面內(nèi)容之前具體可以為:所述網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在所述當(dāng)前頁面的文件對象模型DOM樹建立之前。
[0033]上述方法還可以包括:
[0034]抓取給定頁面返回的HTTP頭,根據(jù)所述HTTP頭中的狀態(tài)碼判斷是否存在跳轉(zhuǎn),如果是,則獲取所述HTTP頭中的跳轉(zhuǎn)地址,得到所述給定頁面的地址向所述跳轉(zhuǎn)地址的跳轉(zhuǎn)關(guān)系,保存該跳轉(zhuǎn)關(guān)系;
[0035]根據(jù)保存的跳轉(zhuǎn)關(guān)系建立包括多個頁面地址的跳轉(zhuǎn)關(guān)系鏈條。
[0036]上述方法中,給定頁面可以為所述跳轉(zhuǎn)關(guān)系中的當(dāng)前頁面地址所對應(yīng)的頁面。
[0037]可見,本發(fā)明提出的網(wǎng)址重定向的檢測裝置及方法,通過在網(wǎng)頁瀏覽器中設(shè)置插件,能夠完全模擬用戶真實的上網(wǎng)環(huán)境,避免文本字符串拼接、加密等對檢測造成的影響,從而檢測出通過HTML內(nèi)容實現(xiàn)的網(wǎng)址重定向。
【附圖說明】
[0038]圖1為本發(fā)明提出的網(wǎng)址重定向的檢測裝置的結(jié)構(gòu)示意圖;
[0039]圖2為實施例二中獲取到的HTTP頭示意圖;
[0040]圖3為實施例三和四中檢測的多次網(wǎng)址重定向示意圖。
【具體實施方式】
[0041]本發(fā)明提出一種網(wǎng)址重定向的檢測裝置,如圖1為該裝置的結(jié)構(gòu)示意圖,包括:
[0042]瀏覽器插件模塊101,以插件的形式設(shè)置在網(wǎng)頁瀏覽器中,用于在網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在執(zhí)行所述當(dāng)前頁面內(nèi)容之前,獲取當(dāng)前頁面地址、當(dāng)前頁面的引用頁面地址以及當(dāng)前頁面的父頁面地址,判斷獲取的內(nèi)容是否同時滿足如下2個條件:
[0043]條件1:當(dāng)前頁面的引用頁面地址非空;
[0044]條件2:當(dāng)前頁面地址等于當(dāng)前頁面的父頁面地址;
[0045]如果是,則判定所述當(dāng)前頁面的引用頁面地址向當(dāng)前頁面地址存在跳轉(zhuǎn)關(guān)系,將所述跳轉(zhuǎn)關(guān)系發(fā)送至跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫102 ;
[0046]跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫102,用于接收并保存所述跳轉(zhuǎn)關(guān)系。
[0047]上述裝置中,網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在執(zhí)行所述當(dāng)前頁面內(nèi)容之前具體可以為:網(wǎng)頁瀏覽器下載到當(dāng)前頁面內(nèi)容之后、并在當(dāng)前頁面的DOM樹建立之前。
[0048]通過瀏覽器插件模塊101能夠檢測出利用HTML內(nèi)容實現(xiàn)的網(wǎng)址重定向。
[0049]上述裝置還可以包括HTTP頭跳轉(zhuǎn)檢測模塊103,用于抓取給定頁面返回的HTTP頭,根據(jù)所述HTTP頭中的狀態(tài)碼判斷是否存在跳轉(zhuǎn),如果是,則獲取所述HTTP頭中的跳轉(zhuǎn)地址,得到所述給定頁面的地址向所述跳轉(zhuǎn)地址的跳轉(zhuǎn)關(guān)系,將所述跳轉(zhuǎn)關(guān)系發(fā)送至跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫102 ;
[0050]跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫102接收并保存所述跳轉(zhuǎn)關(guān)系。
[0051]通過HTTP頭跳轉(zhuǎn)檢測模塊103能夠檢測出利用HTTP頭實現(xiàn)的網(wǎng)址重定向。
[0052]跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫102可以根據(jù)自身保存的跳轉(zhuǎn)關(guān)系建立包括多個頁面地址的跳轉(zhuǎn)關(guān)系鏈條。
[0053]上述裝置還可以包括:頁面地址發(fā)送模塊104,用于將頁面地址發(fā)送至HTTP頭跳轉(zhuǎn)檢測模塊103及所述瀏覽器插件模塊101所屬的網(wǎng)頁瀏覽器;
[0054]相應(yīng)的,上述HTTP頭跳轉(zhuǎn)檢測模塊103所針對的給定頁面也就是其接收的頁面地址所對應(yīng)的頁面;瀏覽器插件模塊101也可以在網(wǎng)頁瀏覽器執(zhí)行頁面跳轉(zhuǎn)之后檢測出跳轉(zhuǎn)關(guān)系。
[0055]另外,瀏覽器插件模塊101還可以用于,當(dāng)確定跳轉(zhuǎn)關(guān)系后,將上述跳轉(zhuǎn)關(guān)系中的當(dāng)前頁面地址(也就是該跳轉(zhuǎn)關(guān)系中的目的地址)發(fā)送至所述HTTP頭跳轉(zhuǎn)檢測模塊;
[0056]相應(yīng)的,上述HTTP頭跳轉(zhuǎn)檢測模塊103所針對的給定頁面也可以是該當(dāng)前頁面地址所對應(yīng)的頁面,從而檢測該頁面是否進一步向其他的頁面跳轉(zhuǎn)。
[0057]以下舉具體的實施例詳細介紹。
[0058]實施例一:
[0059]本實施例介紹瀏覽器插件模塊檢測跳轉(zhuǎn)關(guān)系的具體方式。瀏覽器插件模塊能夠檢測出利用HTML內(nèi)容實現(xiàn)的網(wǎng)址重定向。
[0060]目前主流的網(wǎng)頁瀏覽器都支持使用插件以擴展瀏覽器功能。通過使用IE的ActiveX插件或Firefox/Chrome的網(wǎng)景插件應(yīng)用程序編程接口(NPAPI)插件,可以方便地獲取訪問頁面生成的文件對象模型(DOM,Document Object Model)樹和各類屬性值。本發(fā)明通過自定義的瀏覽器插件模塊實現(xiàn)以下功能:
[0061]在當(dāng)前頁面DOM樹構(gòu)建之前,獲取當(dāng)前頁面地址URL L(即window, locat1n, href屬性值)、當(dāng)前頁面的引用頁面地址URL R (即window, document, referrer屬性值)和當(dāng)前頁面的父頁面地址 URL P (window, parent, document, locat1n, href 屬性值)。
[0062]當(dāng)URL L與URL P不相等時,說明當(dāng)前頁面是以子頁面形式存在的(比如URL L通過iframe標簽內(nèi)嵌在URL P的頁面)。
[0063]如果URL R非空且URL L等于URL P,則說明是通過HTML內(nèi)容實現(xiàn)跳轉(zhuǎn),則可以確定URL R至URL L的跳轉(zhuǎn)關(guān)系,可以記錄為(URL R, URL L),將該跳轉(zhuǎn)關(guān)系發(fā)送至跳轉(zhuǎn)關(guān)系數(shù)據(jù)庫;同時可以將URL L發(fā)送到HTTP頭跳轉(zhuǎn)檢測模塊做進一步探測。
[0064]采用瀏覽器插件的方法,可以完全模擬用戶真實上網(wǎng)環(huán)境,簡單的文本字符串拼接、加密也不會對檢測結(jié)果造成影響,從而增強了跳轉(zhuǎn)檢測的準確性。
[0065]實施例二:
[0066]本實施例介紹HTTP頭跳轉(zhuǎn)檢測模塊檢測跳轉(zhuǎn)關(guān)系的具體方式。HTTP頭跳轉(zhuǎn)檢測模塊能夠檢測出利用HTTP頭實現(xiàn)的網(wǎng)址重定向。
[0067]HTTP頭跳轉(zhuǎn)檢測模塊抓取給定頁面返回的HTTP頭,分析其中的狀態(tài)碼與