Zuruck zum Blog
Anti-Erkennung

Navigator Properties: What Your Browser Reveals About Your Device

Navigator properties like hardwareConcurrency, deviceMemory, and platform expose hardware details. Learn what is revealed and how to manage it.

Introduction

The navigator object is the browser's self-description. It exposes hardware specifications, operating system details, browser version, and device capabilities. Each property adds bits of identifying information to your browser's fingerprint, and inconsistencies between navigator properties and other signals are a primary detection vector.

Key Navigator Properties

hardwareConcurrency

Reports the number of logical CPU cores:

navigator.hardwareConcurrency // 8

This is one of the most stable fingerprinting signals. It does not change between sessions, is consistent across all JavaScript contexts (main thread, workers, service workers), and provides approximately 4-5 bits of entropy.

Common values: 2, 4, 6, 8, 12, 16. Values above 32 are unusual for consumer devices.

deviceMemory

Reports approximate RAM in gigabytes:

navigator.deviceMemory // 8

Values are bucketed: 0.25, 0.5, 1, 2, 4, 8. This is a Client Hints property, also sent in the Device-Memory HTTP header when requested by the server.

platform

Reports the operating system platform:

navigator.platform // "Win32", "MacIntel", "Linux x86_64"

Despite being deprecated, this property is still widely checked and must be consistent with the User-Agent string.

User-Agent and Client Hints

The traditional User-Agent string is being replaced by User-Agent Client Hints (UA-CH):

// Traditional UA
navigator.userAgent
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..."

// Client Hints
navigator.userAgentData.brands
// [{brand: "Google Chrome", version: "133"}, ...]

navigator.userAgentData.platform // "Windows"
navigator.userAgentData.mobile   // false

// High-entropy hints (requires server opt-in)
const data = await navigator.userAgentData.getHighEntropyValues([
  'platformVersion', 'architecture', 'model', 'fullVersionList'
]);

Consistency Requirements

The danger is not in any single property but in inconsistencies between them:

MismatchDetection
UA says Windows, platform says MacIntelImmediate flag
128 cores on a "mobile" deviceImpossible configuration
0.25 GB memory with 16 coresUnrealistic combination
Chrome UA but Firefox-specific propertiesCross-browser leak

Worker Context Consistency

Navigator properties must be consistent across execution contexts:

// Main thread
navigator.hardwareConcurrency // 8

// Web Worker
self.navigator.hardwareConcurrency // Must also be 8

// Service Worker
self.navigator.hardwareConcurrency // Must also be 8

Inconsistencies between main thread and worker navigator properties indicate spoofing.

How BotCloud Manages Navigator Properties

BotCloud profiles set all navigator properties at the engine level:

  • hardwareConcurrency matches realistic values for the claimed device type
  • deviceMemory is consistent with the core count and device class
  • platform aligns with the User-Agent and Client Hints
  • Client Hints return values consistent with the full profile
  • Worker contexts inherit the same values as the main thread

All properties are set before any JavaScript executes, so there is no timing gap where original values are briefly visible.

Best Practices

  1. Ensure navigator properties are mutually consistent - cores, memory, and platform should match a real device
  2. Use realistic hardware specs - 4 or 8 cores and 8 GB memory is the most common desktop configuration
  3. Keep browser version current - Old versions are uncommon and may receive extra scrutiny
  4. Verify Client Hints - Test both low-entropy and high-entropy hint values
  5. Check worker consistency - Run the same navigator checks in Web Workers
#navigator#hardware#fingerprinting#client-hints