本發(fā)明涉及一種基于瀏覽器指紋差異度的回訪用戶識(shí)別算法。
背景技術(shù):
瀏覽器指紋主要用于用戶追蹤、身份認(rèn)證、用戶識(shí)別等領(lǐng)域。瀏覽器指紋是一種基于瀏覽器信息組合的識(shí)別方法,通過(guò)瀏覽器平臺(tái)從配置信息、軟件組成以及硬件組成等層次上獲取到設(shè)備的屏幕信息、插件信息、字體信息等特征參數(shù),并組合形成可以唯一識(shí)別用戶的指紋數(shù)據(jù)。其中,采集的指紋特征參數(shù)是用戶的固有的狀態(tài)信息,而不是用戶的隱私信息。
目前就瀏覽器指紋技術(shù)取得了以下研究成果:Peter Eckersley等人提出了一種與cookie功能相似的用戶識(shí)別方法,稱之為瀏覽器指紋,并通過(guò)實(shí)驗(yàn)驗(yàn)證了瀏覽器指紋具有較高的識(shí)別率。Nikiforakis等人對(duì)三大商業(yè)指紋算法中的特征參數(shù)獲取方式進(jìn)行了對(duì)比分析,發(fā)現(xiàn)限制Flash與JavaScript的功能能夠有效的抑制指紋生成,進(jìn)而提出了干擾瀏覽器指紋生成的方法。Keaton Movwery等人提出了一種結(jié)合了HTML5的API與Javascript優(yōu)勢(shì)的指紋識(shí)別方法,實(shí)現(xiàn)了基于HTML 5的指紋識(shí)別,其中最典型HTML5指紋方式為帆布指紋。另外JavaScript引擎指紋這一技術(shù),由于不同瀏覽器的JavaScript引擎的具有細(xì)微的區(qū)別,因此可利用微小的差異制作指紋?,F(xiàn)有技術(shù)中還有通過(guò)逐位比較指紋間字符串的相似度,在一定的相似范圍內(nèi),則認(rèn)為指紋為回訪用戶的更新指紋。
綜之,當(dāng)前文獻(xiàn)主要研究不同類型的瀏覽器指紋的工作原理及干擾指紋生成的方法,較少有文獻(xiàn)關(guān)注特征參數(shù)變化后導(dǎo)致指紋靜態(tài)匹配的方式無(wú)法完全識(shí)別回訪用戶的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于瀏覽器指紋差異度的回訪用戶識(shí)別算法,通過(guò)8個(gè)指紋特征參數(shù)比較瀏覽器指紋之間的差異度,有效地識(shí)別網(wǎng)站的回訪用戶。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:一種基于瀏覽器指紋差異度的回訪用戶識(shí)別算法,其特征在于,包括以下步驟:
步驟S1:采集指紋特征參數(shù)并利用哈希函數(shù)制作指紋;
步驟S2:判斷所述指紋在指紋庫(kù)中是否存在,若存在,判定該指紋為回訪用戶的指紋,否則進(jìn)行步驟S3;
步驟S3:逐一計(jì)算所述指紋與指紋庫(kù)中所有指紋的全局差異度值;
步驟S4:若存在某一全局差異度值小于閾值,則判定所述指紋為回訪用戶的升級(jí)指紋,并將指紋庫(kù)中與該全局差異度值對(duì)應(yīng)的現(xiàn)有指紋更新為所述升級(jí)指紋;否則判定所述指紋為新用戶的指紋,并將所述指紋存入指紋庫(kù)中。
進(jìn)一步的,所述全局差異度值的計(jì)算方法如下:
其中,D(BF1,BF2)表示指紋BF1和指紋BF2的全局差異度值;d(attri(BF1,BF2))表示特征參數(shù)差異度,i取1至8時(shí),分別代表User agent差異度、插件信息差異度、字體信息差異度、屏幕分辨率差異度、時(shí)區(qū)差異度、HTTP Accept差異度、video差異度和Cookie差異度;Wattri表示每個(gè)特征參數(shù)差異度的權(quán)重,其取值為對(duì)應(yīng)特征參數(shù)的信息熵。
進(jìn)一步的,所述User agent差異度由瀏覽器相關(guān)數(shù)據(jù)差異度和設(shè)備體系結(jié)構(gòu)差異度兩部分組成:
d(attr1(BF1,BF2))=0.5×Fbr+0.5×Farchi
其中,F(xiàn)br為瀏覽器相關(guān)數(shù)據(jù)差異度,F(xiàn)archi為設(shè)備體系結(jié)構(gòu)差異度,為指紋BF1的瀏覽器名稱,為指紋BF2的瀏覽器名稱,為指紋BF1的瀏覽器版本號(hào),為指紋BF2的瀏覽器版本號(hào);d(attr1(BF1,BF2))為指紋BF1和指紋BF2的User agent差異度。
進(jìn)一步的,所述插件信息差異度的具體計(jì)算方法如下:令指紋BF1的插件列表為L(zhǎng)P(BF1)、指紋BF2的插件列表為L(zhǎng)P(BF2),則:
FU=|(LP(BF1)\(LP(BF1)∩LP(BF2)))∪LP(BF2)|
其中,F(xiàn)U為指紋BF1與指紋BF2的兩個(gè)插件列表中的插件總數(shù);
對(duì)于指紋BF1與指紋BF2,計(jì)算兩插件列表中特有的插件的比例,其結(jié)果分別用F1和F2表示,求解過(guò)程如下:
其中,LP=name,=ver表示插件列表LP中插件名稱與插件版本號(hào)一致的插件數(shù),LP=name,≠ver表示插件列表LP中插件名稱相同,插件版本號(hào)不同的插件數(shù);
計(jì)算LP(BF1)與LP(BF2)兩插件列表中插件名稱相同,插件版本號(hào)不同的插件比例并用F3表示,求解過(guò)程如下:
計(jì)算LP(BF1)與LP(BF2)兩插件列表中插件名稱與版本號(hào)都相同的插件比例并用表示F4,求解過(guò)程如下:
對(duì)于指紋BF1和指紋BF2,其插件信息差異度d(attr2(BF1,BF2))的求解如下:
進(jìn)一步的,所述字體信息差異度的具體計(jì)算方法如下:令指紋BF1的字體列表為L(zhǎng)F(BF1),指紋BF2的字體列表為L(zhǎng)F(BF2),則:
FU=|(LF(BF1)\(LF(BF1)∩LF(BF2)))∪LF(BF2)|
其中,F(xiàn)U指紋BF1與指紋BF2的兩個(gè)字體列表中的字體總數(shù);
字體列表LF(BF1)和字體列表LF(BF2)中特有的字體的比例分別用F1和F2表示,求解過(guò)程如下:
字體列表LF(BF1)和字體列表LF(BF2)中相同字體的比例用F3表示,,求解過(guò)程如下:
對(duì)于指紋BF1和指紋BF2,其字體信息差異度d(attr3(BF1,BF2))的求解如下:
進(jìn)一步的,所述屏幕分辨率差異度、時(shí)區(qū)差異度、HTTP Accept差異度、video差異度和Cookie差異度的具體計(jì)算方法如下:
其中,x為自然數(shù)且4≤x≤8;當(dāng)x=4時(shí),d(attr4(BF1,BF2))表示屏幕分辨率差異度,attr4(BF1)表示指紋BF1中特征參數(shù)之屏幕分辨率,attr4(BF2)表示表示指紋BF2的屏幕分辨率;當(dāng)x=5時(shí),d(attr5(BF1,BF2))表示時(shí)區(qū)差異度,attr5(BF1)表示指紋BF1的時(shí)區(qū)參數(shù),attr5(BF2)表示指紋BF2的時(shí)區(qū)參數(shù);當(dāng)x=6,d(attr6(BF1,BF2)),表示HTTP Accept差異度,attr6(BF1)表示指紋BF1的HTTP Accept參數(shù),attr6(BF2)表示指紋BF2的HTTP Accept參數(shù);當(dāng)x=7時(shí),d(attr7(BF1,BF2))表示video差異度,attr7(BF1)表示指紋BF1的video參數(shù),attr7(BF2)表示指紋BF2的video參數(shù);當(dāng)x=8時(shí),d(attr8(BF1,BF2))表示Cookie差異度,attr8(BF1)表示指紋BF1的Cookie參數(shù),attr8(BF2)指紋BF2的Cookie參數(shù)
進(jìn)一步的,所述特征參數(shù)的信息熵的計(jì)算方法如下:令一個(gè)瀏覽器指紋算法為BF(·),給定一個(gè)新的瀏覽器信息x,生成一個(gè)瀏覽器指紋BF(x),其離散概率密度函數(shù)為P(fn),n∈[0,1,...,N];則對(duì)于特征參數(shù)a,其信息熵為:
其中,fn=BF(x)表示一個(gè)瀏覽器指紋。
進(jìn)一步的,所述閾值為0.025、0.05或0.1。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下有益效果:本發(fā)明首先定義了8個(gè)指紋特征參數(shù)的局部差異度計(jì)算方法,加權(quán)求和得到衡量?jī)蓚€(gè)指紋之間差異度的公式,接著,將求得的全局差異度值與預(yù)先設(shè)定的閾值做對(duì)比,進(jìn)而判斷用戶是否為回訪用戶;不僅能夠提高回訪用戶識(shí)別算法的識(shí)別率,同時(shí)還能夠降低識(shí)別的誤判率。
附圖說(shuō)明
圖1是本發(fā)明的方法總流程圖。
圖2是本發(fā)明不同差異度閾值下的指紋識(shí)別率。
圖3是本發(fā)明不同差異度閾值下的指紋誤判率。
具體實(shí)施方式
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
請(qǐng)參照?qǐng)D1,本發(fā)明提供一種基于瀏覽器指紋差異度的回訪用戶識(shí)別算法,其特征在于,包括以下步驟:
步驟S1:采集指紋特征參數(shù)并利用哈希函數(shù)制作指紋;
步驟S2:判斷所述指紋在指紋庫(kù)中是否存在,若存在,判定該指紋為回訪用戶的指紋,否則進(jìn)行步驟S3;
步驟S3:逐一計(jì)算所述指紋與指紋庫(kù)中所有指紋的全局差異度值;
步驟S4:若存在某一全局差異度值小于閾值(所述閾值為0.025、0.05或0.1),則判定所述指紋為回訪用戶的升級(jí)指紋,并將指紋庫(kù)中與該全局差異度值對(duì)應(yīng)的現(xiàn)有指紋更新為所述升級(jí)指紋;否則判定所述指紋為新用戶的指紋,并將所述指紋存入指紋庫(kù)中。
進(jìn)一步的,所述全局差異度值的計(jì)算方法如下:
其中,D(BF1,BF2)表示指紋BF1和指紋BF2的全局差異度值,取值區(qū)間為[0,1],若指紋BF1和指紋BF2完全一致,函數(shù)值為0,若兩者完全不同則函數(shù)值為1;d(attri(BF1,BF2))表示特征參數(shù)差異度,i取1至8時(shí),分別代表User agent差異度、插件信息差異度、字體信息差異度、屏幕分辨率差異度、時(shí)區(qū)差異度、HTTP Accept差異度和Cookie差異度;表示每個(gè)特征參數(shù)差異度的權(quán)重,其取值為對(duì)應(yīng)特征參數(shù)的信息熵。
進(jìn)一步的,所述User agent差異度由瀏覽器相關(guān)數(shù)據(jù)差異度和設(shè)備體系結(jié)構(gòu)差異度兩部分組成:
d(attr1(BF1,BF2))=0.5×Fbr+0.5×Farchi
其中,F(xiàn)br為瀏覽器相關(guān)數(shù)據(jù)差異度,F(xiàn)archi為設(shè)備體系結(jié)構(gòu)差異度,為指紋BF1的瀏覽器名稱,為指紋BF2的瀏覽器名稱,為指紋BF1的瀏覽器版本號(hào),為指紋BF2的瀏覽器版本號(hào);d(attr1(BF1,BF2))為指紋BF1和指紋BF2的User agent差異度;指紋BF1和指紋BF2的瀏覽器名稱和版本號(hào)完全一致時(shí),F(xiàn)br取值為0;若瀏覽器名稱相同而版本號(hào)不一致,F(xiàn)br則取值為0.125;若兩者完全不同,取值為1;Farchi的取值原理與Fbr相同。
差異度函數(shù)d(attr1(BF1,BF2))取值區(qū)間為[0,1]。若指紋BF1和指紋BF2的User agent完全相同,函數(shù)值則為0,若兩指紋的User agent完全不同,函數(shù)值則為1。
進(jìn)一步的,所述插件信息差異度的具體計(jì)算方法如下:令指紋BF1的插件列表為L(zhǎng)P(BF1)、指紋BF2的插件列表為L(zhǎng)P(BF2),則:
FU=|(LP(BF1)\(LP(BF1)∩LP(BF2)))∪LP(BF2)|
其中,F(xiàn)U為指紋BF1與指紋BF2的兩個(gè)插件列表中的插件總數(shù);
對(duì)于指紋BF1與指紋BF2,計(jì)算兩插件列表中特有的插件的比例,其結(jié)果分別用F1和F2表示,求解過(guò)程如下:
其中,LP=name,=ver表示插件列表LP中插件名稱與插件版本號(hào)一致的插件數(shù),LP=name,≠ver表示插件列表LP中插件名稱相同,插件版本號(hào)不同的插件數(shù);
計(jì)算LP(BF1)與LP(BF2)兩插件列表中插件名稱相同,插件版本號(hào)不同的插件比例并用F3表示,求解過(guò)程如下:
計(jì)算LP(BF1)與LP(BF2)兩插件列表中插件名稱與版本號(hào)都相同的插件比例并用表示F4,求解過(guò)程如下:
對(duì)于指紋BF1和指紋BF2,其插件信息差異度d(attr2(BF1,BF2))的求解如下:
差異度函數(shù)d(attr2(BF1,BF2))取值區(qū)間為[0,1]。若指紋BF1與BF2的插件列表完全相同,差異度值則為0,若兩指紋的插件信息完全不同,差異度值則為1。
進(jìn)一步的,所述字體信息差異度的具體計(jì)算方法如下:令指紋BF1的字體列表為L(zhǎng)F(BF1),指紋BF2的字體列表為L(zhǎng)F(BF2),則:
FU=|(LF(BF1)\(LF(BF1)∩LF(BF2)))∪LF(BF2)|
其中,F(xiàn)U指紋BF1與指紋BF2的兩個(gè)字體列表中的字體總數(shù);
字體列表LF(BF1)和字體列表LF(BF2)中特有的字體的比例分別用F1和F2表示,求解過(guò)程如下:
字體列表LF(BF1)和字體列表LF(BF2)中相同字體的比例用F3表示,,求解過(guò)程如下:
對(duì)于指紋BF1和指紋BF2,其字體信息差異度d(attr3(BF1,BF2))的求解如下:
差異度函數(shù)d(attr3(BF1),attr3(BF2))取值區(qū)間為[0,1]。
進(jìn)一步的,所述屏幕分辨率差異度、時(shí)區(qū)差異度、HTTP Accept差異度、video差異度和Cookie差異度的具體計(jì)算方法如下:
其中,x為自然數(shù)且4≤x≤8;當(dāng)x=4時(shí),d(attr4(BF1,BF2))表示屏幕分辨率差異度,attr4(BF1)表示指紋BF1中特征參數(shù)之屏幕分辨率,attr4(BF2)表示表示指紋BF2的屏幕分辨率;當(dāng)x=5時(shí),d(attr5(BF1,BF2))表示時(shí)區(qū)差異度,attr5(BF1)表示指紋BF1的時(shí)區(qū)參數(shù),attr5(BF2)表示指紋BF2的時(shí)區(qū)參數(shù);當(dāng)x=6,d(attr6(BF1,BF2)),表示指紋間HTTP Accept差異度,attr6(BF1)表示指紋BF1的HTTP Accept參數(shù),attr6(BF2)表示指紋BF2的HTTP Accept參數(shù);當(dāng)x=7時(shí),d(attr7(BF1,BF2))表示指紋間video差異度,attr7(BF1)表示指紋BF1的video參數(shù),attr7(BF2)表示指紋BF2的video參數(shù);當(dāng)x=8時(shí),d(attr8(BF1,BF2))表示Cookie差異度,attr8(BF1)表示指紋BF1的Cookie參數(shù),attr8(BF2)指紋BF2的Cookie參數(shù)。差異度函數(shù)d(attrx(BF1,BF2))取值區(qū)間為[0,1]
進(jìn)一步的,所述特征參數(shù)的信息熵的計(jì)算方法如下:令一個(gè)瀏覽器指紋算法為BF(·),給定一個(gè)新的瀏覽器信息x,生成一個(gè)瀏覽器指紋BF(x),該瀏覽器指紋的離散概率密度函數(shù)為P(fn),n∈[0,1,...,N];首先,引入自信息I的概念,其定義如下所示:
I(BF(x)=fn)=-log(P(fn))
其中,自信息量I表征該瀏覽器指紋包含信息的比特?cái)?shù)。
P(fn)的信息熵H(BF)為瀏覽器指紋自信息量的期望值,其定義如下所示:
其中,H(BF)的值越大,區(qū)分不同瀏覽器的準(zhǔn)確性越高。
瀏覽器指紋是由不同的特征參數(shù)組合而成,單獨(dú)討論每個(gè)特征參數(shù)的信息量并定義指紋特征參數(shù)的信息熵。設(shè)某個(gè)指紋特征參數(shù)為a,其自信息量與信息熵計(jì)算方法分別如下所示。
I(fn,a)=-log(P(fn,a))
對(duì)于兩個(gè)相互獨(dú)立的特征參數(shù),自信息量計(jì)算可根據(jù)公式直接線性相加。
為了讓一般技術(shù)人員更好的理解本發(fā)明的技術(shù)方案,以下結(jié)合閾值的三個(gè)取值進(jìn)行進(jìn)一步說(shuō)明。
圖2中,三根曲線表示的是差異度閾值分別取值為0.025、0.05以及0.1時(shí),指紋識(shí)別率隨時(shí)間變化情況。由實(shí)驗(yàn)結(jié)果可知用戶訪問(wèn)的時(shí)間間隔越長(zhǎng),回訪用戶的識(shí)別率越低,產(chǎn)生該結(jié)果的原因是指紋特征參數(shù)的變化幅度隨著用戶回訪間隔時(shí)間增長(zhǎng)而增大。其中,差異度閾值的設(shè)定影響著回訪用戶的識(shí)別率。設(shè)定的指紋差異度閾值越大,則表示容許的指紋之間的差異程度越大,即回訪用戶識(shí)別的正確率就越低。當(dāng)指紋差異度閾值設(shè)置為0.05時(shí),時(shí)間間隔為一個(gè)月時(shí)回訪用戶的識(shí)別率可達(dá)86%以上。
誤判率是本實(shí)驗(yàn)中評(píng)估該算法執(zhí)行效果的另一指標(biāo)。其中,誤判率表示的是在回訪用戶識(shí)別過(guò)程中發(fā)生的錯(cuò)誤識(shí)別的概率。差異度閾值的設(shè)置不僅會(huì)影響回訪用戶的識(shí)別率,也會(huì)影響誤判率。其中,差異度閾值設(shè)置較大,能夠有效地降低用戶識(shí)別的誤判率,但是識(shí)別的準(zhǔn)確率也會(huì)隨之降低。而差異度閾值設(shè)置偏小,能夠有效地提高用戶的識(shí)別率,但同時(shí)也增加了誤判率。針對(duì)0.025、0.05以及0.1三種不同的差異度閾值情況下,統(tǒng)計(jì)回訪用戶識(shí)別的誤判率,其實(shí)驗(yàn)結(jié)果如圖3所示。
圖3表明,在三種不同的差異度閾值情況下,在一個(gè)月內(nèi),回訪用戶識(shí)別的誤判率隨時(shí)間間隔增長(zhǎng)而增大,但是識(shí)別的誤判率都在7%以下。
綜上所述,差異度閾值設(shè)定以及指紋差異度計(jì)算是回訪用戶識(shí)別算法中最重要的兩個(gè)環(huán)節(jié)。選擇適當(dāng)?shù)牟町惗乳撝挡粌H能夠提高回訪用戶識(shí)別算法的識(shí)別率,同時(shí)還能夠降低識(shí)別的誤判率。
以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。