--bot-performance-timing: Browser Timing Signals and Fingerprinting
Understand BotBrowser's --bot-performance-timing basic and advanced modes, the Performance Timing APIs they affect, and the limits of proxy and anti-bot cross-checks.
The Knowledge Hub is for education, comparisons, and commentary. The docs center is for setup, reference, validation, and responsible-use material.
Tag overview
These 135 articles tagged Privacy connect practical reads across 7 topic areas, from fingerprint protection and identity control to deployment and automation.
Common categories for this tag
Articles
135
Latest update
Nov 9, 2026
Topic areas
7
Start with these guides to explore the tag before browsing the full list.
Distinguish Cloudflare challenges, DataDome integration decisions and origin errors during scraping. Read response signals without inferring hidden bot scores.
Learn how coarse connection hints help adaptive interfaces without turning network information into a stable browser identity signal.
Additional guides with this tag.
Understand BotBrowser's --bot-performance-timing basic and advanced modes, the Performance Timing APIs they affect, and the limits of proxy and anti-bot cross-checks.
Learn how collection methods, sampling, device splits, and denominators limit what browser usage reports can show.
Keep job fields, source identifiers and observation time together. Compare structured data with rendered listings and diagnose page overlap without inventing closures.
What webgl_debug_renderer_info reveals about your GPU to any page, what it cannot show, and how to verify a WebGL fingerprint in your own browser.
Learn how ordinary browser signals combine into a fingerprint, why cookies do not control it, and how to test privacy boundaries safely.
Browser automation detection prevention in Playwright and Puppeteer: which signals a page can read, why late JavaScript patches fail, and how to verify your own setup.
A CAPTCHA appearing during scraping needs a request timeline, not a guessed bot score. Separate route, browser-session and workload changes before approved recovery.
Competitor price monitoring needs matching offers, market context and honest observation times. Separate scheduling, browser acquisition, validation and publication.
Amazon product data needs an approved source, the right variant and offer context. Compare the current official API with authorized page observations and browser inputs.
Compare Places API fields, rendered listings and place panels. Keep field masks, place IDs, attribution and storage limits separate from browser configuration.
Model authorized property observations with listing keys, typed prices and status history. Separate relistings, failed refreshes and missing pages from real market changes.
Compare Shopify Storefront GraphQL, hosted-theme Ajax JSON and rendered pages by access, product variants, currency context and the evidence each surface supplies.
Trace CreepJS WebRTC report fields to pinned APIs, SDP transforms and partial-result branches without treating them as identity.
Map BrowserLeaks WebRTC support, ICE, SDP, and media-device fields to browser operations without treating one row as a leak verdict.
Trace CreepJS CSSStyleDeclaration key collection, alias handling, and separate system color and font probes without confusing support with a measured value.
Interpret Linux armv81, User-Agent Client Hints and WebGL together without treating a browser surface as hardware identity.
Trace CreepJS Math results, browser reference flags, repeated-call checks and lie state without treating source labels as live browser evidence.
Compare CreepJS getPrediction lookup with renderPrediction signal aggregation and unknown states; neither output proves device identity.
Read CreepJS DOMRect checks without confusing empty geometry, fragmented text, transforms or missing results with a device identity.
Read navigator.cpuPerformance values, distinguish missing from zero, and understand Chrome 152 support, overrides and CPU-tier privacy limits.
Trace optional WebGL renderer disclosure from extension lookup to getParameter without treating a renderer string as device identity.
Separate ICE prefetch, candidate delivery and restart phases; a missing page event does not establish that earlier network activity did not occur.
Trace BrowserLeaks WebGL fields from context discovery to parameter, extension, precision, and pixel reads. Diagnose missing output without guessing.
Plan camera and microphone permissions, device labels, and virtual camera workflows so media features remain useful, transparent, and privacy conscious.
Separate data:, sentinel returns, PNG format fallback and SecurityError from pixel differences when reading a Canvas fingerprint test.
CreepJS checks 51 font names to infer a Windows or macOS version. Executing its tables shows every answer needs a complete base set, not one stray font.
One probe on CreepJS: soft tells, hard headless bits and wrapper checks are scored separately, so a cleaned page still reports a percentage.
Trace CreepJS Intl fields to their fixed inputs, locale collection and error paths, without treating formatting differences as identity or a lie verdict.
Compare browser signal groups, trace behavior checks, and route fingerprint differences.
Separate CreepJS timezone fields, historical offset comparisons and conditional display from physical location, identity and an automation verdict.
Trace CreepJS WebGL fields from pinned source to report output, including context comparisons, optional renderer data, pixel reads, and limits.
Separate fingerprint uniqueness, browser stability, and cross-browser linkability with sample limits, confounders, and a practical evidence worksheet.
EFF test results mix simulated trackers with fingerprint uniqueness. Separate the two, then read Canvas, WebGL, fonts and timezone fields within their limits.
Separate missing WebGL renderer information from context failures, privacy restrictions and unrequested collection. Preserve the distinction in support records.
Trace BrowserLeaks Canvas from its support checks to its PNG digest and signature lookup, then separate those observations from identity or bot verdicts.
Trace CreepJS audio report fields from OfflineAudioContext rendering through missing, noise and lie branches without treating a checker result as identity.
Read CreepJS emojiSet and textMetricsSystemSum from pinned source. Separate representative metrics, lossy aggregation and field inclusion from OS identity.
Compare focus, blur, visibilityState, and document.hidden across headless and headful BotBrowser sessions without treating active state as human presence.
Understand how AudioContext and OfflineAudioContext rendering differences form an audio fingerprint, and how to keep audio output consistent with a loaded profile.
How to pre-populate browser bookmarks at launch with a JSON value, so test and privacy-research sessions start from a documented, repeatable bookmark state.
Check the observed public IP in Launcher step by step and separate DNS, profile and provider failures before changing the configuration.
Design browser deployment logs that preserve operational evidence while minimizing personal data, fingerprint signals, and unnecessary kernel detail.
Add application-specific request headers with --bot-custom-headers, profile configs or CDP commands, and keep profile-managed headers such as User-Agent and Sec-CH-UA consistent.
How the User-Agent header, Client Hints, and navigator.userAgentData must agree, why framework overrides leave gaps, and how to set and check a custom identity.
How Encrypted Media Extensions and Widevine capability queries expose platform signals, why VPNs and private windows do not change them, and how to check them against a profile.
What is font fingerprinting? Learn how font availability, fallback behavior, and text metrics expose platform traits and affect browser privacy.
Understand secure-context requirements, permission choices, accuracy tradeoffs, and privacy-safe fallbacks for browser geolocation.
Incognito mode clears cookies but leaves your browser fingerprint unchanged. Learn why private browsing is not enough and how to compare private and regular sessions.
performance.now timing resolution and jitter reveal timer coarsening and workload variation. Compare repeated readings before concluding.
Compare Speculation Rules prefetch and prerender eligibility, activation, abandonment, credentials, side effects, and a safe fixture.
Manage Push API subscriptions from permission and endpoint creation through renewal, unsubscribe cleanup, and privacy-safe retention.
How the WebGPU API exposes GPU adapter details for fingerprinting, and how to control GPU identity signals at the browser profile-managed.
CreepJS multiplies a canvas seed by 15000 modulo 2001000001 every round. This probe measures how many rounds stay distinct before that sequence repeats.
One probe on CreepJS: nine independent group patterns become a single ordered decision string, and one group can only be caught by comparing it with another.
Canvas measureText() exposes sub-pixel metrics that vary with fonts and browser setups. Compare this signal with Canvas and understand BotBrowser profile limits.
Two public suites publish 49 tests between them. Reading their own catalogues shows 11 read the connection, and four shared names are classified differently.
Interpret Cloudflare Bot Score, Bot Management variables, and Logpush records without treating a score, challenge, or HTTP status as identity proof.
Trace FingerprintJS OSS load(), source ordering, component errors, and lazy visitorId digest provenance without claiming a runtime detector result.
How cookies carry session and consent state, why cookies added after page creation can miss the first request, and how to load a separate cookie set per identity at launch.
How requestAnimationFrame timing, display refresh rate, and video playback cadence work as fingerprint signals, and how BotBrowser sets display FPS and video FPS.
Distinguish screen, available area, window, layout viewport, visual viewport, zoom, and pixel density without treating display observations as proof of identity.
Read the Chrome Connection Allowlists rollout, draft status, context scope, and safe validation limits without assuming browser support.
Build Presentation API flows around display availability, user activation, reconnect and close states, bounded messages, and an in-page fallback.
Use getDisplayMedia with explicit user choice, visible indicators, revocation, and privacy limits for screen, window, and tab capture.
Design a Web Share Target PWA that validates GET and POST ingress, limits data retention, and keeps a safe fallback.
How CSS media queries such as color-gamut and prefers-color-scheme create fingerprint signals, and how to keep CSS and JavaScript values consistent.
How seeded browsing history differs from scripted navigation, user data directory reuse and history.pushState, and how history.length differs from the global history database.
How canPlayType, isTypeSupported, and MediaCapabilities report media support, why results vary by host, and how to check them against one profile.
How a fixed integer noise seed makes Canvas, WebGL, Audio, and text-measurement output repeat across sessions, restarts, and CI runs, and how to verify it.
Handle empty voice lists, locale matching, speech queues, and errors without treating voices as an identity signal.
Learn why JavaScript recursion limits vary across contexts, how to review the signal responsibly, and what BotBrowser can control.
Use navigator.hardwareConcurrency and Worker benchmarks to see how browsers report CPU cores and what that signal can reveal.
How navigator values such as platform, hardwareConcurrency, deviceMemory, languages, and userAgentData combine into a fingerprint signal, and how to check that they stay coherent.
How navigator.connection values add to a browser fingerprint, why a proxy exit can disagree with them, and how to review a network information policy.
Use browser speech synthesis as an optional, user-controlled enhancement while keeping readable text, keyboard access, and reliable fallbacks.
Protect browser privacy by keeping storage quota, JavaScript heap limits, and device memory aligned with the active profile across supported hosts.
Plan consistent TCP and UDP proxy policy for QUIC and WebRTC, verify authorized applications, and retain clear fallback and release evidence.
Keep external URL handling aligned with the selected platform profile while preserving standard web navigation.
WebAuthn and passkey capability checks are limited feature hints, not proof of hardware, identity, credentials, or sign-in success. Learn how to use them respectfully.
WebRTC codec enumeration through getCapabilities() and SDP offers exposes media capabilities that differ by operating system. Learn how the codec list becomes a platform signal.
What is a WebRTC IP leak? Learn how ICE candidates expose network identity, how browser-level controls prevent leaks, and how to validate proxy consistency.
Compare WebRTC profile, real, and disabled postures; review ICE candidates and selected-pair statistics against route policy.
Use Playwright traces to diagnose authorized browser tests while controlling capture scope, sensitive contents, sharing, and retention.
A practical guide to keeping proxy routing, DNS resolution, timezone, and WebRTC network information aligned throughout a browser workflow.
Compare browser extensions, injected scripts, and browser-level changes by the layer each controls, and learn how to verify fingerprint consistency yourself.
Understand the proposed Private Verification Tokens design, its current platform status, and how privacy-focused browsers can evaluate it without assuming a rollout.
Understand how HTTP caching, proxy routes, and cache directives interact so a managed browser can troubleshoot route changes without confusing cached data with a live response.
Plan CPU and memory limits for containerized browser workloads without confusing capacity signals with browser identity or privacy guarantees.
Manage browser sessions on shared workstations with clear ownership, privacy boundaries, and verifiable cleanup.
Learn how the Credential Management API mediates sign-in, how to preserve user choice and recovery, and where server validation remains essential.
How DNS leaks expose browsing activity when a proxy is used, where common mitigations leave gaps, and how to verify resolver paths with a leak test.
Client Hints headers such as sec-ch-ua describe browser brand, version, and platform on every request. Learn where mismatches arise and how to compare headers with JavaScript.
Separate headless display limits, CDM availability, robustness and license policy with a reproducible Widevine troubleshooting matrix.
Learn how Document Picture-in-Picture creates a same-origin document window, why user activation matters, and how to keep an accessible fallback.
Coordinate same-origin browser contexts with BroadcastChannel while preserving close, reload, fallback, and privacy boundaries.
Use the Idle Detection API with clear user intent, explicit permission handling, and a strict distinction between browser idle state and application presence.
Use keyboard layout mapping for accessible labels without turning a layout into a keystroke or identity signal.
Manage screen wake locks with visibility recovery, explicit release, and a useful fallback when browser mediation ends the lock.
Use the Web Storage event for same-origin UI updates while respecting source-window exclusion, partitions, timing, and privacy limits.
Build Web Share controls around capability checks, transient activation, validation, cancellation, and accessible fallback.
Separate a WebUSB chooser grant from device readiness, handle protected interfaces and disconnects, and keep USB metadata out of routine logs.
Understand how the browser back-forward cache restores pages, which lifecycle events matter, and how to protect private state without breaking navigation.
How Canvas rendering differences become a stable device identifier, why VPNs and private browsing leave it unchanged, and how profile-driven deterministic output works.
A practical, standards-based fixture for same-document and cross-document Navigation API transitions, history state, event ordering, privacy boundaries, and fallbacks.
Understand the Partitioned cookie attribute, its top-level-site key, and how to design safe embedded sessions without confusing CHIPS with storage access.
A standards-led guide to Permissions Policy, browser capability checks, and privacy-aware embedded feature tests.
Use WebTransport deliberately: distinguish secure-origin API support, stream semantics, server policy, and what BotBrowser can and cannot observe.
Understand WebRTC mDNS host candidates, RFC 8828 privacy goals, and bounded browser evidence.
Use bounded retries, checkpoints, and privacy-aware ownership to recover browser work after a network interruption without duplicating side effects.
Learn what browser site-data clearing removes, what survives, and how sign-out and account switching should protect application sessions.
A standards-based migration from brittle User-Agent parsing to Client Hints: what reduction and deprecation change, and why UA sniffing still breaks.
Understand which realm owns a browser API and why reflection is a bounded compatibility observation, not an identity signal.
Separate team-owned browser identities with clear storage, permission, ownership, and handoff boundaries.
Write browser test reports that separate expected behavior, observed evidence, uncertainty, privacy boundaries, and product action.
Observe owned performance entries, aggregate useful health signals, and control observer overhead without persistent user profiling.
Map browser, operating-system, proxy, and enterprise network responsibilities so managed browser workflows remain reviewable when policies or routes change.
Understand how browsers use HTTP proxies, CONNECT tunnels, headers, redirects, and DNS, with practical guidance for reliable proxy configurations.
Learn which signals link accounts, how contexts and separate instances differ, and how to check that each identity has its own route, fingerprint settings, and storage.
Learn what the Battery Status API exposes, why support is limited, and how to use battery information without turning it into a user profile.
Learn what navigator.deviceMemory can and cannot tell a web app, how to adapt resources progressively, and where privacy limits apply.
How operating systems and browsers choose between IPv6 and IPv4, how to design availability fallbacks, and where privacy boundaries apply.
Use optional network hints for reversible resource choices, with standards-aware fallbacks, privacy limits, and BotBrowser boundaries.
How navigator.canShare() and navigator.share() decide whether a share is accepted, where permissions and file limits differ, and how to test both.
Understand what a WebGPU adapter represents, when it may be unavailable, and how to choose graphics fallbacks without collecting a device profile.
A practical BotBrowser guide to authenticated QUIC proxy routes, CONNECT choices, HTTP/3 limits, and privacy-safe rollout checks.
Decide when to enable per-context CDP mouse hover coalescing, validate the visible result, and keep click, drag, wheel, keyboard, touch, and pen input on their normal paths.
Enable browser page translation with your own Google Cloud key while keeping privacy, profile consistency, and cost controls explicit.
Learn how permission states become browser identity signals and how profile-backed consistency protects privacy while preserving normal access controls.
Keep approved browser traffic on predictable proxy routes with profile-aligned PAC policy, clear source controls, and defensive deployment guidance.
Why a browser profile, not the host operating system, should define browser identity, and how to check that it holds on Windows, macOS, and Linux hosts.
Page runtime, proxy route, timezone, locale, and language should describe one setup. Learn a repeatable way to validate that agreement and to sort support cases by owner.
How a web page can probe localhost ports to infer which local services you run, why common workarounds fall short, and how to verify uniform loopback behavior.
How a fixed noise seed keeps Canvas, WebGL, Audio, and text-metric noise reproducible across sessions, and how to check that one seed repeats while another seed changes the output.
Load a profile, keep the signals you just read about consistent inside the browser, and confirm the result on your own machine before a rollout.