專利名稱:檢測網(wǎng)頁內(nèi)容變更的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種檢測網(wǎng)頁內(nèi)容變更的方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)站為用戶提供了實時的豐富多彩的內(nèi)容,如新聞、公告、論壇等,由于各種因素,網(wǎng)站被黑客入侵,網(wǎng)站頁面內(nèi)容被篡改的事件屢有發(fā)生,需要對網(wǎng)站頁面內(nèi)容變更進行實時檢測?,F(xiàn)有的檢測網(wǎng)頁內(nèi)容變更的方法主要是判斷網(wǎng)頁超文本標(biāo)記語言(HypertextMarkup Language,簡稱HTML)源碼是否發(fā)生了改變,但是,通過確定HTML源碼發(fā)生改變的方法無法判斷網(wǎng)頁變更是否合法,這時仍然需要網(wǎng)絡(luò)管理員通過人工檢測的方法確定網(wǎng)頁發(fā)生變更的合法性。 發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn)由于網(wǎng)站頁面數(shù)量龐大,現(xiàn)有的檢測網(wǎng)頁內(nèi)容變更的方法存在檢測效率低、準確率低的問題。
發(fā)明內(nèi)容
本發(fā)明提供一種檢測網(wǎng)頁內(nèi)容變更的方法及裝置,解決了現(xiàn)有的檢測網(wǎng)頁內(nèi)容變更的方法存在檢測效率低、準確率低的問題。本發(fā)明的第一個方面是提供一種檢測網(wǎng)頁內(nèi)容變更的方法,包括將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第二 DOM樹;將第一 DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM樹;將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型;若所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取所述子樹對應(yīng)的變更內(nèi)容;查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級;若所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定所述子樹的變更類型為非法變更。本發(fā)明的另一個方面是提供一種檢測網(wǎng)頁內(nèi)容變更的裝置,包括生成模塊,用于將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第二DOM 樹;第一確定模塊,用于將第一 DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM樹;第二確定模塊,用于將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型;獲取模塊,用于若所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取所述子樹對應(yīng)的變更內(nèi)容;查詢模塊,用于查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級;第三確定模塊,用于若所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定所述子樹的變更類型為非法變更。本發(fā)明實施例采用比較兩棵DOM樹的方法,可以確定兩棵DOM樹中每一子樹的變更類型,若確定所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則進一步獲取所述子樹對應(yīng)的變更內(nèi)容,通過查詢內(nèi)容權(quán)重列表確定所述子樹的變更類型是否為非法變更,解決了現(xiàn)有的檢測網(wǎng)頁內(nèi)容變更的方法存在檢測效率低、準確率低的問題。
圖I為本發(fā)明實施例一提供的檢測網(wǎng)頁內(nèi)容變更的方法的流程示意圖;圖2為圖I所示實施例采用的DOM樹的結(jié)構(gòu)示意圖;圖3為圖I所示實施例中步驟103的一種具體實現(xiàn)的流程示意圖;圖4為本發(fā)明實施例二提供的檢測網(wǎng)頁內(nèi)容變更的裝置的結(jié)構(gòu)示意圖。
具體實施例方式圖I為本發(fā)明實施例一提供的檢測網(wǎng)頁內(nèi)容變更的方法的流程示意圖,如圖I所示,包括步驟101、將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第二 DOM樹。舉例來說,從網(wǎng)絡(luò)數(shù)據(jù)資源中將第一網(wǎng)頁的HTML文檔的內(nèi)容,對該HTML文檔進行規(guī)范化檢驗,使用HTML解析器對檢驗后的規(guī)范化的HTML文檔進行解析,形成一棵基于文檔對象模型(Document Object Model,簡稱DOM)的解析樹(簡稱第一 DOM樹),第一 DOM樹中形象地標(biāo)識出了 HTML各節(jié)點的層次關(guān)系及各自的屬性及相應(yīng)的文本值,同理可以將第二網(wǎng)頁生成第二 DOM樹。步驟102、將第一 DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二DOM樹為同源DOM樹。舉例來說,假設(shè)第一網(wǎng)頁為源網(wǎng)頁,第二網(wǎng)頁為在第一網(wǎng)頁基礎(chǔ)上進行修改的網(wǎng)頁,本實施例可以將第二網(wǎng)頁稱為與第一網(wǎng)頁同源的網(wǎng)頁,即第二網(wǎng)頁為第一網(wǎng)頁的同源網(wǎng)頁,對應(yīng)地,第一 DOM樹為源DOM樹,第二 DOM樹為與第一 DOM樹同源的DOM樹。舉例來說,本實施例中,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM樹的方法具體可以包括分別計算所述第一網(wǎng)頁的DOM樹與所述第二 DOM樹中所有子樹的hash_dom值。舉例來說,可以先將本實施例中第一DOM樹和第二DOM樹進行預(yù)處理,即為每一個DOM樹上的每一個節(jié)點計算哈希hash值,其中,每一個節(jié)點有兩個hash值,第一個hash值為hash_self,第二個hash值為hash_dom,其中,hash_self是當(dāng)前節(jié)點自身屬性內(nèi)容的一個hash值,而hash_dom是以當(dāng)前節(jié)點為根節(jié)點的整棵DOM樹的hash值。本實施例中,比較第一 DOM樹的hash值和第二 DOM樹的hash值是否相同時只需要比較兩棵DOM樹的hash_dom值即可。分別將所述第一 DOM樹中所有子樹的hash_dom值與所述第二 DOM樹中所有子樹、的hash_dom值按照預(yù)設(shè)的順序組成第一哈希序列和第二哈希序列。舉例來說,將DOM樹中所有子樹的hash_dom值序列化時,可以采用廣度遍歷算法,在序列化之前,初始序列為空,假設(shè)I為根節(jié)點,取出根節(jié)點1,放在序列的第一位,根節(jié)點的直接子節(jié)點放在序列的第二位,若根節(jié)點的直接子節(jié)點有多個,則將多個節(jié)點按照順序從左到右,或從右到左依次排序,不影響算法。圖2為圖I所示實施例采用的DOM樹的結(jié)構(gòu)示意圖,如圖2所示,根節(jié)點I的直接子節(jié)點按照從左到右的順序添加到序列尾端,即順次加入2、3、4 ;然后把節(jié)點2的直接子節(jié)點按照從左到右的順序加入到隊列尾部,依此類推,直到添加完隊列最后一位。利用相似度算法計算所述第一哈希序列與所述第二哈希序列的相似度,若所述第一哈希序列與所述第二哈希序列的相似度大于哈希序列相似度閾值,則確定所述第一 DOM樹與所述第二 DOM樹為同源DOM樹。舉例來說,哈希序列相似度閾值可以根據(jù)精度要求做不同的設(shè)置,本實施例的哈 希序列相似度閾值設(shè)為0. 5。本實施例的相似度算法可以采用最大公共子序列算法,最大公共子序列算法為本領(lǐng)域技術(shù)人員的公知常識,算法的具體描述不再贅述。步驟103、將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型。舉例來說,本實施例可以預(yù)先定義網(wǎng)頁內(nèi)容變更的變更類型,具體包括INSERT :新加內(nèi)容,表示向頁面中添加了新的內(nèi)容;DELETE :刪除內(nèi)容,表示刪除了頁面中的部分內(nèi)容;MODIFY :修改內(nèi)容,表示修改了頁面中的內(nèi)容;COPY :復(fù)制內(nèi)容,表示將頁面中的某一部分內(nèi)容的副本插入到了頁面中;MOVE :移動內(nèi)容,表不將頁面中的某一部分內(nèi)容移動到了另一個位置;NULL:完全相同,內(nèi)容未發(fā)生變化。104、若所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取所述子樹對應(yīng)的變更內(nèi)容。舉例來說,本實施例可以將COPY、MOVE以及NULL三種變更類型預(yù)設(shè)為合法變更,將INSERT、MODIFY、DELETE三種變更類型預(yù)設(shè)為需要進行合法驗證的變更類型。進一步舉例來說,根據(jù)步驟103中確定的所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型;若所述子樹的變更類型為刪除或插入或修改,則確定所述子樹的變更類型為需要進行合法驗證的變更類型。由于DOM樹不僅描述了文檔的結(jié)構(gòu),還定義了每一子樹(節(jié)點)的對象屬性,利用每一子樹的對象屬性,可以方便的訪問、修改、添加和提取每一子樹以及對應(yīng)的內(nèi)容,舉例來說,本實施例中所述的獲取所述子樹對應(yīng)的變更內(nèi)容,具體可以利用開源的網(wǎng)頁解析工具提取所述子樹對應(yīng)的網(wǎng)頁標(biāo)簽,根據(jù)所述子樹對應(yīng)的網(wǎng)頁標(biāo)簽提取相應(yīng)的內(nèi)容。步驟105、查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級。舉例來說,本實施例預(yù)先對第一 DOM樹中所有子樹對應(yīng)的內(nèi)容設(shè)置了權(quán)重等級,并保存在與所述第一 DOM樹對應(yīng)的第一內(nèi)容權(quán)重列表中,本實施例預(yù)先對第二 DOM樹中所有子樹對應(yīng)的內(nèi)容設(shè)置了權(quán)重等級,并保存在與所述第二 DOM樹對應(yīng)的第二內(nèi)容權(quán)重列表中。對應(yīng)地,若所述子樹為第一 DOM中的子樹,則查詢與所述第一 DOM樹對應(yīng)的第一內(nèi)容權(quán)重列表,若所述子樹為第二 DOM中的子樹,則查詢與所述第二 DOM樹對應(yīng)的第二內(nèi)容權(quán)
重列表。步驟106、若所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定所述子樹的變更類型為非法變更。需要說明的是,本實施例的預(yù)設(shè)的非法變更等級可以根據(jù)具體網(wǎng)頁的相關(guān)內(nèi)容進行具體的設(shè)定,內(nèi)容權(quán)重等級也可以根據(jù)具體網(wǎng)頁的相關(guān)內(nèi)容進行具體的設(shè)定。舉例來說,若第一 DOM樹中的子樹的變更類型刪除,獲取與該子樹對應(yīng)的被刪除 的內(nèi)容,查詢與所述第一 DOM樹對應(yīng)的第一權(quán)重內(nèi)容列表,與該被刪除的內(nèi)容對應(yīng)的權(quán)重等級為10,假設(shè)權(quán)重等級越大說明該權(quán)重等級對應(yīng)的內(nèi)容越重要,假設(shè)預(yù)設(shè)的非法變更等級為5,則確定該子樹的變更類型為非法刪除,進而可以確定第一網(wǎng)頁中的重要內(nèi)容被非法刪除。本發(fā)明實施例采用比較兩棵DOM樹的方法,可以確定兩棵DOM樹中每一子樹的變更類型,若確定所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則進一步獲取所述子樹對應(yīng)的變更內(nèi)容,通過查詢內(nèi)容權(quán)重列表確定所述子樹的變更類型是否為非法變更,解決了現(xiàn)有的檢測網(wǎng)頁內(nèi)容變更的方法存在檢測效率低、準確率低的問題。圖3為圖I所示實施例中步驟103的一種具體實現(xiàn)的流程示意圖,假設(shè)第一網(wǎng)頁為源網(wǎng)頁,第二網(wǎng)頁為與第一網(wǎng)頁同源的網(wǎng)頁,對應(yīng)地,第一 DOM樹為源DOM樹,第二 DOM樹為與第一 DOM樹同源的DOM樹,將第一 DOM樹定義為TA,將第二 DOM樹定義為TB,TA的根節(jié)點為rootl,可以設(shè)為第一父節(jié)點,TB的根結(jié)點為root2,可以設(shè)為第二父節(jié)點,如圖3所示,包括步驟301、比較第一父節(jié)點的hash_dom值是否等于第二父節(jié)點的hash_dom值,若是,則結(jié)束,否則執(zhí)行步驟302。在步驟301中,將TA的根節(jié)點rootl設(shè)為第一父節(jié)點,TB的根結(jié)點root2設(shè)為第二父節(jié)點,若第一父節(jié)點的hash_dom值等于第二父節(jié)點的hash_dom值,則說明第一 DOM樹和第二 DOM樹完全相同,也就是說,第一網(wǎng)頁與第二網(wǎng)頁完全相同,算法結(jié)束;若第一父節(jié)點的hash_dom值不等于第二父節(jié)點的hash_dom值,則說明第一 DOM樹和第二 DOM樹不相同,因為實施例一已確定第一 DOM樹和第二 DOM樹為同源DOM樹,同時將 rootl 和 root2 標(biāo)記為 modify。步驟302、查找第一父節(jié)點的第一級子樹集合,確定是否存在與第二父節(jié)點中的第一級子樹集合中任一子樹bi具有相同hash_dom值的子樹ai,若存在,則執(zhí)行步驟303,否則執(zhí)行步驟306。步驟303、確定ai是否被標(biāo)記過,若是,則執(zhí)行步驟304、否則執(zhí)行步驟305。步驟304、ai已被標(biāo)記,將ai標(biāo)記增加COPY, bi標(biāo)記為COPY。舉例來說,ai已被標(biāo)記,也就是說ai已經(jīng)被TB中的其他子樹匹配過,若原標(biāo)記為NULL,可以將ai標(biāo)記為NULL和C0PY,也就是,在原標(biāo)記的基礎(chǔ)上將ai標(biāo)記增加COPY標(biāo)記,將bi標(biāo)記為COPY。步驟305、ai未被標(biāo)記,對ai進行標(biāo)記,并將ai和bi同時標(biāo)記為NULL。
步驟306、查找第一父節(jié)點的第一級子樹集合,確定是否存在與第二父節(jié)點中的第一級子樹集合中任一子樹bi同源的子樹ak,若存在,返回步驟302,否則,執(zhí)行步驟307。需要說明的是,在步驟302中,查找第一父節(jié)點的第一級子樹集合,確定存在與第二父節(jié)點中的第一級子樹集合中任一子樹bi的hash_dom值不同的子樹ak,可以通過實施例一所述的同源樹的確定方法確定bi子樹和ak子樹是否為同源子樹,具體為將ak設(shè)為第一父節(jié)點,將bi設(shè)為第二父節(jié)點,分別計算第一父節(jié)點和第二父節(jié)點中所有子樹的hash_dom值,并將第一父節(jié)點和第二父節(jié)點中所有子樹的hash_dom值按照預(yù)設(shè)的順序分別組成第一哈希序列和第二哈希序列,利用相似度算法計算所述第一哈希序列與所述第二哈希序列的相似度,并確定bi子樹和ak子樹是否同源樹。若確定bi子樹和ak子樹是同源樹,則對ak子樹進行標(biāo)記,將bi子樹和ak子樹的標(biāo)記為修改,同時可以遞歸處理bi子樹和ak子樹,進一步確定bi子樹和ak子樹中每一個子樹的變更類型,即將ak子樹作為第一父節(jié)點,bi作為第二父節(jié)點,采用步驟302-311所述的方法確定bi子樹和ak子樹中每一個子樹的變更類型。步驟307、查找TA中所有子樹集合,并確定是否存在與TB中bi具有相同hash_dom值的子樹aj,若存在,則執(zhí)行步驟309,否則執(zhí)行步驟308。通過步驟302至306,查找第一父節(jié)點的第一級子樹集合,若確定不存在與第二父節(jié)點中的第一級子樹集合中bi具有相同hash_dom值的子樹ai,或者確定不存在中的第一級子樹集合中bi同源的子樹ai,則可以查找TA中所有子樹集合,并確定是否存在與TB中bi具有相同hash_dom值的子樹aj。步驟308、將 bi 標(biāo)記為 INSERT。步驟309、確定aj是否被標(biāo)記過,若是,則執(zhí)行步驟310、否則執(zhí)行步驟311。步驟310、若aj已被標(biāo)記,aj添加MOVE標(biāo)記,bi標(biāo)記為COPY。步驟311、若aj未被標(biāo)記,則對aj子樹進行標(biāo)記,并將aj和bi標(biāo)記為MOVE。需要說明的是,通過上述步驟,可以對TB中所有子樹進行hash_dom值匹配處理,并標(biāo)注TB中所有子樹的變更類型,本實施例中,若TA中存在未進行標(biāo)記的子樹aj,則將未進行標(biāo)記的子樹aj都標(biāo)記為DELETE,算法結(jié)束。圖4為本發(fā)明實施例二提供的檢測網(wǎng)頁內(nèi)容變更的裝置的結(jié)構(gòu)示意圖,包括生成模塊41,用于將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第
二DOM 樹;第一確定模塊42,用于將第一 DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM樹;第二確定模塊43,用于將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型;獲取模塊44,用于若所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取所述子樹對應(yīng)的變更內(nèi)容;查詢模塊45,用于查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級;第三確定模塊46,用于若所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定所述子樹的變更類型為非法變更。
舉例來說,第一確定模塊42具體包括第一計算單元,用于確定所述第一 DOM樹與所述第二 DOM樹中所有子樹的哈希值hash—com ;序列單元,用于分別將所述第一 DOM樹中所有子樹的hash—dom值與所述第二 DOM樹中所有子樹的hash_dom值按照預(yù)設(shè)的順序組成第一哈希序列和第二哈希序列;第一確定單元,用于利用相似度算法計算所述第一哈希序列與所述第二哈希序列的相似度,若所述第一哈希序列與所述第二哈希序列的相似度大于哈希序列相似度閾值,則確定所述第一 DOM樹與所述第二 DOM樹為同源DOM樹。舉例來說,第二確定模塊43,具體用于查找所述第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹IDi具有相同hash_dom值的子樹Si,則確定所述具有相同hash_dom值的子樹Si是否已被標(biāo)記,若所述具有相同hash_dom值的子樹子樹ai被標(biāo)記,則確定所述具有相同hash_dom值的子樹Bi的變更類型增加復(fù)制,確定與所述具有相同hash_dom值的子樹Si對應(yīng)的子樹h的變更類型為復(fù)制,若所述具有相同hash_dom值的子樹Si未被標(biāo)記,則對所述具有相同hash_dom值的子樹a」進行標(biāo)記,并確定所述具有相同hash_dom值的子樹Si和與所述具有相同hash_dom值的子樹Si對應(yīng)的子樹匕的變更類型為相同。進一步舉例來說,第二確定模塊43,具體還用于查找所述第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹IDi的hash_dom值不相同、且不同源的子樹%,則查找所述第一 DOM樹中所有子樹集合確定是否存在與所述第二DOM樹的第一級子樹集合B中任一子樹IDi具有相同hash_dom值的子樹a」;若存在所述具有相同hash_dom值的子樹aj;則確定所述具有相同hash_dom值的子樹a」是否被標(biāo)記,若所述具有相同hash_dom值的子樹a」被標(biāo)記,則確定所述具有相同hash_dom值的子樹a」的變更類型增加移動,所述具有相同hash_dom值的子樹a」對應(yīng)的子樹匕的變更類型為復(fù)制;若所述具有相同hash_dom值的子樹\_未被標(biāo)記,則對所述具有相同hash_dom值的子樹a」進行標(biāo)記,并確定所述具有相同hash_dom值的子樹a」和所述具有相同hash_dom值的子樹a」對應(yīng)的子樹h的變更類型為移動;若所述第二 DOM樹的第一級子樹集合B中存在與所述第一 DOM樹中所有子樹集合中的任一子樹a」的hash_dom值不相同、且不同源的子樹h ,則確定所述子樹IDi的變更類型為插入。進一步舉例來說,第二確定模塊43,具體還用于查找第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹h同源的子樹ak,則對所述子樹ak進行標(biāo)記,確定所述子樹ak和與所述子樹ak同源的子樹匕的變更類型為修改。進一步舉例來說,第二確定模塊43,具體還用于查詢所述第一 DOM樹的所有子樹集合;若確定存在與所述第二 DOM樹的所有子樹集合中任一子樹IDi的hash_dom值不相同的子樹ap且所述子樹a]未被標(biāo)記,則確定所述子樹a]的變更類型為刪除。舉例來說,查詢模塊45,具體用于若所述子樹為第一 DOM樹中的子樹,則查詢與第一 DOM樹對應(yīng)的第一內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級;若所述子樹為第二 DOM樹中的子樹,則查詢與第二 DOM樹對應(yīng)的第二內(nèi)容權(quán)重列表,確定所述子樹對 應(yīng)的變更內(nèi)容的權(quán)重等級。
本實施例所述裝置可以具體執(zhí)行圖I所示方法實施例所述的方法,其實現(xiàn)原理和技術(shù)效果不再贅述。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。·
權(quán)利要求
1.一種檢測網(wǎng)頁內(nèi)容變更的方法,其特征在于,包括 將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第二 DOM樹; 將第一 DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM 樹; 將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型; 若所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取所述子樹對應(yīng)的變更內(nèi)容; 查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級; 若所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定所述子樹的變更類型為非法變更。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述將第一DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM樹,具體包括 確定所述第一 DOM樹與所述第二 DOM樹中所有子樹的哈希值hash_dom ; 分別將所述第一 DOM樹中所有子樹的hash_dom值與所述第二 DOM樹中所有子樹的hash_dom值按照預(yù)設(shè)的順序組成第一哈希序列和第二哈希序列; 利用相似度算法計算所述第一哈希序列與所述第二哈希序列的相似度,若所述第一哈希序列與所述第二哈希序列的相似度大于哈希序列相似度閾值,則確定所述第一 DOM樹與所述第二 DOM樹為同源DOM樹。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,若所述第一DOM樹為源DOM樹,所述第二DOM樹為所述第一 DOM樹的同源DOM樹; 所述將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型具體包括 查找所述第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹h具有相同hash_dom值的子樹Bi,則確定所述具有相同hash_dom值的子樹ai是否已被標(biāo)記,若所述具有相同hash_dom值的子樹子樹Si被標(biāo)記,則確定所述具有相同hash_dom值的子樹Si的變更類型增加復(fù)制,確定與所述具有相同hash_dom值的子樹Si對應(yīng)的子樹h的變更類型為復(fù)制,若所述具有相同hash_dom值的子樹Bi未被標(biāo)記,則對所述具有相同hash_dom值的子樹Si進行標(biāo)記,并確定所述具有相同hash_dom值的子樹Si和與所述具有相同hash_dom值的子樹Si對應(yīng)的子樹h的變更類型為相同。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述將所述第一DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型定具體包括 查找所述第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹IDi的hash_dom值不相同、且不同源的子樹ai;則查找所述第一 DOM樹中所有子樹集合確定是否存在與所述第二 DOM樹的第一級子樹集合B中任一子樹IDi具有相同hash_dom值的子樹a」; 若存在所述具有相同hash_dom值的子樹a」,則確定所述具有相同hash_dom值的子樹aj是否被標(biāo)記,若所述具有相同hash_dom值的子樹a」被標(biāo)記,則確定所述具有相同hash_dom值的子樹a」的變更類型增加移動,所述具有相同hash_dom值的子樹a」對應(yīng)的子樹h的變更類型為復(fù)制;若所述具有相同hash_dom值的子樹a]未被標(biāo)記,則對所述具有相同hash_dom值的子樹a」進行標(biāo)記,并確定所述具有相同hash_dom值的子樹a」和所述具有相同hash_dom值的子樹a」對應(yīng)的子樹h的變更類型為移動; 若所述第二 DOM樹的第一級子樹集合B中存在與所述第一 DOM樹中所有子樹集合中的任一子樹a」的hash_dom值不相同、且不同源的子樹h,則確定所述子樹IDi的變更類型為插入。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述將所述第一DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型具體包括 查找第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹h同源的子樹ak,則對所述子樹ak進行標(biāo)記,確定所述子樹ak和與所述子樹ak同源的子樹匕的變更類型為修改。
6.根據(jù)權(quán)利要求3-5中任一項所述的方法,其特征在于,所述將所述第一DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型具體包括 查詢所述第一 DOM樹的所有子樹集合; 若確定存在與所述第二 DOM樹的所有子樹集合中任一子樹h的hash_dom值不相同的子樹ap且所述子樹a]未被標(biāo)記,則確定所述子樹a]的變更類型為刪除。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級具體包括 若所述子樹為第一 DOM樹中的子樹,則查詢與第一 DOM對應(yīng)的第一內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級; 若所述子樹為第二 DOM樹中的子樹,則查詢與第二 DOM對應(yīng)的第二內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級。
8.—種檢測網(wǎng)頁內(nèi)容變更的裝置,其特征在于,包括 生成模塊,用于將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第二 DOM樹; 第一確定模塊,用于將第一 DOM樹和第二 DOM樹進行比較,確定所述第一 DOM樹和所述第二 DOM樹為同源DOM樹; 第二確定模塊,用于將所述第一 DOM樹中所有的子樹與所述第二 DOM樹中所有的子樹進行匹配,確定所述第一 DOM樹中與所述第二 DOM樹中每一子樹的變更類型; 獲取模塊,用于若所述子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取所述子樹對應(yīng)的變更內(nèi)容; 查詢模塊,用于查詢內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級; 第三確定模塊,用于若所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定所述子樹的變更類型為非法變更。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一確定模塊具體包括 第一計算單元,用于確定所述第一 DOM樹與所述第二 DOM樹中所有子樹的哈希值hash_com ; 序列單元,用于分別將所述第一 DOM樹中所有子樹的hash_dom值與所述第二 DOM樹中所有子樹的hash_dom值按照預(yù)設(shè)的順序組成第一哈希序列和第二哈希序列; 第一確定單元,用于利用相似度算法計算所述第一哈希序列與所述第二哈希序列的相似度,若所述第一哈希序列與所述第二哈希序列的相似度大于哈希序列相似度閾值,則確定所述第一 DOM樹與所述第二 DOM樹為同源DOM樹。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第二確定模塊,具體用于查找所述第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹h具有相同hash_dom值的子樹Si,則確定所述具有相同hash_dom值的子樹Si是否已被標(biāo)記,若所述具有相同hash_dom值的子樹子樹Si被標(biāo)記,則確定所述具有相同hash_dom值的子樹Si的變更類型增加復(fù)制,確定與所述具有相同hash_dom值的子樹Si對應(yīng)的子樹bi的變更類型為復(fù)制,若所述具有相同hash_dom值的子樹Si未被標(biāo)記,則對所述具有相同hash_dom值的子樹Si進行標(biāo)記,并確定所述具有相同hash_dom值的子樹Si和與所述具有相同hash_dom值的子樹Si對應(yīng)的子樹h的變更類型為相同。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第二確定模塊,具體還用于查找所述第一 DOM樹的第一級子樹集合A,若確定存在與第二 DOM樹的第一級子樹集合B中任一子樹h的hash_dom值不相同、且不同源的子樹ai;則查找所述第一 DOM樹中所有子樹集合確定是否存在與所述第二 DOM樹的第一級子樹集合B中任一子樹IDi具有相同hash_dom值的子樹a」; 若存在所述具有相同hash_dom值的子樹a」,則確定所述具有相同hash_dom值的子樹aj是否被標(biāo)記,若所述具有相同hash_dom值的子樹a」被標(biāo)記,則確定所述具有相同hash_dom值的子樹a」的變更類型增加移動,所述具有相同hash_dom值的子樹a」對應(yīng)的子樹h的變更類型為復(fù)制;若所述具有相同hash_dom值的子樹a]未被標(biāo)記,則對所述具有相同hash_dom值的子樹a」進行標(biāo)記,并確定所述具有相同hash_dom值的子樹a」和所述具有相同hash_dom值的子樹a」對應(yīng)的子樹h的變更類型為移動; 若所述第二 DOM樹的第一級子樹集合B中存在與所述第一 DOM樹中所有子樹集合中的任一子樹a」的hash_dom值不相同、且不同源的子樹h,則確定所述子樹IDi的變更類型為插入。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第二確定模塊,具體還用于查找第一D OM樹的第一級子樹集合A,若確定存在與第二 D OM樹的第一級子樹集合B中任一子樹b i同源的子樹ak,則對所述子樹ak進行標(biāo)記,確定所述子樹ak和與所述子樹ak同源的子樹匕的變更類型為修改。
13.根據(jù)權(quán)利要求10-12中任一項所述的裝置,其特征在于,所述第二確定模塊,具體還用于查詢所述第一 DOM樹的所有子樹集合;若確定存在與所述第二 DOM樹的所有子樹集合中任一子樹h的hash_dom值不相同的子樹aj;且所述子樹a」未被標(biāo)記,則確定所述子樹Bj的變更類型為刪除。
14.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述查詢模塊,具體用于若所述子樹為第一 DOM樹中的子樹,則查詢與第一 DOM對應(yīng)的第一內(nèi)容權(quán)重列表,確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級;若所述子樹為第二 DOM樹中的子樹,則查詢與第二 DOM對應(yīng)的第二內(nèi)容權(quán)重列表, 確定所述子樹對應(yīng)的變更內(nèi)容的權(quán)重等級。
全文摘要
本發(fā)明提供一種檢測網(wǎng)頁內(nèi)容變更的方法及裝置,該方法包括將第一網(wǎng)頁生成第一文檔對象模型DOM樹,將第二網(wǎng)頁生成第二DOM樹;將第一DOM樹和第二DOM樹進行比較,確定第一DOM樹和第二DOM樹為同源DOM樹;將第一DOM樹中所有的子樹與第二DOM樹中所有的子樹進行匹配,確定第一DOM樹中與第二DOM樹中每一子樹的變更類型;若子樹的變更類型為預(yù)設(shè)的需要進行合法驗證的變更類型,則獲取該子樹對應(yīng)的變更內(nèi)容;查詢內(nèi)容權(quán)重列表,確定該子樹對應(yīng)的變更內(nèi)容的權(quán)重等級;若該子樹對應(yīng)的變更內(nèi)容的權(quán)重等級大于預(yù)設(shè)的非法變更等級,則確定該子樹的變更類型為非法變更,解決現(xiàn)有的檢測網(wǎng)頁內(nèi)容變更的方法檢測效率低的問題。
文檔編號G06F17/30GK102682098SQ20121012999
公開日2012年9月19日 申請日期2012年4月27日 優(yōu)先權(quán)日2012年4月27日
發(fā)明者付德龍, 張振虎, 王興, 王曉明, 羅宇, 龍柯 申請人:北京神州綠盟信息安全科技股份有限公司