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
- UDP-over-SOCKS5 tunnel (ENT Tier3) for QUIC/STUN so ICE presets are only needed when UDP is unavailable
42
42
- The standard `--disable-quic` flag remains available for deployments that prefer TCP-based HTTP protocols while keeping SOCKS5 proxying
43
-
- PAC-like request callback (ENT Tier3) for trusted PAC sources and approved request-aware policy workflows while preserving standard PAC routing behavior and helping maintain HTTP/2 continuity in automation-heavy sessions
43
+
- PAC-like request callback (ENT Tier3) for trusted PAC sources, authenticated PAC proxy routes, controlled synthetic responses, and request-aware policy workflows that preserve standard PAC routing behavior and help maintain HTTP/2 continuity in automation-heavy sessions
44
44
- Optional ICE control via [`--bot-webrtc-ice`](CLI_FLAGS.md#behavior--protection-toggles) (ENT Tier1) when the proxy lacks UDP support
45
45
- Chromium-level implementation: tunneling lives inside the network stack, no external proxy-chain hijacking
46
46
@@ -206,6 +206,7 @@ Advanced font rendering with consistent results across hosts.
206
206
- Rare symbol and Unicode character support
207
207
- Cross-worker consistency
208
208
- HarfBuzz text shaping integration
209
+
- Profile-backed local font requests and request-by-name loading
209
210
210
211
**Text-Rendering Features:**
211
212
- Skia anti-aliasing integration
@@ -256,6 +257,7 @@ Comprehensive hardware emulation and fingerprint management.
256
257
- Screen resolution and color depth control
257
258
- Multi-monitor configuration simulation
258
259
- Refresh rate and orientation control via [`--bot-config-orientation`](CLI_FLAGS.md#profile-configuration-override-flags) for mobile profiles, covering all orientation APIs and CSS media queries
260
+
- Opt-in mobile keyboard visual viewport behavior via [`--bot-mobile-keyboard`](CLI_FLAGS.md#profile-configuration-override-flags) for Android and WebKit-family mobile profiles
259
261
260
262
**Device-Behavior Simulation:**
261
263
- Authentic device memory reporting
@@ -368,7 +370,7 @@ Comprehensive hardware emulation and fingerprint management.
368
370
<aid="webkit-family-profile-consistency"></a>
369
371
### WebKit-Family Profile Consistency (ENT Tier4)
370
372
371
-
WebKit-family Profile Consistency extends premium profiles beyond browser-brand metadata. The browser runtime, CSS behavior, media capability behavior, navigation headers, TLS behavior, HTTP/2 behavior, and per-context isolation are shaped to match the selected WebKit-family profile across supported host platforms.
373
+
WebKit-family Profile Consistency extends premium profiles beyond browser-brand metadata. The browser runtime, workers, CSS behavior, fonts, canvas output, permission states, navigation headers, TLS behavior, HTTP/2 behavior, and per-context isolation are shaped to match the selected WebKit-family profile across supported host platforms.
372
374
373
375
Supported profile bundles cover desktop and mobile WebKit-family identities. Use this capability for authorized privacy validation when a workflow needs browser-family consistency while keeping BotBrowser's profile, automation, and per-context control model.
374
376
@@ -396,18 +398,18 @@ See [WebKit-family Profile Consistency](WEBKIT_PROFILE_CONSISTENCY.md) for the f
Copy file name to clipboardExpand all lines: CHANGELOG.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,23 @@
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-07-11]
7
+
### Major
8
+
-**Chromium Core -> 150.0.7871.46**: Updated the Chrome 150 release line to 150.0.7871.46. Web Platform consistency, rendering accuracy, and security patches stay aligned with upstream Chrome.
9
+
10
+
### New
11
+
-**PAC Synthetic Responses (`RESPONSE`, `RESPONSE_FILE`, ENT Tier3)**: Trusted `BotBrowserFindProxyForRequest(...)` callbacks can now provide controlled HTTP responses directly from approved file or embedded PAC sources.
12
+
-**Mobile Keyboard Viewport Control (`--bot-mobile-keyboard`)**: Added opt-in mobile keyboard behavior that updates the visual viewport for Android and WebKit-family mobile profile workflows.
13
+
14
+
### Improvements
15
+
-**WebKit-Family Profile Consistency**: Expanded desktop and mobile browser-family consistency across runtime, CSS, font, canvas, permission, worker, and navigation surfaces.
16
+
-**Authenticated PAC Routing**: Improved standard and request-aware PAC routing for authenticated proxy results, including per-context workflows.
17
+
-**Per-Context Identity Lifecycle**: Strengthened profile application rules so identity-bearing settings are established before the first page or worker starts while supported live session controls remain available afterward.
18
+
-**Profile-Backed Permission, Font, and Canvas Behavior**: Improved permission-state replay, local font handling, multilingual fallback, and wide-gamut Canvas 2D consistency.
19
+
-**High-Concurrency and Headless Stability**: Improved per-context stability under heavy load, kept headless profile guidance in terminal output without visible windows, and reduced benign Linux container startup diagnostics.
20
+
-**Profile Package Guidance**: Improved startup guidance for missing, invalid, expired, and version-mismatched profile packages, with clearer access paths for Chrome 150 profiles.
21
+
22
+
6
23
## [2026-07-06]
7
24
### New
8
25
-**Memory and Storage Quota Controls (`--bot-js-heap-size-limit`, `--bot-storage-quota`)**: Added explicit `profile`, `real`, and byte-value controls for profile-backed memory and storage quota behavior in Chrome 149 sessions.
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
@@ -120,7 +120,7 @@ function BotBrowserFindProxyForRequest(url, host, method, headersB64, bodyB64, b
120
120
}
121
121
```
122
122
123
-
The callback can return `CONTINUE`, `BLOCK`, `CAPTURE`, `CAPTURE_TAG <tag>`, `CAPTURE_FILE <path>`, or a standard PAC route such as `DIRECT`, `PROXY`, `HTTPS`, `SOCKS`, `SOCKS4`, or `SOCKS5`. Capture records are written only when `CAPTURE` and `CAPTURE_FILE <path>` are returned together. Guide: [PAC-Like Request Callback](docs/guides/network/PAC_REQUEST_POLICY.md)
123
+
The callback can return `CONTINUE`, `BLOCK`, `CAPTURE`, `CAPTURE_TAG <tag>`, `CAPTURE_FILE <path>`, `RESPONSE <raw_http_response_b64>`, `RESPONSE_FILE <path>`, or a standard PAC route such as `DIRECT`, `PROXY`, `HTTPS`, `SOCKS`, `SOCKS4`, or `SOCKS5`. Standard PAC routes and request callback routes can include credentials, for example `SOCKS5 user:pass@proxy.example.com:1080`. Capture records are written only when `CAPTURE` and `CAPTURE_FILE <path>` are returned together. Synthetic responses are limited to approved `file:` and `data:` PAC sources and fail closed when response input is invalid. Guide: [PAC-Like Request Callback](docs/guides/network/PAC_REQUEST_POLICY.md)
124
124
125
125
Use this when request-aware policy should stay in PAC routing instead of CDP-level request interception, especially for workflows that need help preserving HTTP/2 connection and stream continuity while directing selected requests to different routes.
-`--bot-config-keyboard=profile`: Keyboard settings: profile (emulated), real (system keyboard)
473
473
-`--bot-config-fonts=profile`: Font settings: profile (embedded), expand (profile + fallback), real (system fonts)
474
+
-`--bot-mobile-keyboard[=true|false]`: Opt-in mobile keyboard visual viewport behavior. When enabled for a mobile profile, trusted user focus on an editable field reduces `visualViewport.height` while leaving the layout viewport unchanged. Default: false.
474
475
-`--bot-config-orientation=<value>`: Screen orientation for mobile profiles. Desktop profiles ignore this flag.
475
476
-`profile` - Auto-detect from profile dimensions (default)
476
477
-`landscape` / `portrait` - Force orientation, automatically adjusting all related dimensions to match
Copy file name to clipboardExpand all lines: PER_CONTEXT_FINGERPRINT.md
+17-4Lines changed: 17 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -99,7 +99,7 @@ No additional configuration needed. Fingerprint consistency is maintained across
99
99
100
100
Configure fingerprint flags on an existing BrowserContext.
101
101
102
-
> **Critical**: `BotBrowser.setBrowserContextFlags` must be called on a **browser-level** CDP session, and **before** any page is created in that context. The renderer process reads its flags at startup. If a page already exists, the flags will not take effect.
102
+
> **Critical**: `BotBrowser.setBrowserContextFlags` must be called on a **browser-level** CDP session, and identity-bearing flags must be set **before** any page is created in that context. The first renderer seals the context identity. Later profile or identity changes are rejected to prevent mixed identity surfaces.
103
103
104
104
```javascript
105
105
constpuppeteer=require('puppeteer-core');
@@ -302,7 +302,7 @@ Most `--bot-*` flags from [CLI_FLAGS.md](CLI_FLAGS.md) work with per-context con
302
302
| Noise Seed |[`--bot-noise-seed`](CLI_FLAGS.md#behavior--protection-toggles) for deterministic fingerprint variance |
303
303
| Timing |[`--bot-time-scale`](CLI_FLAGS.md#behavior--protection-toggles) for performance timing control, [`--bot-time-seed`](ADVANCED_FEATURES.md#performance-timing-protection) for deterministic timing diversity, [`--bot-stack-seed`](ADVANCED_FEATURES.md#stack-depth-control) for stack depth variation, [`--bot-fps`](CLI_FLAGS.md#behavior--protection-toggles) for frame rate control |
304
304
| Storage and Memory |[`--bot-js-heap-size-limit`](CLI_FLAGS.md#--bot-js-heap-size-limit) and [`--bot-storage-quota`](CLI_FLAGS.md#--bot-storage-quota) for profile, real, or explicit byte-value policy |
305
-
| Network |[`--bot-network-info-override`](ADVANCED_FEATURES.md#network-info-privacy) for profile-defined `navigator.connection` values |
305
+
| Network |[`--bot-network-info-override`](ADVANCED_FEATURES.md#network-info-privacy) for profile-defined `navigator.connection` values, [`--bot-local-dns`](CLI_FLAGS.md#--bot-local-dns-ent-tier1) for context DNS policy|
306
306
| WebRTC |[`--bot-webrtc-ice`](ADVANCED_FEATURES.md#webrtc-leak-protection) for ICE endpoint control |
307
307
| Window |[`--bot-always-active`](ADVANCED_FEATURES.md#active-window-emulation) to maintain active window state |
308
308
| Session |`--bot-inject-random-history` for session authenticity (supports precise count, e.g., `=15`), `--bot-cookies` for context-scoped cookie import at creation time |
@@ -314,6 +314,14 @@ Most `--bot-*` flags from [CLI_FLAGS.md](CLI_FLAGS.md) work with per-context con
314
314
315
315
See [CLI_FLAGS.md](CLI_FLAGS.md) for the complete flag reference.
316
316
317
+
## Context Identity Lifecycle
318
+
319
+
A BrowserContext accepts its full profile and identity configuration until its first renderer starts. This includes profile, browser and platform identity, locale, screen and window metrics, and other fingerprint-bearing settings.
320
+
321
+
After the first page or worker starts, the context identity is sealed. Later identity-bearing changes are rejected instead of partially updating an active context. Create a new BrowserContext when a different profile or device identity is required.
322
+
323
+
Supported live session controls remain available after identity sealing when they do not replace the context identity. These include dynamic proxy routing through the dedicated proxy commands, route-only proxy updates, custom headers, color scheme, storage quota policy, and LocalDNS policy where supported.
324
+
317
325
## Use Cases
318
326
319
327
**Privacy Research at Scale**
@@ -335,25 +343,30 @@ See [CLI_FLAGS.md](CLI_FLAGS.md) for the complete flag reference.
335
343
336
344
⚠️ `BotBrowser.setBrowserContextFlags` must be called on a **browser-level CDP session** (`browser.target().createCDPSession()` in Puppeteer, `browser.newBrowserCDPSession()` in Playwright). Page-level CDP sessions (`page.createCDPSession()`) do not have access to the `BotBrowser` domain.
337
345
338
-
⚠️ `setBrowserContextFlags` must be called **before** creating any page in that context. The renderer process reads its flags at startup. If a page already exists, the new flags will not apply to that renderer. Correct order: `createBrowserContext` → `setBrowserContextFlags` → `newPage`.
346
+
⚠️ `setBrowserContextFlags` must be called **before** creating any page in that context. The first renderer seals identity-bearing settings. Later profile and identity changes are rejected. Correct order: `createBrowserContext` → `setBrowserContextFlags` → `newPage`.
339
347
340
348
⚠️ Per-context proxy via `botbrowserFlags` or `createBrowserContext` must be set before navigation. To switch proxies at runtime, use `BotBrowser.setBrowserContextProxy` (ENT Tier3). See [Dynamic Proxy Switching](ADVANCED_FEATURES.md#dynamic-proxy-switching).
341
349
342
-
⚠️ Some network-layer settings ([`--bot-local-dns`](CLI_FLAGS.md#--bot-local-dns-ent-tier1), UDP proxy support) apply at the browser level and cannot be configured per-context.
350
+
⚠️ UDP proxy support applies at the browser level and cannot be configured per-context. LocalDNS policy can be assigned per context and remains a supported live-safe policy after identity sealing.
343
351
344
352
⚠️ Each context can load a completely different profile (`--bot-profile`), or use `--bot-config-*` flags to override specific settings from the browser's base profile.
345
353
346
354
⚠️ Proxy merge semantics are explicit: `--proxy-server` in `botbrowserFlags` sets or replaces the context proxy route, while `--proxy-ip` only supplies the exit IP for geo-detection. If a context was created with `createBrowserContext({ proxyServer })`, a later `setBrowserContextFlags` call with only `--proxy-ip` preserves that proxy route.
347
355
356
+
⚠️ After identity sealing, dedicated proxy commands may update the route server or bypass rules while preserving the existing proxy IP identity. Changing or clearing `proxyIp` is rejected because it would change geo-derived identity. Create a new BrowserContext when the exit identity must change.
357
+
348
358
## High-Concurrency Tuning
349
359
360
+
Chrome 150.0.7871.46 improves stability for rapid BrowserContext churn and shared graphics and request workloads under load.
361
+
350
362
When running many per-context fingerprints under one browser instance (for example, 20+ concurrent BrowserContexts), launch with [`--bot-gpu-emulation=priority`](CLI_FLAGS.md#--bot-gpu-emulation) to prioritize GPU and WebGPU command-buffer scheduling across sibling contexts. Default behavior is unchanged; this is an opt-in mode for high-concurrency workloads. See [`--bot-gpu-emulation` modes](docs/guides/deployment/LINUX_GPU_BACKEND.md#gpu-emulation-modes).
351
363
352
364
## Related Documentation
353
365
354
366
-[Guides](https://botbrowser.io/docs/) - Comprehensive guides for all BotBrowser features
355
367
-[CLI Flags Reference](CLI_FLAGS.md)
356
368
-[Advanced Features](ADVANCED_FEATURES.md)
369
+
-[Permission State Consistency](docs/guides/fingerprint/PERMISSIONS.md)
0 commit comments