PowerScan
UK

Рядки рендерера WebGL і апаратні сигнали: скільки про вас розповідає ваш GPU

Відбитки браузера · 6 хв читання · Автор: PowerScan

Фото: Unsplash

Обладнання, на якому працює браузер, просочується на сторінку кількома дрібними способами. Жоден з них не називає комп’ютер, але разом вони описують його достатньо точно, щоб відрізнити від більшості інших.

Рядок рендерера

WebGL надає розширення WEBGL_debug_renderer_info із двома значеннями: виробник без маски та рендерер без маски. У Windows з Chromium рендерер зазвичай виглядає приблизно так: ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 SUPER (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11). Цей один рядок дає виробника GPU, точну модель, її PCI-ідентифікатор пристрою, графічне API та модель шейдерів, а це також сильна підказка про операційну систему, бо такий рядок існує лише у Windows.

Firefox і Safari у різні періоди маскували чи узагальнювали цей рядок; Chromium його показує. Браузер, що його маскує, повертає загальне значення, і діагностика показує «інформацію про рендерер приховано», а не вгадує.

Кількості та розміри

navigator.hardwareConcurrency повертає кількість логічних потоків процесора. navigator.deviceMemory повертає приблизний обсяг оперативної пам’яті, округлений до невеликого набору значень і обмежений у Chromium числом 8, тож комп’ютер із 32 ГБ повідомляє 8. screen.width і screen.height дають розмір дисплея, availWidth і availHeight віднімають панель завдань, а devicePixelRatio розкриває масштабування. screen.colorDepth майже завжди 24. navigator.maxTouchPoints відділяє сенсорні пристрої від решти.

Деякі з них мають незвично високу ідентифікаційну силу порівняно з тим, наскільки невинно виглядають. Кількість потоків має лише жменьку поширених значень, але це одне з полів, яким добре відомий комерційний сервіс відбитків надає великої ваги, саме тому, що воно дешеве й стабільне. Розмір екрана разом зі співвідношенням пікселів і доступною висотою звужує коло комп’ютерів сильніше, ніж user agent.

Медіапристрої

navigator.mediaDevices.enumerateDevices() повертає камери, мікрофони й динаміки, які є в системі. Без дозволу сучасні браузери повертають типи й кількості, але порожні мітки, тож сторінка дізнається «одна камера, один мікрофон, один вихід» і нічого більше. Надання доступу будь-якому сайту розкриває мітки. Діагностика, що показує лише кількості, поводиться як сторінка без дозволу.

Знову про узгодженість

Апаратні сигнали — місце, де підміна найчастіше помиляється. Профіль, що заявляє MacBook із рендерером NVIDIA Direct3D, 24 потоками та екраном 1366×768, описує комп’ютер, якого не існує. Сайтам не потрібна база даних, щоб це помітити; кілька правил це ловлять. Якщо профіль змінює будь-яке з цих значень, він має змінити всі до комбінації, з якою реальний пристрій справді постачається, і зберігати її між візитами.

Що перевірити

Прочитайте рядок рендерера й запитайте, чи він відповідає операційній системі в user agent. Прочитайте розмір екрана й запитайте, чи він відповідає співвідношенню пікселів і доступній висоті. Прочитайте кількість потоків і пам’ять та запитайте, чи така пара правдоподібна для цього GPU. Діагностика виставляє їх поруч саме для цього; судження за вами.

Усі статті · Запустити перевірку