日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

帆布指纹识别(canvas fingerprinting)

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 帆布指纹识别(canvas fingerprinting) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

廣告聯盟或許網站運營者都希望能夠精準定位并標識每一個個體,通過對用戶行為的分析(瀏覽了哪些頁面?搜索了哪些關鍵字?對什么感興趣?點了哪些按鈕?用了哪些功能?看了哪些商品?把哪些放入了購物車等等),為用戶推送更加精準的廣告(精準化營銷)。同時,通過對用戶的標識,可以將不同站點的用戶進行關聯。

在過去,實現上述cookie是最受歡迎的一種。但由于移動互聯網的發展,移動設備限制、用戶禁用cookie。使得cookie愈來愈不受待見。伴隨著html5的成熟,通過canvas fingerprinting技術標識一個唯一的瀏覽器逐漸被接受。它的特點是不通過cookie,用戶基本無法屏蔽它 。

其實現原理:

1 var canvas = document.createElement('canvas'); 2 var ctx = canvas.getContext('2d'); 3 var txt = 'http://security.tencent.com/'; 4 ctx.textBaseline = "top"; 5 ctx.font = "14px 'Arial'"; 6 ctx.textBaseline = "tencent"; 7 ctx.fillStyle = "#f60"; 8 ctx.fillRect(125,1,62,20); 9 ctx.fillStyle = "#069"; 10 ctx.fillText(txt, 2, 15); 11 ctx.fillStyle = "rgba(102, 204, 0, 0.7)"; 12 ctx.fillText(txt, 4, 17);

獲取繪畫的內容,需要使用到canvas.toDataURL()方法,該方法返回的是圖片內容的base64編碼字符串。對于PNG文件格式,以塊(chunk)劃分,最后一塊是一段32位的CRC校驗,提取這段CRC校驗碼便可以用于用戶的唯一標識

1 var b64 = canvas.toDataURL().replace("data:image/png;base64,",""); 2 var bin = atob(b64); 3 var crc = bin2hex(bin.slice(-16,-12)); 4 console.log(crc);

通過驗證,crc在一定程度上標識了瀏覽器的唯一性,但是,在相同設備,相同瀏覽器上,重復特別嚴重。國外有一個經過優化后的表示瀏覽器的唯一性的js,https://github.com/Valve/fingerprintJS

它除了利用canvas以外,還加入了其它的影響因素,這些因素包括

  • 瀏覽器http請求中的用戶代理-navigator.userAgent
  • 瀏覽器的語言(中文、英文……)-navigator.language
  • 設備屏幕的色彩信息-screen.colorDepth
  • 設備屏幕的寬高-screen.height screen.width
  • 格林威治時間和本地時間之間的時差-Date().getTimezoneOffset()
  • 是否支持sessionStorage-window.sessionStorage
  • 是否支持localStorage-window.localStorage
  • 是否支持indexdDB-window.indexedDB
  • 是否支持-docment.body.addBehavior(IE5的一個屬性)
  • 是否支持調用本地數據庫-window.openDatabase
  • 瀏覽器所在系統的CPU等級-navigator.cupClass
  • 客戶端的操作系統-navigator.platform
  • 是否支持Do not track功能-navigator.doNotTrack
  • 獲取瀏覽器部分插件信息-flash plugin、Adobe PDF reader、QuickTime、real players、ShockWave player、Windows media player、Silverlight、Skype
  • canvas指紋
  • ?

    官網數據顯示,該標識精準度達94%,基于原理?https://panopticlick.eff.org/browser-uniqueness.pdf

    國內一程序員在此基礎上做了 測試,測試結果https://docs.zoho.com/sheet/ropen.do?rid=08m2ga1cf6790c0eb4d8c8f7e54ca6ddb9b72

    ?

    表格 1
    手機型號系統Android原生 or Safariuc瀏覽器qq瀏覽器微信瀏覽器備注
    ??算法優化過的fingerprint簡單的示例代碼算法優化過的fingerprint簡單的示例代碼版本算法優化過的fingerprint簡單的示例代碼版本算法優化過的fingerprint簡單的示例代碼版本?
    SonyEricsson LT15iAndroid 2.3.43069863566390fde4f13175605099ce51412v9.9.0.45921771814763ea97fcav5.2????
    Sony X10iAndroid 2.3.33113311216js出錯26376310519ce51412v9.9.0.45921312347273ea97fcav5.22678610518js出錯v5.3.1原生的刷新優化過生成的id不會變化
    摩托羅拉 MB526Android 2.3.62364220961js出錯無sd卡無法安裝瀏覽器應用程序
    華為 u9508Android 4.0.439055531917e41cc0f4273392099b699d48cv9.9.0.459158705092978de4112v5.2.0.87040269156357e41cc0fv5.3.1?
    OPPO X907Android 4.0.37266845027e41cc0f2089481481d07a1ee9v9.9.0.459323194345078de4112v5.28882697677e41cc0fv5.3.1?
    htc t528wAndroid 4.1.1319655688a6cb1bf9247900438556d50248v9.8356698439244ae093v5.2.1.8802025279959a6cb1bf9v5.3.1?
    2307781626d07a1ee9v9.9.0.459
    紅米移動版Android 4.2.123916897339c6ad73c???1950263795244ae093v5.2.1.8801813996467244ae093v5.4beta?
    HUAWEI A199Android 4.1.27866134269c6ad73c156829089100000000v8.7.23315869337c1e8ddabv4.235145487819c6ad73cv5.3.1UCv8.7.2不支持canvas,每次刷新優化后生成的id會變化,示例代碼生成id一直是8個0
    1118832592b699d48cv9.9.0.4591980938942244ae093v5.2
    HUAWEI P6-T00Android 4.2.228909258159c6ad73c452391340b699d48cv9.9.0.4593877925850244ae093v5.238367739099c6ad73cv5.3.1?
    魅族 M353Android 4.2.119141104089c6ad73c3750243844431d50f8v9.9.0.4593750421827244ae093v5.210961331879c6ad73cv5.3.0?
    4822954089c6ad73cv5.3.1?
    HTC 802wAndroid 4.2.226577612439c6ad73c2182659327dedbb2dev9.8.0.4352352114048244ae093v5.213285364639c6ad73cv4.5?
    22064822892bc8041av9.9.0.4591720649299c6ad73cv5.3.1?
    紅米 noetAndroid 4.2.23981610359c6ad73c197430937d07a1ee9v9.8.9.4578601441049c6ad73cv5.026950873499c6ad73cv5.3.1?
    三星 GT-N7100Android 4.2.232294179359c6ad73c7558396639fb1a593v9.8.9.4571643973998b31ee991v5.220366620419c6ad73cv5.1?
    8542780079c6ad73cv5.3.1?
    Lenovo K900Android 4.2.117580749079c6ad73c??????34651191149c6ad73cv5.3.1?
    三星 galaxy s5Android 4.4.249806560829725ab4749934522d2a60b1dv9.8.9.4572294751620cd456c4av5.2.1.88018879347958140f6e0v5.2?
    38071872498140f6e0v5.3.1
    三星 GT-I9505Android 4.31180998254f8f416c18988583014228c48ev9.9.0.4592205938319a3ee5a29v5.24256482719fbf76091v5.3.1?
    三星 note3Android 4.339234668764f8f416c19619629330482a2ac靈動版4087844410482a2acv5.0.2.71042217769860482a2acv5.3.1?
    40238070844546f3bbv9.8.0.435?
    vivo x3tAndroid 4.2.12341248451da5b08ce1512563799c36972cav9.9.0.459367705500733834835v5.1.0.7803748495542da5b08cev5.2.1原生瀏覽器版本v2.3.1
    2341248451da5b08ce208062917133834835v5.2.1.880293292691da5b08cev5.3.1原生瀏覽器版本v2.3.3
    vivo X1Android 4.1.1752680764da5b08ce4192034694c36972cav9.9.0.459402969698533834835v5.21912866602da5b08cev5.3.1?
    三星 GT-I9502Android 4.2.23824555000d457e86b427110114353288053v9.7.943995818985231dbc3ddv5.0.0.6503721105672759549f9v4.5.1?
    86111921809ca4266v9.9.0.459442109150759549f9v5.3.1?
    LG nexus5Android 4.3193484871491aedadb2787277112a0d15a90v9.9.0.459246265161291aedadbv5.2.1.880369013343191aedadbv5.3.1?
    三星 GT-S7562Android 4.0.426149192940d5b2b4b4360799660b27d3d8v9.7.5.41835268090b437c248v5.216591087450d5b2b4bv5.3.1?
    502410648d155acfav9.8.9.457?
    Huawei P1 U9200Android 4.0.331774167122d694a48405171118356d50248v9.6.0.3784124042100fa189661v4.516015817017e41cc0fv5.3.1?
    3743446141d07a1ee9v9.8.9.457?
    Nokia XAndroid 4.1.235982025887ba05ba8765903625859aa2b8v9.9.0.4593070076558418420bfv5.22591054263bee57099v5.0.3?
    1779200183bee57099v5.3.1?
    iphone 3GSiOS 6.027541821679fcce73624269937939fcce736v9.7.1.45040191793229fcce736v4.330343201879fcce736v5.3.1?
    touch 4iOS 6.0.113267096319fcce736???26146333049fcce736v4.531072941919fcce736v5.3.1?
    iphone5siOS 7.1.235951043890304845291353517803048452v9.8.0.451???272212802403048452v5.3.1?
    ipad 2iOS 7.0.41287507670304845237924070603048452v2.4.2.414327162223803048452v4.2.1????
    iphone 4SiOS 7.0.628623808999fd0577f25580518489fd0577fv9.7.5.43836205242729fd0577fv5.2.128593151089fd0577fv5.3.1?
    touch 5GiOS 7.1.127023259069fd0577f37728027229fd0577fv9.8.0.45129702881959fd0577fv5.2.14954678439fd0577fv5.3.1?
    iphone 5ciOS 8.013008494699fd0577f25616220319fd0577fv9.8.0.45132889666999fd0577fv5.2.137679779649fd0577fv5.3.1?
    ?備注說明有特殊背景色的單元格說明有重復,同背景色同字體顏色的,是相同的數據

    其測試結論?

    1.由于涉及設備以及瀏覽器的判定因素非常多,重復性很低,31臺設備皆無重復

    但是可以設想,畢竟是通過各種屬性值去判斷唯一性,理想情況下如果兩臺設備相同瀏覽器各種設置也相同,還是會出現重復

    2.也正因為涉及的因素多,一旦設備系統更新 or 瀏覽器版本更新 or 瀏覽器關鍵插件有變化(版本更新 or 新增卸載關鍵插件) ,生成的ID都會改變,由于瀏覽器版本更新還是比較頻繁的,很容易失去之前跟蹤的用戶

    結論:canvas指紋只能作為一參考屬性去判斷設備的唯一性,不能只用這一個因素來判定設備唯一性。fingerPrint.js也不能取代cookie,但是可以作為輔助,如果用戶清除了cookie的情況下,還可以通過fingerPrint.js跟蹤到該用戶重新set cookie(結論參考)

    ?

    在一些場景下:

    一般一個指紋跟蹤不是永久的跟蹤的概念,而是在一個戰役內進行活動的跟蹤,比如可以發布3個活動,3個活動分別是掃二維碼打開一個網址,在另外一個網頁內操作,在第三個網頁內進行別的操作,然后被采集后在后臺通過指紋進行關聯,得到本次戰役的目標

    中間可以通過搞一個抽獎,要用戶輸入手機號碼驗證后抽獎,來做一些連接。

    ?

    轉載于:https://www.cnblogs.com/xiezhengcai/p/4252008.html

    總結

    以上是生活随笔為你收集整理的帆布指纹识别(canvas fingerprinting)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。