Element features
GET /api/fingerprint/html-elementHTML element fingerprinting analyzes the DOM API surface area by inspecting properties and methods available on HTML element prototypes. JavaScript provides full introspection capabilities, allowing enumeration of all properties, methods, getters, setters, and symbols defined on HTMLElement and its descendants (HTMLDivElement, HTMLImageElement, etc.). Different browsers implement different sets of DOM APIs: Chrome exposes Chrome-specific APIs, Firefox has Gecko-specific extensions, Safari includes WebKit proprietary APIs. Even standardized APIs have implementation differences in property ordering, method signatures, and default values. The technique enumerates Object.getOwnPropertyNames(), Object.getOwnPropertySymbols(), and walks the prototype chain for element types, counting properties and detecting specific API presence. For example, checking for webkitRequestFullscreen vs. mozRequestFullscreen vs. requestFullscreen reveals rendering engines. Proprietary properties like element.offsetParent, element.clientRects, or specific dataset properties vary. Modern APIs like element.attachShadow, element.animate, element.getAnimations, and Intersection Observer have varying support levels corresponding to browser versions. Checking for deprecated APIs (document.all, element.align) helps identify older browsers. The order of properties in enumeration is browser-specific due to different object layout strategies in JavaScript engines. This technique also detects polyfills and JavaScript libraries that extend element prototypes, revealing the website's technology stack. Privacy browsers can't easily normalize DOM APIs without breaking legitimate feature detection code, making this fingerprinting technique highly effective and stable.
Move from this collector to the CreepJS signal index, live checker, API docs, and other high-value fingerprinting explainers.