Sistem identifikasi TRACIO menghasilkan pengenal pengunjung yang stabil dari lebih dari 130 sinyal browser. Pengenal ini bertahan lintas sesi, mode incognito, pergantian VPN, dan penghapusan cookie. Halaman ini menjelaskan keseluruhan pipeline identifikasi.
Klien mengumpulkan lebih dari 130 sinyal browser berbeda dalam 10 kategori. Setiap sinyal menyelidiki aspek yang berbeda dari browser dan perangkat, mulai dari karakteristik perangkat keras hingga perilaku rendering.
| Grup | Sinyal | Stabilitas | Contoh |
|---|---|---|---|
| Hardware | 12 | Sangat Tinggi | Resolusi layar, memori perangkat, konkurensi perangkat keras, dukungan sentuh |
| Rendering | 9 | Tinggi | Fingerprint canvas (teks + geometri), renderer WebGL, pemrosesan audio |
| Font | 5 | Tinggi | Font sistem yang tersedia (69 famili diuji), preferensi font, rendering MathML |
| Platform | 25 | Sedang | User-Agent, properti navigator, zona waktu, bahasa, vendor |
| CSS Engine | 10 | Sedang | Respons media query (skema warna, HDR, gerak berkurang, warna paksa) |
| Storage | 10 | Sedang | Dukungan cookie, localStorage, sessionStorage, kuota penyimpanan |
| WebGL | 9 | Tinggi | Vendor GPU, renderer (tanpa masker), presisi shader, dukungan ekstensi |
| Network | 3 | Rendah | RTT koneksi, probe TURN, versi aplikasi |
| Bot Indicators | 15 | N/A | Flag webdriver, framework otomasi, panjang eval, penanda headless |
| Custom | 14 | Bervariasi | Fingerprint math, fitur WASM, deteksi arsitektur |
Tidak semua sinyal sama bergunanya untuk identifikasi. Sinyal diklasifikasikan berdasarkan stabilitas:
Tier 1 (Beku): Sinyal perangkat keras dan rendering yang hampir tidak pernah berubah. Fingerprint canvas, renderer WebGL, fingerprint audio, parameter GPU, enumerasi font, operasi matematika, byte arsitektur.
Tier 2 (Semi-stabil): Sinyal yang berubah saat pembaruan browser atau perubahan konfigurasi. User-Agent, Client Hints, plugin, media query CSS, kapabilitas penyimpanan.
Tier 3 (Volatil): Sinyal yang sering berubah. Resolusi layar (pergantian monitor), zona waktu (perjalanan), preferensi bahasa, properti koneksi.
Visitor ID dihitung menggunakan sistem hashing tiga tingkat yang menyeimbangkan stabilitas dengan kemudahan pengembangan:
Visitor ID = [Tier1Hash][Tier2Hash][Tier3Hash] 20 chars 10 chars 10 chars ──────── ──────── ──────── base62 base62 base62Tier 1 hanya menggunakan sinyal beku yang melekat pada perangkat keras dan mesin rendering. Sinyal-sinyal ini hanya berubah ketika pengguna berpindah ke perangkat fisik yang berbeda atau melakukan perubahan perangkat keras yang signifikan.
Sinyal yang disertakan: Hash fingerprint canvas, renderer WebGL (tanpa masker), vendor WebGL (tanpa masker), fingerprint audio, hash enumerasi font, hash parameter WebGL, hash operasi matematika, byte arsitektur (ARM vs x86).
Algoritme:
key1=value1|key2=value2|... (kunci diurutkan secara alfabetis)Tier 1 sengaja dibekukan. Sinyal baru tidak pernah ditambahkan ke Tier 1, memastikan bahwa inti identitas tetap stabil lintas pembaruan server.
Tier 2 menangkap lingkungan browser dan OS. Sinyal-sinyal ini berubah ketika pengguna memperbarui browser mereka, memasang ekstensi, atau mengubah pengaturan sistem.
Sinyal yang disertakan: Data User-Agent, Client Hints (brand, platform, arsitektur), properti navigator (vendor, platform, bahasa), daftar plugin, kedalaman warna layar, memori perangkat, konkurensi perangkat keras.
Tier 3 menangkap sinyal volatil yang mungkin berubah antar sesi. Sinyal ini digunakan untuk penilaian keyakinan dan pencocokan fuzzy tetapi tidak memengaruhi inti identitas.
Sinyal yang disertakan: Resolusi layar, zona waktu, bahasa, DOM blocker, kapabilitas penyimpanan, respons media query CSS, properti koneksi.
Setiap tier di-hash menggunakan MurmurHash3-x64-128, sebuah fungsi hash non-kriptografis yang cepat dan menghasilkan output 128-bit. Algoritmenya:
MurmurHash3 memberikan distribusi yang sangat baik (setiap bit input memengaruhi setiap bit output) dan cukup cepat untuk komputasi real-time. Ia tidak aman secara kriptografis, tetapi hal itu tidak diperlukan untuk hashing fingerprint.
Input: "canvas=abc123|webgl_renderer=ANGLE|audio=0.04852" ↓ MurmurHash3-x64-128Output: 0x7f4a8c2d1e3b5f6a 0x9d8c7b6a5e4f3d2c ↓ base62 encodeResult: "X7fh2Hg9LkMn3pQr5tBv"Skor keyakinan (0.0 hingga 1.0) menunjukkan seberapa yakin sistem terhadap identifikasi pengunjung:
Ketika cookie _vid_t cocok dengan pengunjung yang dikenal, keyakinan diatur ke 1.0. Cookie menyimpan UID pengunjung, yang divalidasi server terhadap catatannya. Ini adalah jalur identifikasi yang paling cepat dan paling andal.
Pengunjung baru tanpa catatan sebelumnya menerima skor keyakinan 0.90. Tidak ada risiko kecocokan palsu karena tidak ada catatan yang sudah ada untuk dibandingkan.
Untuk pengunjung yang kembali tanpa kecocokan cookie, sistem menghitung keyakinan dari:
Pembobotan frekuensi sinyal (IDF): Sinyal yang lebih unik di seluruh populasi global menerima bobot lebih tinggi. Renderer WebGL yang langka lebih mengidentifikasi daripada resolusi layar yang umum.
Pencocokan fuzzy: Sistem membandingkan fingerprint saat ini terhadap fingerprint tersimpan menggunakan jarak Hamming tingkat-bit. Sinyal dikelompokkan menurut tier, dan skor kecocokan tiap tier dibobot secara independen.
Konsistensi historis: Jika sinyal pengunjung telah stabil di beberapa kunjungan, keyakinan meningkat. Jika sinyal sering berfluktuasi, keyakinan menurun.
| Skenario | Skor Umum | Penjelasan |
|---|---|---|
| Kecocokan cookie | 1.000 | UID cookie _vid_t diverifikasi sisi server |
| Kunjungan pertama | 0.900 | Tidak ada catatan sebelumnya untuk dibandingkan |
| Kecocokan fingerprint kuat | 0.990-0.999 | Semua sinyal Tier 1 cocok, sebagian besar Tier 2 cocok |
| Kecocokan sebagian (update browser) | 0.950-0.989 | Tier 1 cocok, Tier 2 berubah (UA baru) |
| Kecocokan lemah (perubahan signifikan) | 0.850-0.949 | Beberapa sinyal Tier 1 berubah |
| Ambigu | 0.500-0.849 | Beberapa kemungkinan kecocokan dalam basis data |
TRACIO menggunakan cookie pihak pertama (_vid_t) untuk mempertahankan identitas pengunjung lintas sesi:
_vid_tSameSite=Lax, dan Secure pada HTTPS (bukan HttpOnly — agen membacanya di sisi klien)Cookie diterbitkan baik di sisi server (melalui header respons Set-Cookie) maupun di sisi klien oleh agen, dan UID juga dicerminkan ke localStorage sebagai cadangan saat cookie diblokir.
Server berupaya mengatur cookie pada cakupan domain yang semakin luas:
app.example.com → example.com → comDomain terluas yang berhasil mengatur cookie akan digunakan. Ini memastikan cookie bertahan lintas subdomain.
TRACIO dapat mengidentifikasi orang yang sama di berbagai browser pada perangkat yang sama ketika sinyal Tier 1 menghasilkan hash yang cocok. Karena Tier 1 bergantung pada karakteristik perangkat keras dan rendering (canvas, WebGL, audio, font), sinyal-sinyal ini sering kali identik di antara browser berbasis Chromium pada mesin yang sama dan menurun kualitasnya di antara mesin yang berbeda (Chromium vs Firefox vs Safari). Mencocokkan pengunjung desktop dengan pengunjung seluler tidak diharapkan — permukaan perangkat keras dan rendering-nya berbeda.
Pencocokan lintas browser secara inheren merupakan operasi dengan keyakinan lebih rendah dan diperlakukan demikian dalam penilaian.