<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>

          推薦一個(gè)神器,可一鍵生成瀏覽器指紋!

          共 3982字,需瀏覽 8分鐘

           ·

          2021-09-05 04:39

          下面是兩個(gè)我們平時(shí)上網(wǎng)經(jīng)常會(huì)遇到的場景:

          場景一:在網(wǎng)站上瀏覽某個(gè)商品,了解了相關(guān)的商品信息,但并沒有下單購買,甚至沒有進(jìn)行登錄操作。過兩天用同臺電腦訪問其他網(wǎng)站的時(shí)候卻發(fā)現(xiàn)很多同類商品的廣告。

          場景二:在某博客中你有多個(gè)小號(水軍),這些小號的存在就是為了刷某個(gè)帖子的熱度或者進(jìn)行輿論引導(dǎo),又或者純粹進(jìn)行流量交易,即便你在切換賬號的時(shí)候清空了cookie、本地緩存,重開路由器甚至使用vpn來進(jìn)行操作,你覺得自己足夠小心,并盡可能提高水軍的真實(shí)性,但是管理人員可能還是知道這是同一個(gè)人在操作,從而被打擊。

          在遇到這些場景的時(shí)候,你是不是會(huì)感到疑惑呢?或者你在研發(fā)中也要用到類似的功能?那么你可以首先考慮一下 瀏覽器指紋

          什么是瀏覽器指紋


          “瀏覽器指紋” 是一種通過瀏覽器對網(wǎng)站可見的配置和設(shè)置信息來跟蹤 Web 瀏覽器的方法,瀏覽器指紋就像我們?nèi)耸稚系闹讣y一樣,每個(gè)人擁有一份接近于獨(dú)一無二的配置。與 Cookie 和本地存儲(chǔ)不同,瀏覽器指紋可以做到在隱身/隱私模式下甚至瀏覽器數(shù)據(jù)被清除都保持不變。

          怎么生成一個(gè)瀏覽器指紋?

          如果單單拿出一個(gè)配置來講可能很多人和你擁有一樣的配置,比如下面的:

          • 系統(tǒng)版本:
            • 我的系統(tǒng)版本是 Mac OS X 10_14_6
            • 大約 11.91% 的人與我的配置相同
            • 大約每 8 個(gè)人中有一個(gè)和我配置相同
          • Chrome 版本:
            • 我使用的瀏覽器是 Chrome,并且版本是:81.0.4044.92
            • 大約 0.08% 的人與我的配置相同
            • 大約每 1250 個(gè)人中有一個(gè)和我配置相同
          • UTC+8 時(shí)間:
            • 我的UTC+8 時(shí)間是 2020.4.15 23:00:00
            • 大約 2.30% 的人與我的配置相同
            • 大約每 43 個(gè)人中有一個(gè)和我配置相同

          如果單獨(dú)看每個(gè)配置,那他們都不能作為你獨(dú)一無二的特征,但是綜合起來看呢?比如就看這三項(xiàng),三項(xiàng)的配置與你都相同的人的概率就會(huì)大大減小了。以上只是一些簡單的特征,比如系統(tǒng)版本,瀏覽器版本,這些只需要一個(gè)簡單的 navigator.userAgent 屬性就可以拿到。

          像這樣的屬性還有非常多個(gè),他們可能來自 HTTP HeaderJavascript attributes、瀏覽器插件等等,甚至還有一些和硬件相關(guān)的 API ,例如 WebGL 或者 Canvas 圖像繪制的一些 API,在繪圖時(shí)不同瀏覽器使用了不同的圖形處理引擎、不同的圖片導(dǎo)出選項(xiàng)、不同的默認(rèn)壓縮級別、對抗鋸齒、次像素渲染等算法也不同,最終結(jié)果可能取決于進(jìn)行計(jì)算的硬件設(shè)備。

          這些屬性都組合起來那么你就擁有了一個(gè)獨(dú)一無二的指紋。

          fingerprintjs

          FingerprintJS 是一個(gè)瀏覽器指紋庫,可通過查詢?yōu)g覽器屬性并從中計(jì)算出散列的訪問者標(biāo)識符,從而生成一個(gè)用戶指紋。

          你可以在 https://fingerprintjs.github.io/fingerprintjs/ 查看 一個(gè)指紋 DEMO

          簡單看了下源碼,發(fā)現(xiàn)了它主要提取了以下幾個(gè)基本能力:

          • IP地址:部分網(wǎng)站訪問者通過VPN等方式隱藏真實(shí)網(wǎng)絡(luò)出口IP,browserleaks中提到了一種基于WebRTC的方案,通過發(fā)送P2P連接,繞過NAT,獲取真實(shí)的出口IP地址;
          • 聲卡信息:硬件相關(guān)參數(shù),通過navigator對象的方法可以獲取,相關(guān)信息包括音頻設(shè)置和硬件特征指紋;
          • TLS信息:提取web瀏覽器的SSL/TLS功能,確定支持的TLS協(xié)議和密碼套件,并標(biāo)記它們中是否有薄弱或不安全的,顯示支持的TLS擴(kuò)展和密鑰交換組的列表。利用這些數(shù)據(jù),它以JA3格式計(jì)算TLS指紋;
          • 瀏覽器信息:目前方案提供了Useragent信息,容易被篡改,可結(jié)合canvas信息、Useragent等信息,進(jìn)行關(guān)聯(lián)判斷,識別出真正的客戶端信息及相關(guān)的版本數(shù)據(jù)。

          目前瀏覽器的支持情況:

          • 「Internet Explorer」 11 (see the section below)
          • 「Edge」 18 and 85+
          • 「Chrome」 42+
          • 「Firefox」 48+
          • 「Desktop Safari」 11.1+
          • 「Mobile Safari」 9.3+
          • 「Samsung Internet」 11.1+
          • 「Android Browser」 4.1+ (see the section below)

          它的使用方法也非常簡單:

          通過 CDN 引用

          <script>
            function initFingerprintJS({
              // Initialize an agent at application startup.
              const fpPromise = FingerprintJS.load()

              // Get the visitor identifier when you need it.
              fpPromise
                .then(fp => fp.get())
                .then(result => {
                  // This is the visitor identifier:
                  const visitorId = result.visitorId
                  console.log(visitorId)
                })
            }
          </script>
          <script
            async
            src="http://cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.min.js"
            onload="initFingerprintJS()"
          >
          </script>

          通過 NPM 安裝

          npm i @fingerprintjs/fingerprintjs
          # or
          yarn add @fingerprintjs/fingerprintjs
          import FingerprintJS from '@fingerprintjs/fingerprintjs'

          // Initialize an agent at application startup.
          const fpPromise = FingerprintJS.load()

          ;(async () => {
            // Get the visitor identifier when you need it.
            const fp = await fpPromise
            const result = await fp.get()

            // This is the visitor identifier:
            const visitorId = result.visitorId
            console.log(visitorId)
          })()

          目前這個(gè)庫是開源的,即使用不到也可以翻翻代碼學(xué)習(xí)學(xué)習(xí),挺有意思的~

          https://github.com/fingerprintjs/fingerprintjs

          抖音前端正急缺人才,如果你想加入我們,歡迎加我微信和我聯(lián)系。另外如果你想加入前端、面試、理財(cái)?shù)冉涣魅海蛘吣阌腥魏纹渌虑橄牒臀医涣饕部梢蕴砑游业膫€(gè)人微信 ConardLi 。

          文中如有錯(cuò)誤,歡迎在后臺和我留言,如果這篇文章幫助到了你,歡迎點(diǎn)贊、在看和關(guān)注。你的點(diǎn)贊、在看和關(guān)注是對我最大的支持!

          點(diǎn)贊、在看支持作者??

          瀏覽 1302
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  国产精品片 | 日屄在线视频 | 我想看操逼 | 国产中文字幕在线播放 | 午夜久久福利 |