V8Log Forensics
Use V8Log only for authorized privacy validation sessions.
Overview
V8Log is a gated, privacy-focused browser-runtime forensics mode that records calls into local JSONL files. It is intended for short, controlled validation sessions where teams need evidence of how page scripts collect browser signals.
This is useful when source review is incomplete because a page uses packed JavaScript, VM-style bundles, or WebAssembly. V8Log records the runtime call sequence, arguments, return previews, frame context, and event order so the collection behavior can be reviewed directly.
V8Log does not change normal browsing behavior when disabled. Release use is gated by profile entitlement and build policy.
For background on browser fingerprinting as a privacy issue, see Fingerprint Privacy.
Quick Start
Create a writable directory and launch BotBrowser with V8Log enabled:
mkdir -p /tmp/botbrowser-v8log
chromium-browser \
--bot-profile="path/to/profile.enc" \
--bot-v8-log=sample \
--bot-v8-log-dir=/tmp/botbrowser-v8log \
--user-data-dir="$(mktemp -d)" \
"https://example.com"For deeper validation review, use full only when requested:
--bot-v8-log=full
--bot-v8-log-dir=/tmp/botbrowser-v8logDisable V8Log explicitly with:
--bot-v8-log=noneModes
| Mode | Use |
|---|---|
none | V8Log disabled. This is the normal default. |
sample | Reduced evidence trace for most validation reproductions. |
full | Fuller evidence trace for short, guided reproductions. |
Use the shortest page flow that reproduces the behavior. Evidence files can grow quickly on complex pages.
API Filters
Use --bot-v8-log-exclude-api to omit high-volume APIs that are outside the current review:
--bot-v8-log=full
--bot-v8-log-exclude-api=String.charCodeAt,Array.joinThe value is a comma-separated list of exact API names. Whitespace around names is ignored. Excluded calls are not written and do not consume the trace event budget. Other APIs and events without an API name remain in the trace.
Apply a separate list to each BrowserContext when concurrent validation sessions need different evidence scopes.
Sample JSONL
An interactive sample is available in the V8Log Viewer.
The viewer is preloaded with a short public-page capture. It shows how V8Log connects call expressions, arguments, return previews, frame context, API group, and event order.
Playwright Example
import { chromium } from "playwright-core";
const browser = await chromium.launch({
executablePath: process.env.BOTBROWSER_EXEC_PATH,
headless: true,
args: [
`--bot-profile=${process.env.BOT_PROFILE_PATH}`,
"--bot-v8-log=sample",
"--bot-v8-log-dir=/tmp/botbrowser-v8log",
],
});
const page = await browser.newPage();
await page.goto("https://example.com");
await page.waitForTimeout(5000);
await browser.close();Troubleshooting
| Problem | Solution |
|---|---|
| No files are written | Confirm --bot-v8-log is not none, the directory exists, and the browser process can write to it. |
| Files are too large | Use sample, shorten the reproduction, and close the browser immediately after the target behavior appears. |
| A high-volume API obscures later evidence | Add its exact API name to --bot-v8-log-exclude-api. |
| V8Log does not start in release | Confirm the profile and subscription include V8Log support. |
Related Documentation
Legal Disclaimer & Terms of Use • Responsible Use Guidelines. BotBrowser is for authorized fingerprint protection and privacy research only.