Since Chromium 148, Math.tanh is now fingerprintable to link underlying OS
9 hours ago
- #Anti-Bot Detection
- #Browser Fingerprinting
- #Math Libraries
- 不同操作系统(Linux、macOS、Windows)因底层C数学库(glibc、libsystem_m、UCRT)的差异,导致浏览器对某些数学函数(如Math.tanh)产生略微不同的浮点数结果。
- 这形成了一个指纹识别向量,反机器人系统可通过检测Math.tanh、CSS三角函数和Web Audio压缩操作结果的最后一位差异来识别操作系统。
- Chrome 148+将Math.tanh改为使用宿主操作系统的std::tanh而非V8自带的fdlibm,从而引入了这一泄露问题;早期版本不存在此问题。
- 正确欺骗数学函数需要按操作系统精确复制位模式,考虑库的差异(例如Apple的scalar与Accelerate框架),并确保在编译器优化不影响融合乘加运算的情况下进行确定性编译。
- Scrapfly的浏览器实现了精确复制或移植原始库(例如在Linux上映射UCRT),以逐位匹配声称的操作系统,并针对真实设备和浏览器进行了验证。