Skip to Content

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-v8log

Disable V8Log explicitly with:

--bot-v8-log=none

Modes

ModeUse
noneV8Log disabled. This is the normal default.
sampleReduced evidence trace for most validation reproductions.
fullFuller 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.join

The 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

ProblemSolution
No files are writtenConfirm --bot-v8-log is not none, the directory exists, and the browser process can write to it.
Files are too largeUse sample, shorten the reproduction, and close the browser immediately after the target behavior appears.
A high-volume API obscures later evidenceAdd its exact API name to --bot-v8-log-exclude-api.
V8Log does not start in releaseConfirm the profile and subscription include V8Log support.


Legal Disclaimer & Terms of UseResponsible Use Guidelines. BotBrowser is for authorized fingerprint protection and privacy research only.

Updated