String renderer WebGL dan sinyal perangkat keras: seberapa banyak GPU Anda bercerita tentang Anda

Perangkat keras tempat browser berjalan bocor ke halaman lewat beberapa cara kecil. Tidak satu pun menyebut nama mesinnya, tetapi bersama-sama mereka menggambarkannya cukup dekat untuk membedakannya dari kebanyakan mesin lain.
String renderer
WebGL menyediakan ekstensi bernama WEBGL_debug_renderer_info dengan dua nilai: vendor tanpa topeng dan renderer tanpa topeng. Di Windows dengan Chromium, renderer biasanya terbaca seperti ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 SUPER (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11). Satu baris itu memberi vendor GPU, model persisnya, ID perangkat PCI-nya, API grafis, dan shader model, yang juga merupakan petunjuk kuat tentang sistem operasi, karena string itu hanya ada di Windows.
Firefox dan Safari pada berbagai waktu menyamarkan atau menggeneralisasi string ini; Chromium menampilkannya. Browser yang menyamarkannya mengembalikan nilai generik, dan diagnostik menampilkan "info renderer disamarkan" alih-alih menebak.
Jumlah dan ukuran
navigator.hardwareConcurrency mengembalikan jumlah thread CPU logis. navigator.deviceMemory mengembalikan perkiraan jumlah RAM, dibulatkan ke sekumpulan kecil nilai dan dibatasi maksimum 8 di Chromium, sehingga mesin dengan 32 GB melaporkan 8. screen.width dan screen.height memberi ukuran layar, availWidth dan availHeight mengurangi taskbar, dan devicePixelRatio mengungkap penskalaan. screen.colorDepth hampir selalu 24. navigator.maxTouchPoints memisahkan perangkat sentuh dari yang lain.
Sebagian dari ini memiliki daya identifikasi yang luar biasa tinggi dibanding kesan polosnya. Jumlah thread hanya punya segelintir nilai umum, tetapi ia salah satu bidang yang dibobot besar oleh layanan fingerprinting komersial terkenal, justru karena murah dan stabil. Ukuran layar digabung dengan rasio piksel dan tinggi yang tersedia mempersempit sebuah mesin lebih jauh daripada user agent.
Perangkat media
navigator.mediaDevices.enumerateDevices() mengembalikan kamera, mikrofon, dan speaker yang dimiliki sistem. Tanpa izin, browser modern mengembalikan jenis dan jumlahnya tetapi label kosong, sehingga halaman hanya tahu "satu kamera, satu mikrofon, satu keluaran" dan tidak lebih. Memberi akses kepada situs mana pun mengungkap labelnya. Diagnostik yang hanya menampilkan jumlah berperilaku seperti halaman tanpa izin.
Sudut konsistensi, sekali lagi
Sinyal perangkat keras adalah tempat pemalsuan paling sering salah. Profil yang mengaku MacBook dengan renderer Direct3D NVIDIA, 24 thread, dan layar 1366×768 menggambarkan mesin yang tidak ada. Situs tidak memerlukan basis data untuk menyadarinya; beberapa aturan sudah cukup menangkapnya. Jika sebuah profil mengubah salah satu nilai ini, ia harus mengubah semuanya menjadi kombinasi yang memang dijual pada perangkat nyata, dan mempertahankannya antarkunjungan.
Apa yang perlu diperiksa
Baca string renderer dan tanyakan apakah cocok dengan sistem operasi di user agent. Baca ukuran layar dan tanyakan apakah cocok dengan rasio piksel dan tinggi yang tersedia. Baca jumlah thread dan memori lalu tanyakan apakah pasangan itu masuk akal untuk GPU tersebut. Diagnostik menyajikan ini berdampingan justru untuk tujuan itu; penilaiannya ada di tangan Anda.


