Skip to content

Commit 684241f

Browse files
committed
docs: changelog 2026-03-26, variations-in-context flag, custom history depth, cross-link 9 docs
1 parent 3f38a5e commit 684241f

9 files changed

Lines changed: 56 additions & 11 deletions

File tree

ADVANCED_FEATURES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ Consistent behavior across execution modes.
142142
**Incognito-Mode Consistency:**
143143
- Fingerprint protection maintained in incognito mode
144144
- 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)
145146

146147
<a id="webrtc-leak-protection"></a>
147148
### WebRTC Leak Protection

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@
33
> **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).
44
55

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+
621
## [2026-03-23]
722
### Major
823
- **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.

CLI_FLAGS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,8 @@ Runtime toggles that don’t rely on profile `configs` but still override behavi
423423
- `--bot-disable-debugger`: Ignore JavaScript `debugger` statements to avoid pauses
424424
- `--bot-mobile-force-touch`: Force touch events on/off for mobile device simulation
425425
- `--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.
427428
- `--bot-always-active` (PRO, default true): Keep windows/tabs active even when unfocused. See [Active Window Emulation](ADVANCED_FEATURES.md#active-window-emulation)
428429
- `--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)
429430
- `--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)

PER_CONTEXT_FINGERPRINT.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@ Most `--bot-*` flags from [CLI_FLAGS.md](CLI_FLAGS.md) work with per-context con
302302
| Network | [`--bot-network-info-override`](ADVANCED_FEATURES.md#network-info-privacy) for profile-defined `navigator.connection` values |
303303
| WebRTC | [`--bot-webrtc-ice`](ADVANCED_FEATURES.md#webrtc-leak-protection) for ICE endpoint control |
304304
| Window | [`--bot-always-active`](ADVANCED_FEATURES.md#active-window-emulation) to maintain active window state |
305-
| Session | `--bot-inject-random-history` for session authenticity |
305+
| Session | `--bot-inject-random-history` for session authenticity (supports precise count, e.g., `=15`) |
306+
| Google Headers | [`--bot-enable-variations-in-context`](CLI_FLAGS.md#behavior--protection-toggles) for `X-Client-Data` consistency in incognito contexts (ENT Tier2) |
306307
| Proxy | [`--proxy-server`](CLI_FLAGS.md#enhanced-proxy-configuration) (configure proxy per-context via `botbrowserFlags`), `--proxy-ip` to skip IP lookups |
307308
| HTTP | [`--bot-custom-headers`](CLI_FLAGS.md#--bot-custom-headers-pro) for custom HTTP request headers per context |
308309
| Config | [`--bot-config-platform`, `--bot-config-timezone`, `--bot-config-noise-canvas`, etc.](CLI_FLAGS.md#profile-configuration-override-flags) |

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ Examples: [Playwright](examples/playwright/) • [Puppeteer](examples/puppeteer/
178178
|---------|-----------|-------|
179179
| Cookie management (inline JSON or file) | [--bot-cookies](CLI_FLAGS.md#--bot-cookies) | [Guide](docs/guides/identity/COOKIE_MANAGEMENT.md) |
180180
| Bookmark injection | [--bot-bookmarks](CLI_FLAGS.md#--bot-bookmarks) | [Guide](docs/guides/identity/BOOKMARK_SEEDING.md) |
181-
| 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) |
182+
| Incognito `X-Client-Data` consistency | [Behavior Toggles](CLI_FLAGS.md#behavior--protection-toggles) | [Guide](docs/guides/fingerprint/INCOGNITO.md) |
182183
| Always-active windows (anti-focus-tracking) | [Active Window](ADVANCED_FEATURES.md#active-window-emulation) | [Guide](docs/guides/fingerprint/ACTIVE_WINDOW.md) |
183184
| Custom HTTP headers (CLI + CDP) | [--bot-custom-headers](CLI_FLAGS.md#--bot-custom-headers-pro) | [Guide](docs/guides/network/CUSTOM_HTTP_HEADERS.md) |
184185
| Plaintext storage access (cookies, localStorage) | [Storage Access](examples/storage-access/) | [Guide](docs/guides/identity/STORAGE_ACCESS.md) |

docs/guides/fingerprint/INCOGNITO.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ BotBrowser normalizes incognito-related differences at the browser engine level:
4646

4747
4. **Timing consistency.** Storage operation timing is normalized to match profile expectations across both browsing modes.
4848

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.
50+
4951
---
5052

5153
<a id="common-scenarios"></a>

docs/guides/getting-started/CLI_RECIPES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,18 @@ chromium-browser \
314314
### 20. Pre-populate bookmarks and browsing history
315315

316316
```bash
317+
# Random history (2-7 entries)
317318
chromium-browser \
318319
--bot-profile="/path/to/profile.enc" \
319320
--bot-bookmarks='[{"title":"Example","type":"url","url":"https://example.com"}]' \
320321
--bot-inject-random-history \
321322
--user-data-dir="$(mktemp -d)"
323+
324+
# Precise history count (15 entries, history.length = 16)
325+
chromium-browser \
326+
--bot-profile="/path/to/profile.enc" \
327+
--bot-inject-random-history=15 \
328+
--user-data-dir="$(mktemp -d)"
322329
```
323330

324331
---

docs/guides/identity/HISTORY_SEEDING.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,26 @@ A browser with no browsing history lacks the session state of a normally used br
2222

2323
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.
2424

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).
28+
2529
---
2630

2731
<a id="quick-start"></a>
2832

2933
## Quick Start
3034

3135
```bash
36+
# Random mode (2-7 entries)
3237
chromium-browser \
3338
--bot-profile="/path/to/profile.enc" \
3439
--bot-inject-random-history
40+
41+
# Precise mode (exactly 15 entries, history.length = 16)
42+
chromium-browser \
43+
--bot-profile="/path/to/profile.enc" \
44+
--bot-inject-random-history=15
3545
```
3646

3747
```javascript
@@ -42,15 +52,15 @@ const browser = await chromium.launch({
4252
headless: true,
4353
args: [
4454
"--bot-profile=/path/to/profile.enc",
45-
"--bot-inject-random-history",
55+
"--bot-inject-random-history=15", // Or omit "=15" for random mode
4656
],
4757
});
4858

4959
const page = await browser.newPage();
5060
await page.goto("https://example.com");
5161

5262
const historyLength = await page.evaluate(() => window.history.length);
53-
console.log("History length:", historyLength); // Greater than 1
63+
console.log("History length:", historyLength); // 16 with =15, or 3-8 with random mode
5464

5565
await browser.close();
5666
```
@@ -63,18 +73,19 @@ await browser.close();
6373

6474
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.
6575

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.
6777

6878
3. **Session scope.** History injection applies to each new session. The injected entries do not persist beyond the session lifetime.
6979

7080
### Configuration via profile
7181

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:
7383

74-
```json
84+
```jsonc
7585
{
7686
"configs": {
77-
"injectRandomHistory": true
87+
"injectRandomHistory": true // Random mode (2-7 entries)
88+
// "injectRandomHistory": 15 // Precise mode (15 entries)
7889
}
7990
}
8091
```
@@ -142,6 +153,7 @@ await page.goto("https://example.com");
142153
|---------|----------|
143154
| `window.history.length` is still 1 | Ensure `--bot-inject-random-history` is in the `args` array, not as a separate option. |
144155
| History not injected with PRO license | Verify your license is active. Check the BotBrowser console output for license errors. |
156+
| Precise count not working | Use `=` syntax: `--bot-inject-random-history=15`. The value must be between 1 and 25. |
145157

146158
---
147159

profiles/PROFILE_CONFIGS.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ All configurations are embedded in the `configs` field inside your profile JSON
9292
| `location` | `auto` = IP-based (default); `real` = system GPS; custom coordinates (ENT Tier1). | `auto` |
9393
| `browserBrand` (ENT Tier2, webview requires ENT Tier3) | Override for `navigator.userAgentData.brands` and related UA fields. Supports chromium, chrome, edge, brave, opera, webview. | `chrome` |
9494
| `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` |
9697
| `disableDebugger` | Prevents unintended interruptions from JavaScript debugger statements during fingerprint protection workflows. | `true` |
9798
| `keyboard` | Choose keyboard fingerprint source: `profile` (emulated from profile) or `real` (use system keyboard). | `profile` |
9899
| `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
274275
// brandFullVersion: optional brand-specific full version string for UA-CH tuples when the vendor’s cadence diverges
275276
"brandFullVersion": "142.0.3595.65",
276277
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
278280
"injectRandomHistory": false,
279281
282+
// enableVariationsInContext (ENT Tier2): Include X-Client-Data headers in incognito contexts for Google domains
283+
"enableVariationsInContext": false,
284+
280285
// disableDebugger: Prevents unintended interruptions from JavaScript debugger statements during fingerprint protection workflows
281286
"disableDebugger": true,
282287

0 commit comments

Comments
 (0)