Hacker News Digest

12 июля 2026 г. в 21:12 • scrapfly.dev • ⭐ 299 • 💬 151

OriginalHN

#anti-bot#browser-fingerprinting#chromium#javascript#linux#macos#v8#windows

Since Chromium 148, Math.tanh is now fingerprintable to link underlying OS

Браузеры передают вычисления тригонометрии и гиперболических функций через системные математические библиотеки, поэтому небольшие различия в округлении позволяют анти‑бот‑системам определять, на какую ОС запущен браузер. Например, Math.tanh(0.8) возвращает 0.6640367702678491 в Linux (glibc), 0.664036770267849 в macOS (libsystem_m) и 0.6640367702678489 в Windows (UCRT) – различие в одном‑двух последних битах (1‑2 ULP). Такие «битовые подписи» появляются, начиная с Chrome 148, когда V8 перестал использовать fdlibm и стал вызывать std::tanh из хост‑libm. Раньше эти функции давали одинаковый результат на всех платформах и не фиксировали ОС. При этом лишь небольшая часть функций — sin, cos, tan, tanh, exp и другие — передаёт данные через хост‑libm; остальные математические операции остаются внутри V8 и не раскрывают платформу. Эти различия позволяют анти‑бот‑системам построить отпечаток.

Scrapfly закрывает эту утечку, имитируя точные биты, которые выдаёт реальная библиотека каждой ОС. Они формируют таблицу подписей для cos, tanh, sin и других функций, а затем в браузерных сборках подменяют вычисления так, чтобы результат совпадал с тем, что получает браузер. Таким образом, даже при hundreds‑fold проверке по сигналам, включая математику, их клиент выглядит идентично реальному браузеру и обходит анти‑бот‑механизмы.