<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          探討瀏覽器指紋(科普)

          共 3100字,需瀏覽 7分鐘

           ·

          2021-04-14 02:46

          一、什么是瀏覽器指紋?

          我們常說的指紋,都是指人們手指上的指紋,因具有唯一性,所以可以被用來標(biāo)識(shí)一個(gè)人的唯一身份。而瀏覽器指紋是指僅通過瀏覽器的各種信息,如CPU核心數(shù)、顯卡信息、系統(tǒng)字體、屏幕分辨率、瀏覽器插件等組合成的一個(gè)字符串,就能近乎絕對(duì)定位一個(gè)用戶,就算使用瀏覽器的隱私窗口模式,也無法避免。

          這是一個(gè)被動(dòng)的識(shí)別方式。也就是說,理論上你訪問了某一個(gè)網(wǎng)站,那么這個(gè)網(wǎng)站就能識(shí)別到你,雖然不知道你是誰,但你有一個(gè)唯一的指紋,將來無論是廣告投放、精準(zhǔn)推送、安全防范,還是其他一些關(guān)于隱私的事情,都非常方便。

          二、實(shí)現(xiàn)瀏覽器指紋的技術(shù)點(diǎn)有哪些?

          1、基本指紋

          瀏覽器基本指紋是任何瀏覽器都具有的特征標(biāo)識(shí),比如屏幕分辨率、硬件類型、操作系統(tǒng)、用戶代理(User agent)、系統(tǒng)字體、語言、瀏覽器插件 、瀏覽器擴(kuò)展、瀏覽器設(shè)置 、時(shí)區(qū)差等眾多信息,這些指紋信息“類似”人類的身高、年齡等,有很大的沖突概率,只能作為輔助識(shí)別??梢栽谠摼W(wǎng)址進(jìn)行查看本地瀏覽器的基本特征,https://www.whatismybrowser.com/

          2、高級(jí)指紋

          瀏覽器高級(jí)指紋與基本指紋的區(qū)別是,基本指紋就像是人的外貌特征,外貌可以用男女、身高、體重區(qū)分,然而這些特征不能對(duì)某個(gè)人進(jìn)行唯一性標(biāo)識(shí),僅使用基本指紋也無法對(duì)客戶端進(jìn)行唯一性判定,基于HTML5的諸多高級(jí)功能就能生成高級(jí)指紋了。

          Canvas指紋

          說到高級(jí)指紋,不得不提Canvas指紋,Canvas(畫布)是HTML5中一種動(dòng)態(tài)繪圖的標(biāo)簽,可以使用其生成甚至處理高級(jí)圖片。

          Canvas指紋的原理大致如下:

          相同的HTMLCanvasElement元素繪制操作,在不同操作系統(tǒng)、不同瀏覽器上,產(chǎn)生的圖片內(nèi)容不完全相同。在圖片格式上,不同瀏覽器使用了不同的圖形處理引擎、不同的圖片導(dǎo)出選項(xiàng)、不同的默認(rèn)壓縮級(jí)別等。在像素級(jí)別來看,操作系統(tǒng)各自使用了不同的設(shè)置和算法來進(jìn)行抗鋸齒和子像素渲染操作。即使相同的繪圖操作,產(chǎn)生的圖片數(shù)據(jù)的CRC檢驗(yàn)也不相同。Canvas幾乎已被所有主流瀏覽器支持,可以通過大部分的PC、平板、智能手機(jī)訪問。

          在線測(cè)試地址:https://www.browserleaks.com/canvas,可查看瀏覽器的Canvas唯一性字符串。

          WebGL指紋

          通過HTMLCanvasElement元素可以獲取到Webgl對(duì)象(canvas.getContext("webgl")),通過此對(duì)象可以獲取到用戶的硬件信息,比如顯卡名稱、顯卡型號(hào)、顯卡制造商等,比如:ANGLE (NVIDIA GeForce GTX 1050 Ti Direct3D11 vs50 ps50),Google Inc.。

          由于硬件一般是不會(huì)隨意更換的,有些是電腦買來到電腦報(bào)廢就沒更換過硬件,電腦硬件種類也比較多,雖然非常大的碰撞率,但是依然可以被用來當(dāng)做用戶指紋的一部分,收集用戶的信息也多,就越能代表用戶的唯一指紋,這點(diǎn)不可忽視。

          AudioContext指紋

          HTML5提供給JavaScript編程用的Audio API則讓開發(fā)者有能力在代碼中直接操作原始的音頻流數(shù)據(jù),對(duì)其進(jìn)行任意生成、加工、再造,諸如提高音色,改變音調(diào),音頻分割等多種操作,甚至可稱為網(wǎng)頁版的Adobe Audition。

          AudioContext指紋原理大致如下:

          方法一:生成音頻信息流(三角波),對(duì)其進(jìn)行FFT變換,計(jì)算SHA值作為指紋。

          方法二:生成音頻信息流(正弦波),進(jìn)行動(dòng)態(tài)壓縮處理,計(jì)算MD5值。

          兩種方法都是在音頻輸出到音頻設(shè)備之前進(jìn)行清除,用戶根本就毫無察覺就被獲取了指紋。

          AudioContext指紋基本原理:

          主機(jī)或?yàn)g覽器硬件或軟件的細(xì)微差別,導(dǎo)致音頻信號(hào)的處理上的差異,相同器上的同款瀏覽器產(chǎn)生相同的音頻輸出,不同機(jī)器或不同瀏覽器產(chǎn)生的音頻輸出會(huì)存在差異。

          從上可以看出AudioContext和Canvas指紋原理很類似,都是利用硬件或軟件的差異,前者生成音頻,后者生成圖片,然后計(jì)算得到不同哈希值來作為標(biāo)識(shí)。音頻指紋測(cè)試地址:https://audiofingerprint.openwpm.com

          WebRTC指紋

          WebRTC(網(wǎng)頁實(shí)時(shí)通信,Web Real Time Communication),是可以讓瀏覽器有音視頻實(shí)時(shí)通信的能力,它提供了三個(gè)主要的API來讓JS可以實(shí)時(shí)獲取和交換音視頻數(shù)據(jù),MediaStream、RTCPeerConnection和RTCDataChannel。當(dāng)然如果要使用WebRTC獲得通信能力,用戶的真實(shí)ip就得暴露出來(NAT穿透),所以RTCPeerConnection就提供了這樣的API,直接使用JS就可以拿到用戶的IP地址。用戶的內(nèi)網(wǎng)IP地址也是大多數(shù)情況下不會(huì)改變,所以也是可以用來當(dāng)做用戶指紋的其中一個(gè)因子。

          綜合指紋

          上面幾點(diǎn)都說了瀏覽器指紋大致有哪些,還沒有完全說完,只是一部分,但是零散的指紋信息并不能真正的定位到唯一用戶,并不能用來代表一個(gè)用戶的唯一身份(用戶指紋)。

          綜合指紋是指將所有的用戶瀏覽器信息組合起來,就可以近乎99%以上的準(zhǔn)確率定位標(biāo)識(shí)用戶,綜合指紋大致有如下:

          • 基本指紋(UserAgent、屏幕分辨率、CPU核心數(shù)、內(nèi)存大小、插件信息、語言等)

          • 高級(jí)指紋部分(Canvas指紋、Webgl指紋、AudioContext指紋、WebRTC指紋、字體指紋等)

          • 地理位置、時(shí)區(qū)、DNS、SSL證書等信息。

          將以上幾點(diǎn)組合起來就可以生成綜合指紋(用戶指紋),就可以達(dá)到前面說的99%以上可以定位唯一用戶。

          如何防止被生成“用戶指紋”?

          前面我們說了一大堆網(wǎng)站如何使用各種技術(shù)來“生成”用戶指紋,來標(biāo)識(shí)唯一用戶,那么下面我們來說說,如何避免被網(wǎng)站“生成”唯一用戶指紋。

          常用的手段是,通過瀏覽器的擴(kuò)展插件,阻止網(wǎng)站獲取各種信息,或者返回個(gè)假的數(shù)據(jù),這種方式是在網(wǎng)頁加載前就執(zhí)行一段JS代碼,更改、重寫、HOOK了js的各個(gè)函數(shù)來實(shí)現(xiàn)的,因?yàn)镴S的靈活性給這種方式提供的可能。但是這種方式始終是表層的,使用JS修改是能防止大部分網(wǎng)站的生成唯一指紋,但是是有手段可以檢測(cè)出來是否“作弊”的。

          更好的手段是從瀏覽器底層做處理,從瀏覽器底層修改API使得這些在js層獲取的信息并不唯一,不管如何組合都不能生成一個(gè)唯一的代表用戶的指紋。比如:貓頭鷹瀏覽器

          貓頭鷹瀏覽器是基于chromium代碼修改編譯的瀏覽器,從底層對(duì)各種API做了修改,可以交給用戶自定義返回各種數(shù)據(jù),比如Canvas、Webgl、AudioContext、WebRTC、字體、UserAgent、屏幕分辨率、CPU核心數(shù)、內(nèi)存大小、插件信息、語言等信息,這樣就可以完全避免被“生成”唯一用戶指紋了。

          5、常用檢測(cè)網(wǎng)站

          • BrowserLeaks - Web Browser Fingerprinting - Browsing Privacy

          • 瀏覽器環(huán)境校驗(yàn)

          • AmIUnique

          關(guān)于本文 作者:@隱心 原文:https://zhuanlan.zhihu.com/p/282922459

          END



          如果覺得這篇文章還不錯(cuò)
          點(diǎn)擊下面卡片關(guān)注我
          來個(gè)【分享、點(diǎn)贊、在看】三連支持一下吧

             “分享、點(diǎn)贊在看” 支持一波  

          瀏覽 81
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲一级一射欧美999 | 欧美操逼免费观看 | 成年人视频中文字幕在线播放 | 操操AV影音 | 日本少妇翔田千里 |