Incognito Mode Fingerprint Consistency
Private browsing mode can introduce behavioral differences. BotBrowser keeps fingerprint surfaces consistent between regular and incognito sessions.
Prerequisites
- BotBrowser binary installed. See INSTALLATION.md.
- A profile file (
.encor.json).
Quick Start
chromium-browser \
--bot-profile="/path/to/profile.enc"Use this baseline first, then verify that regular and incognito contexts return the same fingerprint profile.
Overview
Incognito (private browsing) mode changes several browser behaviors that can create measurable differences. BotBrowser maintains consistent fingerprint protection across both regular and incognito modes. The fingerprint values produced in incognito are identical to those in a regular session with the same profile.
How BotBrowser Provides Protection
BotBrowser normalizes incognito-related differences at the browser engine level:
-
Storage quota consistency. Storage quota values remain consistent regardless of browsing mode. The profile defines the quota values, and BotBrowser enforces them in both modes.
-
API behavior alignment. APIs that behave differently in incognito mode are normalized to produce identical responses. This includes storage-related APIs and file system access patterns.
-
Fingerprint surface parity. All fingerprint surfaces (Canvas, WebGL, AudioContext, fonts, screen metrics, etc.) produce identical values in both regular and incognito modes when using the same profile.
-
Timing consistency. Storage operation timing is normalized to match profile expectations across both browsing modes.
-
X-Client-Dataheader consistency. With--bot-enable-variations-in-context(ENT Tier2), incognito contexts sendX-Client-Dataheaders on Google domains, same as regular browsing.
Common Scenarios
Regular mode session
import { chromium } from "playwright-core";
const browser = await chromium.launch({
executablePath: process.env.BOTBROWSER_EXEC_PATH,
headless: true,
args: [
"--bot-profile=/path/to/profile.enc",
],
});
const page = await browser.newPage();
await page.goto("https://example.com");
// ... use the page as needed ...
await browser.close();Incognito mode session
const context = await browser.newContext({
// Incognito-like context with no persistent storage
});
const page = await context.newPage();
await page.goto("https://example.com");
// ... use the page as needed ...
await context.close();Verifying consistency
To verify that regular and incognito modes produce identical fingerprints:
- Launch BotBrowser with a profile and open a fingerprint testing site such as BrowserLeaks or CreepJS in a regular context.
- Open the same site in a new (incognito-like) context using
browser.newContext(). - Compare the reported fingerprint values between both contexts. All values (Canvas, WebGL, storage quota, etc.) should be identical when using the same profile.
Troubleshooting / FAQ
| Problem | Solution |
|---|---|
| Storage quota differs between modes | Ensure you are using the same profile for both sessions. Different profiles may define different quota values. |
| Extensions not loading in incognito | This is standard browser behavior. BotBrowser does not modify extension loading policies. |
| Fingerprint values differ between modes | Verify both sessions use the same --bot-profile and identical --bot-config-* flags. |
Next Steps
- Multi-Account Isolation. Run multiple isolated sessions with different fingerprints.
- Cross-Platform Profiles. Consistent profiles across operating systems.
- Advanced Features. Technical details on headless and incognito consistency.
Related documentation: Advanced Features | Profile Configuration | CLI Flags Reference
Legal Disclaimer & Terms of Use • Responsible Use Guidelines . BotBrowser is for authorized fingerprint protection and privacy research only.