V8Log Forensics

May 31, 2026 · View on GitHub

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.


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