一種cookie訪問去重方法和裝置與流程
2023-05-30 09:52:22
本發明實施例涉及計算機技術,尤其涉及一種cookie訪問去重方法和裝置。
背景技術:
cookie指網站為了辨別用戶身份而存儲在用戶本地終端上的數據。通常,cookie由Web站點保存在用戶瀏覽器上,它包含有用戶的相關信息,無論何時當用戶通過客戶端的瀏覽器連結到伺服器時,Web站點都可以訪問cookie信息。
當web站點需要進行流量的分析統計時,需要對cookie的訪問進行去重,以此避免同一用戶多次訪問該站點而被誤統計為不同用戶造成統計結果的不準確。現有技術中,在對訪問的cookie進行去重時,主要採用對cookie中的欄位逐一進行比較的方式,由於不同會話中cookie只有部分關鍵欄位是一致的,且不同網站的cookie關鍵欄位可能不同,由此導致了該處理方式的無效數據較多,處理效率低下,效果不夠理想。
技術實現要素:
本發明提供一種cookie訪問去重方法和裝置,以實現對cookie訪問的高效去重,同時去重效果較理想。
第一方面,本發明實施例提供了一種cookie訪問去重方法,包括:
讀取配置信息,根據所述配置信息構建映射鍊表K;
抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位;
通過所述配置信息對所述cookie欄位進行過濾,並生成節點N;
依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點。
可選的是,抓取網卡數據包,並解析出所述數據包中的cookie欄位包括:
抓取網卡數據包,過濾出所述網卡數據包中的上行數據,並解析出所述上行數據中的cookie欄位。
在上述任一方案中可選的是,依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點包括:
將所述節點N的時間戳和所述映射鍊表K中節點的時間戳進行比對,以刪除所述映射鍊表K中的過期節點;
若所述映射鍊表K中節點不存在所述節點N中的值,則將所述節點N插入到所述映射鍊表K中。
在上述任一方案中可選的是,在讀取配置信息,根據所述配置信息構建映射鍊表K之前,還包括:
構建包含有預設cookie關鍵欄位的配置信息。
在上述任一方案中可選的是,通過所述配置信息對所述cookie欄位進行過濾包括:
將所述cookie欄位拆分為key-value欄位,依據所述配置信息中的預設coolie關鍵欄位對所述cookie欄位進行過濾,並將過濾結果保存至內存中。
第二方面,本發明實施例還提供了一種cookie訪問去重裝置,包括:
讀取模塊,用於讀取配置信息;
映射鍊表構建模塊,用於根據所述配置信息構建映射鍊表K;
解析模塊,用於抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位;
過濾模塊,用於通過所述配置信息對所述cookie欄位進行過濾,並生成節點N;
更新模塊,用於依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點。
可選的是,所述解析模塊具體用於:
抓取網卡數據包,過濾出所述網卡數據包中的上行數據,並解析出所述上行數據中的cookie欄位。
在上述任一方案中可選的是,所述更新模塊具體用於:
將所述節點N的時間戳和所述映射鍊表K中節點的時間戳進行比對,以刪除所述映射鍊表K中的過期節點;
若所述映射鍊表K中節點不存在所述節點N中的值,則將所述節點N插入到所述映射鍊表K中。
在上述任一方案中可選的是,還包括:
配置信息構建模塊,用於構建包含有預設cookie關鍵欄位的配置信息。
在上述任一方案中可選的是,所述過濾模塊具體用於:
將所述cookie欄位拆分為key-value欄位,依據所述配置信息中的預設coolie關鍵欄位對所述cookie欄位進行過濾,並將過濾結果保存至內存中。
本發明通過讀取配置信息,根據所述配置信息構建映射鍊表K,抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位,通過所述配置信息對所述cookie欄位進行過濾,並生成節點N,依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點,解決了在對訪問的cookie進行去重時,主要採用對cookie中的欄位進行比較的方式導致的需要處理的無效數據較多,處理效率低下,效果不夠理想問題,實現了對cookie訪問的高效去重,同時去重效果較理想效果。
附圖說明
圖1為本發明實施例一提供的cookie訪問去重方法的流程圖;
圖2為本發明實施例二提供的cookie訪問去重方法的流程圖;
圖3為本發明實施例三提供的cookie訪問去重方法的流程圖;
圖4為本發明實施例四提供的cookie訪問去重裝置的結構圖;
圖5為本發明實施例五提供的cookie訪問去重方法的流程圖。
具體實施方式
下面結合附圖和實施例對本發明作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用於解釋本發明,而非對本發明的限定。另外還需要說明的是,為了便於描述,附圖中僅示出了與本發明相關的部分而非全部結構。
實施例一
圖1為本發明實施例一提供的cookie訪問去重方法的流程圖,本實施例可適用於網站站點對用戶訪問情況進行統計的場景,該方法可以由計算設備如伺服器來執行,具體包括如下步驟:
步驟101、讀取配置信息,根據所述配置信息構建映射鍊表K。
其中,該配置信息用來對web應用的屬性進行配置。示例性的,該配置信息可以是xml配置文件,可以包括如下內容:環境參數初始化、Servlet配置、過濾器配置、監聽器配置、JNDI配置、Session配置、JSP網頁相關配置、MIME TYPE配置、welcome文件清單和錯誤處理等。其中,該映射鍊表K主要用於後續的查詢操作,該映射鍊表K保存數據的原理可以是將key值做hash再取餘,餘數落在數組的不同索引中,利用數組的索引獲取元素,時間複雜度為O(1),該映射鍊表K的引入提高了後續cookie訪問信息查詢去重的效率。示例性的,該映射鍊表K中的各個節點保存有cookie關鍵欄位信息以及對應的時間戳。
步驟102、抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位。
本步驟中,對網卡發送的數據包進行抓取,並通過對數據包的分析確定出cookie的欄位。示例性的,當用戶訪問站點瀏覽網頁時,首先需要發送對網頁的請求至伺服器,該請求可通過數據包的形式發送,此時cookie也將伴隨該請求被一起發送至伺服器。
步驟103、通過所述配置信息對所述cookie欄位進行過濾,並生成節點N。
其中,該配置信息包含有預設cookie關鍵欄位,該預設cookie關鍵欄位可由不同的網站索引規則確定,當通過所述配置信息對所述cookie欄位進行過濾後,僅保留下了需要比對查詢的欄位,並相應的生成節點N。本步驟中,可通過一份配置信息來滿足不同網站對cookie過濾的需求,解決了各個網站之間過濾規則不統一的問題,具備良好的兼容性。
步驟104、依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點。
本步驟中,將節點N和映射鍊表K中的節點進行比對。示例性的,當映射鍊表K中有節點M的值和節點N中對應的值相等時,則比較M節點的時間戳和N節點的時間戳,若M節點的時間戳早於N節點的時間戳,則相應刪除過期的節點M,以此完成cookie訪問的去重。相應的,若映射鍊表K中的節點的值並不存在和節點N中值一致的情況,則將節點N插入到映射鍊表K中,並同時寫入到cookie文件中。
本實施例的技術方案,通過讀取配置信息,根據所述配置信息構建映射鍊表K,抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位,通過所述配置信息對所述cookie欄位進行過濾,並生成節點N,依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點,解決了在對訪問的cookie進行去重時,主要採用對cookie中的欄位進行比較的方式導致的需要處理的無效數據較多,處理效率低下,效果不夠理想問題,實現了對cookie訪問的高效去重,同時去重效果較理想效果。
在上述技術方案的基礎上,抓取網卡數據包,並解析出所述數據包中的cookie欄位包括:抓取網卡數據包,過濾出所述網卡數據包中的上行數據,並解析出所述上行數據中的cookie欄位。其中該上行數據指各個客戶端發送至伺服器的數據。具體的,當客戶端的瀏覽器訪問了伺服器站點的頁面時,伺服器站點則設置一cookie,並將這個cookie和頁面一起返回給客戶端瀏覽器,客戶端瀏覽器接到cookie之後對其進行保存,當客戶端瀏覽器再訪問其他頁面時會同時帶上該cookie文件,伺服器站點接到請求時則讀出cookie的值,根據cookie值的內容就可以判斷和恢復一些用戶的信息狀態。
示例性的,cookie本身由名稱、內容、作用路徑、作用域、協議和生存周期等組成。本步驟中,在接收到網卡數據包時,通過過濾出網卡的上行數據後解析出cookie欄位可直接用於後續cookie的去重,提高了去重效率。
實施例二
圖2為本發明實施例二提供的cookie訪問去重方法的流程圖,本實施例在實施例一的基礎上,給出了一種具體的依據節點N和映射鍊表K進行去重的方式,具體包括如下:
步驟201、讀取配置信息,根據所述配置信息構建映射鍊表K。
步驟202、抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位。
步驟203、通過所述配置信息對所述cookie欄位進行過濾,並生成節點N。
步驟204、判斷所述映射鍊表K中節點是否存在所述節點N中的值,若存在則執行步驟205,否則執行步驟206。
步驟205、將所述節點N的時間戳和所述映射鍊表K中節點的時間戳進行比對,以刪除所述映射鍊表K中的過期節點。其中,時間戳為一字符序列,可對某一時刻進行唯一標識。
步驟206、將所述節點N插入到所述映射鍊表K中。
本實施例的技術方案,通過讀取配置信息,根據所述配置信息構建映射鍊表K,抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位,通過所述配置信息對所述cookie欄位進行過濾,並生成節點N,若所述映射鍊表K中節點存在所述節點N中的值,則將所述節點N的時間戳和所述映射鍊表K中節點的時間戳進行比對,以刪除所述映射鍊表K中的過期節點,若所述映射鍊表K中節點不存在所述節點N中的值,則將所述節點N插入到所述映射鍊表K中,通過將節點N和映射鍊表K中的節點進行比對以完成過期節點的刪除,提高了cookie的去重效率。
在上述技術方案的基礎上,在讀取配置信息,根據所述配置信息構建映射鍊表K之前,還包括:構建包含有預設cookie關鍵欄位的配置信息。其中,不同門類的網站如搜狐、新浪、百度等,其各自的cookie欄位內容的設置均不相同,本方案中,可根據不同門類網站的cookie欄位設置相應的構建包含預設cookie關鍵欄位的配置信息,該預設關鍵欄位即由不同門類網站自身的設置規則確定。本方案中,可通過一份編碼的配置信息來解決不同門類網站的cookie過濾去重,提高了cookie去重的適應性及應用範圍。
實施例三
圖3所示為本發明實施例三提供的cookie訪問去重的流程圖,本實施例在上述各實施例的基礎上,給出了一種具體的通過配置信息對cookie欄位進行過濾的方式,具體包括如下:
步驟301、讀取配置信息,根據所述配置信息構建映射鍊表K。
步驟302、抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位。
步驟303、將所述cookie欄位拆分為key-value欄位,依據所述配置信息中的預設cookie關鍵欄位對所述cookie欄位進行過濾,並將過濾結果保存至內存中,並生成節點N。
其中,key-value欄位即為鍵-值欄位,key代表主鍵,value為對應該主鍵的值。本步驟中,在步驟302解析出cookie欄位後直接進行cookie欄位的過濾,即解碼同時進行過濾,減少了後續需要比對的欄位數量,提高了cookie的去重效率。
步驟304、依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點。
本實施例的技術方案,通過讀取配置信息,根據所述配置信息構建映射鍊表K,抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位,將所述cookie欄位拆分為key-value欄位,依據所述配置信息中的預設cookie關鍵欄位對所述cookie欄位進行過濾,並將過濾結果保存至內存中,並生成節點N,依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點,減少了去重過程中的比對欄位,極大的提高了cookie去重的效率,降低了內存的使用率。
實施例四
圖4為本發明實施例四提供的cookie訪問去重裝置的結構圖,具體包括:
讀取模塊1,用於讀取配置信息;
映射鍊表構建模塊2,用於根據所述配置信息構建映射鍊表K;
解析模塊3,用於抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位;
過濾模塊4,用於通過所述配置信息對所述cookie欄位進行過濾,並生成節點N;
更新模塊5,用於依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點。
本實施例的技術方案,通過讀取配置信息,根據所述配置信息構建映射鍊表K,抓取網卡數據包,並解析出所述網卡數據包中的cookie欄位,通過所述配置信息對所述cookie欄位進行過濾,並生成節點N,依據所述節點N和所述映射鍊表K,刪除所述映射鍊表K中的過期節點,解決了在對訪問的cookie進行去重時,主要採用對cookie中的欄位進行比較的方式導致的需要處理的無效數據較多,處理效率低下,效果不夠理想問題,實現了對cookie訪問的高效去重,同時去重效果較理想效果。
在上述技術方案的基礎上,所述解析模塊3具體用於:
抓取網卡數據包,過濾出所述網卡數據包中的上行數據,並解析出所述上行數據中的cookie欄位。
在上述技術方案的基礎上,所述更新模塊5具體用於:
將所述節點N的時間戳和所述映射鍊表K中節點的時間戳進行比對,以刪除所述映射鍊表K中的過期節點;
若所述映射鍊表K中節點不存在所述節點N中的值,則將所述節點N插入到所述映射鍊表K中。
在上述技術方案的基礎上,還包括:
配置信息構建模塊,用於構建包含有預設cookie關鍵欄位的配置信息。
在上述技術方案的基礎上,所述過濾模塊4具體用於:
將所述cookie欄位拆分為key-value欄位,依據所述配置信息中的預設coolie關鍵欄位對所述cookie欄位進行過濾,並將過濾結果保存至內存中。
上述產品可執行本發明任意實施例所提供的方法,具備執行方法相應的功能模塊和有益效果。
實施例五
圖5為本發明實施例五提供的cookie訪問去重方法的流程圖。本實施例可以以上述實施例為基礎,提供了一種優選實例,具體包括如下:
步驟501、啟動程序,讀取xml配置信息,構建map-list表K。
步驟502、抓取網卡數據包,過濾出http上行數據,解析出其中的cookie欄位。
步驟503、依據xml配置信息過濾cookie,若失敗則執行步驟502,若成功則相應生成節點N,執行步驟504。
步驟504、在列表K中查詢節點N,若查找成功則執行步驟505,查找失敗則執行步驟506。
步驟505、將所述節點N中的時間戳和列表K中節點的時間戳進行比對,刪除過期節點。
步驟506、將所述節點N插入到列表K中,並寫入cookie文件中。
本實施例的技術方案中,可通過配置的xml文件實現一份代碼對多個不同網站cookie的過濾,解碼同時進行數據過濾,減少了cookie欄位的比對,提高了cookie的去重效率,降低了內存佔用率。
注意,上述僅為本發明的較佳實施例及所運用技術原理。本領域技術人員會理解,本發明不限於這裡所述的特定實施例,對本領域技術人員來說能夠進行各種明顯的變化、重新調整和替代而不會脫離本發明的保護範圍。因此,雖然通過以上實施例對本發明進行了較為詳細的說明,但是本發明不僅僅限於以上實施例,在不脫離本發明構思的情況下,還可以包括更多其他等效實施例,而本發明的範圍由所附的權利要求範圍決定。