Kalkan logoKalkan

Tarayıcı parmak izi (browser fingerprint) nedir ve nasıl çalışır?

Çerezleri silseniz, gizli pencere açsanız bile bir site sizi tanıyabilir. Bunu mümkün kılan şey tarayıcı parmak izidir. Bu yazıda parmak izinin hangi sinyallerden oluştuğunu, sitelerin onu nasıl kullandığını ve bir profilin neden “farklı” olmaktan önce “tutarlı” olması gerektiğini anlatıyoruz.

Tarayıcı parmak izi nedir?

Tarayıcı parmak izi (browser fingerprint), tarayıcınızın ve cihazınızın sitelere açık olarak sunduğu özelliklerin bir araya getirilmesiyle oluşan kimliktir. Tek başına sıradan görünen her bilgi (ekran boyutu, dil, saat dilimi, ekran kartı modeli) diğerleriyle birleştiğinde, sizi milyonlarca ziyaretçi arasında ayırt etmeye yetecek kadar özgün bir tablo oluşturabilir.

Çerezlerden farkı şudur: çerez sizin bilgisayarınıza yazılan bir işarettir ve silinebilir. Parmak izi ise her ziyarette yeniden hesaplanır; silinecek bir şey yoktur. Bu yüzden çerezleri temizlemek ya da gizli pencere kullanmak sizi aynı cihaz olarak tanınmaktan korumaz.

Parmak izi hangi sinyallerden oluşur?

User-Agent ve Client Hints

Tarayıcı her istekte kendini tanıtır: hangi tarayıcı, hangi sürüm, hangi işletim sistemi. Modern Chrome, bu bilgiyi User-Agent Client Hints ile daha ayrıntılı (marka listesi, tam sürüm, platform sürümü, mimari) sunar. Bu değerlerin hem HTTP başlıklarında hem de JavaScript tarafında birbiriyle aynı olması gerekir.

Ekran ve pencere

Ekran çözünürlüğü, kullanılabilir alan, renk derinliği ve ölçekleme oranı (devicePixelRatio) cihazınız hakkında çok şey söyler. Örneğin %125 ölçekli 1920×1080 bir ekran, sıradan bir Windows dizüstü bilgisayarında çok yaygındır.

Canvas, WebGL ve ses

Aynı çizim komutları, farklı ekran kartlarında, sürücülerde ve yazı tipi işleyicilerinde piksel düzeyinde küçük farklarla sonuçlanır. Site görünmez bir tuvale metin ve şekil çizdirip sonucun özetini (hash) alır. WebGL ayrıca ekran kartının üreticisini ve modelini (renderer) ve desteklenen özellikleri verir. Ses işleme (AudioContext) de donanıma ve yazılıma göre ufak farklar üretir.

Yazı tipleri

Sistemde yüklü yazı tipleri, işletim sistemi ve kurulu yazılımlar hakkında ipucu verir. Windows'ta bulunmayan bir yazı tipinin “Windows” profilinde görünmesi tutarsızlıktır.

Donanım

İşlemci iş parçacığı sayısı (hardwareConcurrency), yaklaşık bellek miktarı (deviceMemory), dokunmatik ekran desteği ve pil durumu gibi bilgiler de toplanabilir.

Dil ve saat dilimi

Tarayıcının dil listesi ve sistem saat dilimi, IP adresinizin ülkesiyle karşılaştırılır. İstanbul'daki bir IP'den gelen ama saat dilimi New York olan bir ziyaretçi, akılda kalır.

Ağ katmanı

Parmak izi yalnızca JavaScript'ten ibaret değildir. TLS el sıkışmasının yapısı, HTTP/2 ayarları ve TCP/IP paket özellikleri de istemciyi tanımlamaya yardım eder. Değiştirilmiş bir tarayıcı, JavaScript tarafında Chrome gibi görünüp ağ tarafında farklı davranırsa bu çelişki fark edilebilir. IP ve proxy tarafındaki izleri sızıntı rehberimizde ele aldık.

Siteler parmak izini nasıl kullanır?

Parmak izinin iki temel kullanımı vardır. Birincisi yeniden tanıma: aynı cihazın farklı hesaplarla ya da çerezler silindikten sonra geri geldiğini anlamak. İkincisi anormallik tespiti: “bu ziyaretçinin bildirdiği özellikler gerçek bir cihaza ait olabilir mi?” sorusunu sormak. Güvenlik ve dolandırıcılık önleme sistemleri genellikle ikisini birlikte kullanır.

Kendi parmak izinizin ne kadar ayırt edici olduğunu merak ediyorsanız EFF'nin Cover Your Tracks gibi araçlarını ya da açık kaynak CreepJS testini deneyebilirsiniz.

Neden rastgelelik değil, tutarlılık?

Parmak izi sorununa ilk akla gelen çözüm, her değeri rastgele değiştirmektir. Ancak rastgele değerler genellikle ikinci sorunu, yani anormallik tespitini tetikler. Birkaç tipik çelişki:

  • Kullanıcı ajanı Mac derken WebGL'in Windows'a özgü bir Direct3D renderer dizesi bildirmesi.
  • Giriş seviyesi bir dizüstü ekran kartıyla 4K ekran ve çok yüksek çekirdek sayısının bir arada olması.
  • Sayfanın kendisi bir cihazı, içindeki iframe ya da Web Worker başka bir cihazı söylemesi.
  • Canvas çıktısının her yüklemede değişmesi; gerçek bir cihazda aynı çizim her seferinde aynı sonucu verir.

Bu yüzden iyi bir profil, gerçekte var olan bir cihaz modelinden türetilmelidir. Ekran kartı, işlemci, bellek, ekran, yazı tipleri ve platform birbiriyle uyumlu olmalı; aynı profil her açılışta aynı parmak izini vermeli, iki farklı profil ise birbirine benzememelidir.

Parmak izi değişiklikleri nasıl uygulanır?

Değerin ne olduğu kadar, nasıl değiştirildiği de önemlidir. Sayfa yüklendikten sonra çalışan bir eklenti ya da betik; değiştirilmiş fonksiyonlar, beklenmedik özellikler veya zamanlama farkları gibi izler bırakabilir. Daha sağlam yaklaşımlar değişiklikleri ya tarayıcının kendi kodunda (motor seviyesinde) yapar ya da sayfanın ilk komutu çalışmadan önce ve sayfa kodunun göremeyeceği bir şekilde uygular. Aynı kimliğin sayfada, iframe'lerde ve worker'larda da geçerli olması gerekir.

Kalkan parmak izini nasıl yönetir?

Kalkan'da her profil rastgele değerlerden değil, gerçek OEM cihaz arketiplerinden oluşturulur: ekran kartı nesli, işlemci, ekran ve dizüstü/masaüstü özellikleri birbirine uyar ve bilgisayarınızın kendi ekran kartı nesliyle uyumlu cihazlar seçilir. Canvas, WebGL ve ses gürültüsü profile özeldir ve kalıcıdır; aynı profil her seferinde aynı sonucu verir.

Varsayılan Kalkan motoru gerçek Google Chrome'u kullandığı için TLS ve ağ davranışı stok Chrome ile aynıdır; yamalar sayfanın ilk komutundan önce yerindedir. Motor seviyesinde değişiklik isteyenler için isteğe bağlı Kalkan Native motoru da vardır. Profillerin nasıl oluşturulduğunu ilk profil kılavuzunda görebilir, Kalkan'ı indirip kendi testlerinizi yapabilirsiniz.

Özet

  • Parmak izi, çerezsiz tanıma yöntemidir ve gizli pencereyle aşılmaz.
  • Onlarca küçük sinyal birleşerek ayırt edici bir kimlik oluşturur.
  • Rastgele değerler profilleri ayırır ama çelişki yaratır; gerçek cihaz modelleri hem ayırır hem inandırır.
  • Değişikliklerin nasıl ve ne zaman uygulandığı da en az değerlerin kendisi kadar önemlidir.

Profillerinizi ayırmanın diğer yarısı ağ kimliğidir; devam etmek için proxy, WebRTC, DNS ve QUIC sızıntıları yazımıza göz atın.

Kalkan'ı 3 gün ücretsiz deneyinGerçek Chrome, kodsuz RPA ve senkron. Kart gerekmez.