Skip to content

Commit 8e1af72

Browse files
committed
docs: changelog 2026-07-11, release 150.0.7871.46 with PAC and profile consistency updates
1 parent 206bdb8 commit 8e1af72

22 files changed

Lines changed: 307 additions & 33 deletions

ADVANCED_FEATURES.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Smart auto-configuration: timezone, locale, and languages derive from your proxy
4040
- DNS-through-proxy plus credentialed proxy URLs keep browser-level geo signals protected
4141
- UDP-over-SOCKS5 tunnel (ENT Tier3) for QUIC/STUN so ICE presets are only needed when UDP is unavailable
4242
- 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
4444
- Optional ICE control via [`--bot-webrtc-ice`](CLI_FLAGS.md#behavior--protection-toggles) (ENT Tier1) when the proxy lacks UDP support
4545
- Chromium-level implementation: tunneling lives inside the network stack, no external proxy-chain hijacking
4646

@@ -206,6 +206,7 @@ Advanced font rendering with consistent results across hosts.
206206
- Rare symbol and Unicode character support
207207
- Cross-worker consistency
208208
- HarfBuzz text shaping integration
209+
- Profile-backed local font requests and request-by-name loading
209210

210211
**Text-Rendering Features:**
211212
- Skia anti-aliasing integration
@@ -256,6 +257,7 @@ Comprehensive hardware emulation and fingerprint management.
256257
- Screen resolution and color depth control
257258
- Multi-monitor configuration simulation
258259
- 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
259261

260262
**Device-Behavior Simulation:**
261263
- Authentic device memory reporting
@@ -368,7 +370,7 @@ Comprehensive hardware emulation and fingerprint management.
368370
<a id="webkit-family-profile-consistency"></a>
369371
### WebKit-Family Profile Consistency (ENT Tier4)
370372

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

373375
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.
374376

@@ -396,18 +398,18 @@ See [WebKit-family Profile Consistency](WEBKIT_PROFILE_CONSISTENCY.md) for the f
396398
| Component | Capabilities |
397399
|-----------|-------------|
398400
| **Keyboard** | Layout emulation, key timing, input method simulation |
399-
| **Touch Interface** | Touch event simulation, gesture recognition, mobile patterns |
401+
| **Touch Interface** | Touch event simulation, gesture recognition, mobile patterns, opt-in mobile keyboard visual viewport behavior |
400402
| **Mouse Patterns** | Movement algorithms, click timing, scroll behavior |
401403
| **Languages** | Accept-Language headers, navigator.languages, speech recognition |
402-
| **Permissions** | API permission simulation, notification handling, media access |
404+
| **Permissions** | Profile-backed permission states, notification handling, media access, and per-context consistency |
403405
| **Navigation** | History management, referrer control, navigation timing |
404406

405407
<a id="graphics-rendering-engine"></a>
406408
### Graphics & Rendering Engine
407409

408410
| Component | Capabilities |
409411
|-----------|-------------|
410-
| **Canvas** | 2D context noise, consistent image data, cross-worker consistency |
412+
| **Canvas** | 2D context noise, standard and wide-gamut color-space consistency, consistent image data, cross-worker consistency |
411413
| **WebGL** | Precision GPU micro-benchmarks, driver-specific behavior, extension simulation |
412414
| **WebGPU** | Modern GPU API support, compute shader capabilities, buffer management |
413415
| **Text Rendering** | HarfBuzz text shaping, cross-platform fonts, emoji rendering consistency |
@@ -417,7 +419,7 @@ See [WebKit-family Profile Consistency](WEBKIT_PROFILE_CONSISTENCY.md) for the f
417419

418420
| Component | Capabilities |
419421
|-----------|-------------|
420-
| **Proxy** | Authentication embedding, credential management, geo-detection, PAC-like request callback |
422+
| **Proxy** | Authentication embedding, credential management, geo-detection, authenticated PAC routing, PAC-like request callback, controlled synthetic responses |
421423
| **WebRTC** | SDP control, ICE candidate filtering, media stream simulation |
422424
| **HTTP Headers** | Google-specific headers (ENT Tier2), Chrome behavior patterns, request timing |
423425
| **Media Devices** | AudioContext simulation, speech synthesis, device enumeration |

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,23 @@
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-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+
623
## [2026-07-06]
724
### New
825
- **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.

CLI_FLAGS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ function BotBrowserFindProxyForRequest(url, host, method, headersB64, bodyB64, b
120120
}
121121
```
122122

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)
124124

125125
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.
126126

@@ -471,6 +471,7 @@ BotBrowser auto-generates matching `navigator.userAgentData` (brands, fullVersio
471471
472472
- `--bot-config-keyboard=profile`: Keyboard settings: profile (emulated), real (system keyboard)
473473
- `--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.
474475
- `--bot-config-orientation=<value>`: Screen orientation for mobile profiles. Desktop profiles ignore this flag.
475476
- `profile` - Auto-detect from profile dimensions (default)
476477
- `landscape` / `portrait` - Force orientation, automatically adjusting all related dimensions to match

PER_CONTEXT_FINGERPRINT.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ No additional configuration needed. Fingerprint consistency is maintained across
9999

100100
Configure fingerprint flags on an existing BrowserContext.
101101

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.
103103
104104
```javascript
105105
const puppeteer = require('puppeteer-core');
@@ -302,7 +302,7 @@ Most `--bot-*` flags from [CLI_FLAGS.md](CLI_FLAGS.md) work with per-context con
302302
| Noise Seed | [`--bot-noise-seed`](CLI_FLAGS.md#behavior--protection-toggles) for deterministic fingerprint variance |
303303
| 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 |
304304
| 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 |
306306
| WebRTC | [`--bot-webrtc-ice`](ADVANCED_FEATURES.md#webrtc-leak-protection) for ICE endpoint control |
307307
| Window | [`--bot-always-active`](ADVANCED_FEATURES.md#active-window-emulation) to maintain active window state |
308308
| 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
314314

315315
See [CLI_FLAGS.md](CLI_FLAGS.md) for the complete flag reference.
316316

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+
317325
## Use Cases
318326

319327
**Privacy Research at Scale**
@@ -335,25 +343,30 @@ See [CLI_FLAGS.md](CLI_FLAGS.md) for the complete flag reference.
335343

336344
⚠️ `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.
337345

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`.
339347

340348
⚠️ 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).
341349

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

344352
⚠️ 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.
345353

346354
⚠️ 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.
347355

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+
348358
## High-Concurrency Tuning
349359

360+
Chrome 150.0.7871.46 improves stability for rapid BrowserContext churn and shared graphics and request workloads under load.
361+
350362
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).
351363

352364
## Related Documentation
353365

354366
- [Guides](https://botbrowser.io/docs/) - Comprehensive guides for all BotBrowser features
355367
- [CLI Flags Reference](CLI_FLAGS.md)
356368
- [Advanced Features](ADVANCED_FEATURES.md)
369+
- [Permission State Consistency](docs/guides/fingerprint/PERMISSIONS.md)
357370
- [Profile Configuration](profiles/PROFILE_CONFIGS.md)
358371
- [Per-Context Fingerprint Example (Puppeteer)](examples/puppeteer/per_context_fingerprint.js)
359372
- [Per-Context Fingerprint Example (Playwright)](examples/playwright/nodejs/per_context_fingerprint.js)

0 commit comments

Comments
 (0)