You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ADVANCED_FEATURES.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -142,6 +142,7 @@ Consistent behavior across execution modes.
142
142
**Incognito-Mode Consistency:**
143
143
- Fingerprint protection maintained in incognito mode
144
144
- Consistent fingerprint between normal and incognito modes
145
+
-`X-Client-Data` header consistency in incognito contexts via [`--bot-enable-variations-in-context`](CLI_FLAGS.md#behavior--protection-toggles) (ENT Tier2)
Copy file name to clipboardExpand all lines: CHANGELOG.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,21 @@
3
3
> **Research scope:** Entries in this changelog describe features evaluated in authorized labs and defensive benchmarking programs. Follow the [Legal Disclaimer](DISCLAIMER.md) and [Responsible Use Guidelines](RESPONSIBLE_USE.md). We work with security vendors to investigate any misuse, so report concerns to [support@botbrowser.io](mailto:support@botbrowser.io).
4
4
5
5
6
+
## [2026-03-26]
7
+
### Major
8
+
-**Chromium Core → 146.0.7680.165**: Updated to Chrome 146 stable (146.0.7680.165). Web Platform consistency, rendering accuracy, and security patches stay aligned with upstream Chrome.
9
+
10
+
### New
11
+
-**Incognito `X-Client-Data` Consistency (`--bot-enable-variations-in-context`)** (ENT Tier2): Incognito browser contexts now include `X-Client-Data` headers on Google domains when enabled, matching the behavior of normal browsing sessions.
12
+
13
+
-**Custom History Depth (`--bot-inject-random-history={number}`)**: History injection now accepts a specific count (e.g., `--bot-inject-random-history=15`) for precise control over `history.length`, in addition to the existing random mode.
14
+
15
+
### Improvements
16
+
-**High-Concurrency Stability**: 100+ concurrent browser contexts now run without crashes or memory corruption.
17
+
18
+
-**Emoji Rendering on Cross-Platform Profiles**: Emoji now renders in color when running macOS profiles on Linux hosts, producing correct Canvas toDataURL output.
19
+
20
+
6
21
## [2026-03-23]
7
22
### Major
8
23
-**Chromium Core → 146.0.7680.154**: Updated to Chrome 146 stable (146.0.7680.154). Web Platform consistency, rendering accuracy, and security patches stay aligned with upstream Chrome.
Copy file name to clipboardExpand all lines: CLI_FLAGS.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -423,7 +423,8 @@ Runtime toggles that don’t rely on profile `configs` but still override behavi
423
423
-`--bot-disable-debugger`: Ignore JavaScript `debugger` statements to avoid pauses
424
424
-`--bot-mobile-force-touch`: Force touch events on/off for mobile device simulation
425
425
-`--bot-disable-console-message` (ENT Tier1): Suppress console.* output from CDP logs (default true); prevents framework hooks from enabling `Console.enable`/`Runtime.enable`, which blocks fingerprint signals. Guide: [Console Suppression](docs/guides/fingerprint/CONSOLE_SUPPRESSION.md)
426
-
-`--bot-inject-random-history` (PRO): Add synthetic browsing history for session authenticity. Guide: [History Seeding](docs/guides/identity/HISTORY_SEEDING.md)
426
+
-`--bot-inject-random-history` (PRO): Add synthetic browsing history for session authenticity. Accepts `true` (random 2-7 entries), a number for precise control (e.g., `=15` for `history.length` of 16), or `false` to disable. Guide: [History Seeding](docs/guides/identity/HISTORY_SEEDING.md)
427
+
-`--bot-enable-variations-in-context` (ENT Tier2): Include `X-Client-Data` headers in incognito browser contexts for Google domains, same as regular browsing. Disabled by default.
427
428
-`--bot-always-active` (PRO, default true): Keep windows/tabs active even when unfocused. See [Active Window Emulation](ADVANCED_FEATURES.md#active-window-emulation)
428
429
-`--bot-webrtc-ice=google` (ENT Tier1): Override STUN/TURN endpoints observed by JavaScript/WebRTC to control ICE signaling; accepts presets (`google`) or `custom:stun:...,turn:...`. See [WebRTC Leak Protection](ADVANCED_FEATURES.md#webrtc-leak-protection). Guide: [WebRTC Leak Prevention](docs/guides/network/WEBRTC_LEAK_PREVENTION.md)
429
430
-`--bot-noise-seed` (ENT Tier2): Integer seed (1-UINT32_MAX) for the deterministic noise RNG; each seed augments privacy variance across Canvas 2D/WebGL/WebGPU images, text metrics, text layout, ClientRect measurements, and offline audio hashes so you can treat a seed as a reproducible fingerprint ID per tenant while keeping runs stable. `0` keeps noise active with profile defaults. Guide: [Noise Seed Reproducibility](docs/guides/fingerprint/NOISE_SEED_REPRODUCIBILITY.md)
| Google Headers |[`--bot-enable-variations-in-context`](CLI_FLAGS.md#behavior--protection-toggles) for `X-Client-Data` consistency in incognito contexts (ENT Tier2) |
306
307
| Proxy |[`--proxy-server`](CLI_FLAGS.md#enhanced-proxy-configuration) (configure proxy per-context via `botbrowserFlags`), `--proxy-ip` to skip IP lookups |
307
308
| HTTP |[`--bot-custom-headers`](CLI_FLAGS.md#--bot-custom-headers-pro) for custom HTTP request headers per context |
| Random history injection |[Behavior Toggles](CLI_FLAGS.md#behavior--protection-toggles)|[Guide](docs/guides/identity/HISTORY_SEEDING.md)|
181
+
| History injection (random or precise count) |[Behavior Toggles](CLI_FLAGS.md#behavior--protection-toggles)|[Guide](docs/guides/identity/HISTORY_SEEDING.md)|
Copy file name to clipboardExpand all lines: docs/guides/fingerprint/INCOGNITO.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,8 @@ BotBrowser normalizes incognito-related differences at the browser engine level:
46
46
47
47
4.**Timing consistency.** Storage operation timing is normalized to match profile expectations across both browsing modes.
48
48
49
+
5.**`X-Client-Data` header consistency.** With [`--bot-enable-variations-in-context`](../../../CLI_FLAGS.md#behavior--protection-toggles) (ENT Tier2), incognito contexts send `X-Client-Data` headers on Google domains, same as regular browsing.
Copy file name to clipboardExpand all lines: docs/guides/identity/HISTORY_SEEDING.md
+18-6Lines changed: 18 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,16 +22,26 @@ A browser with no browsing history lacks the session state of a normally used br
22
22
23
23
The `--bot-inject-random-history` flag tells BotBrowser to inject synthetic browsing history entries at startup. This populates `window.history.length` and related navigation state with realistic values, making the session consistent with a browser that has been in use over time.
24
24
25
+
The flag supports two modes:
26
+
-**Random mode** (`--bot-inject-random-history` or `=true`): Injects a random number of entries (2-7), producing a `history.length` of 3-8.
27
+
-**Precise mode** (`--bot-inject-random-history=15`): Injects exactly the specified number of entries, producing a `history.length` of N+1 (e.g., 15 entries = `history.length` of 16).
console.log("History length:", historyLength); //Greater than 1
63
+
console.log("History length:", historyLength); //16 with =15, or 3-8 with random mode
54
64
55
65
awaitbrowser.close();
56
66
```
@@ -63,18 +73,19 @@ await browser.close();
63
73
64
74
1.**History generation.** When the flag is enabled, BotBrowser injects a set of synthetic navigation entries into the browser's session history before the first page load.
65
75
66
-
2.**Realistic values.** The injected history produces a `window.history.length` value consistent with normal browsing patterns.
76
+
2.**Realistic values.** The injected history produces a `window.history.length` value consistent with normal browsing patterns. In random mode, `history.length` ranges from 3 to 8. In precise mode, `history.length` equals the specified count plus one.
67
77
68
78
3.**Session scope.** History injection applies to each new session. The injected entries do not persist beyond the session lifetime.
69
79
70
80
### Configuration via profile
71
81
72
-
You can also enable history injection through the profile JSON instead of the CLI flag:
82
+
You can also enable history injection through the profile configuration instead of the CLI flag:
73
83
74
-
```json
84
+
```jsonc
75
85
{
76
86
"configs": {
77
-
"injectRandomHistory": true
87
+
"injectRandomHistory":true// Random mode (2-7 entries)
|`browserBrand` (ENT Tier2, webview requires ENT Tier3) | Override for `navigator.userAgentData.brands` and related UA fields. Supports chromium, chrome, edge, brave, opera, webview. |`chrome`|
94
94
|`brandFullVersion` (ENT Tier2)| Optional brand-specific full version string for UA-CH tuples (Edge/Opera cadences). |`""`|
95
-
|`injectRandomHistory` (PRO feature) | Optionally adds synthetic navigation history for fingerprint protection in browser state testing. |`false`|
95
+
|`injectRandomHistory` (PRO feature) | Adds synthetic navigation history for session authenticity. Accepts `true` (random 2-7 entries), a number for precise control (e.g., `15` for `history.length` of 16), or `false` to disable. |`false`|
96
+
|`enableVariationsInContext` (ENT Tier2) | Include `X-Client-Data` headers in incognito browser contexts for Google domains, same as regular browsing. |`false`|
96
97
|`disableDebugger`| Prevents unintended interruptions from JavaScript debugger statements during fingerprint protection workflows. |`true`|
97
98
|`keyboard`| Choose keyboard fingerprint source: `profile` (emulated from profile) or `real` (use system keyboard). |`profile`|
98
99
|`mediaTypes`| Media types behavior: `expand` (prefer local decoders), `profile` (profile-defined list), `real` (native system). |`expand`|
@@ -274,9 +275,13 @@ These fields work together with `--user-agent` CLI flag. BotBrowser auto-generat
274
275
// brandFullVersion: optional brand-specific full version string for UA-CH tuples when the vendor’s cadence diverges
275
276
"brandFullVersion": "142.0.3595.65",
276
277
277
-
// injectRandomHistory: Optionally adds synthetic navigation history for fingerprint protection in browser state testing
278
+
// injectRandomHistory: Adds synthetic navigation history for session authenticity
279
+
// Accepts true (random 2-7 entries), a number (e.g. 15), or false
278
280
"injectRandomHistory": false,
279
281
282
+
// enableVariationsInContext (ENT Tier2): Include X-Client-Data headers in incognito contexts for Google domains
283
+
"enableVariationsInContext": false,
284
+
280
285
// disableDebugger: Prevents unintended interruptions from JavaScript debugger statements during fingerprint protection workflows
0 commit comments