A UA claiming Apple WebKit (Safari / any iOS browser) exposes a Blink-only structural API
br.apple_ua_nonwebkit · convicts
What it catches
Apple mandates WebKit for Safari AND every iOS browser — Chrome (CriOS), Firefox (FxiOS), Brave, DuckDuckGo, Onion all wrap the system WebKit, none ship Blink. So a UA claiming Apple WebKit (a Safari token with no desktop-Chromium token → uaEngine 'safari') that exposes a Blink-ONLY structural API is impossible on a real Apple browser: window.chrome and navigator.userAgentData (UA-CH, unimplemented in any Safari/JSC) never exist there. The collector fires it only when one of those positive APIs is present under a Safari-engine UA — a Chromium host faking an iOS/Safari UA (a very common mobile-spoof pattern). STRUCTURAL: a positive-API tell, not the error-message (error_engine_vs_ua) or float-precision (math_engine_vs_ua) channel, so it survives a spoof that rewrites engine error messages. Grounded: real desktop + iOS Safari expose neither → never fires; desktop Chrome/Firefox have uaEngine chromium/firefox so the rule is gated off. v0.74.9: the third arm — V8's Error.captureStackTrace — was REMOVED. It was NOT actually Blink-only: JSC implemented Error.captureStackTrace in Safari 16.4 (2023, for V8 compat), so the arm convicted every real Safari 16.4+/iOS user as a bot. GROUNDED by a live headful capture (harness/tools/headful_capture.mjs): Playwright's WebKit 18.4 engine (vendor 'Apple Computer, Inc.') exposes Error.captureStackTrace as a function while correctly lacking window.chrome and userAgentData — proving the API now lives in the real Safari engine. Caught only by the live second-source capture, invisible to browserforge calibration (a runtime API the mapper does not emit). window.chrome / userAgentData remain genuinely Blink-only so the Chromium-faking-Safari catch (e.g. the ios-ua-spoof evader) is preserved.
Signals it reads
browser.apple_ua_nonwebkit
How it fires
present
Evaders it caught 2
Bypassed by 10
Frontier evaders that reach the detector uncaught (scored only suspicious, defeating every convicting tell) — this check is not one that stops them. The red-team frontier this detection still has to convict.