指纹
WebGPU 指纹保护:使用 BotBrowser 控制 GPU 身份
BotBrowser 如何通过基于配置文件的指纹保护控制 WebGPU 适配器信息、特性和限制。
隐私风险
WebGPU 作为 WebGL 的继任者,暴露 GPU 适配器详情、特性集和硬件限制。这些值可用于指纹追踪。
BotBrowser 如何控制 WebGPU 身份
BotBrowser 在浏览器引擎层面管理 WebGPU 信号,确保 WebGPU 值与加载的指纹配置文件一致。
基于配置文件的 WebGPU 控制
加载配置文件时,WebGPU 适配器信息、特性和限制自动匹配:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
显式 WebGPU 配置
使用 --bot-config-webgpu 标志进行精细控制:
chrome --bot-profile="/path/to/profile.enc" \
--bot-config-webgpu='{"vendor":"nvidia","architecture":"ampere","device":"geforce rtx 3080"}' \
--user-data-dir="$(mktemp -d)"
WebGL 和 WebGPU 一致性
BotBrowser 确保 GPU 身份在 WebGL 和 WebGPU API 之间保持一致。
跨平台 GPU 控制
在集成 Intel 显卡的机器上运行配置为独立 NVIDIA GPU 的配置文件。BotBrowser 确保两个 API 都报告配置文件的 GPU 身份。
验证
启动后,确认 WebGPU 值匹配:
const { chromium } = require('playwright-core');
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: ['--bot-profile=/path/to/profile.enc'],
headless: true,
});
const page = await (await browser.newContext()).newPage();
const gpuInfo = await page.evaluate(async () => {
const adapter = await navigator.gpu.requestAdapter();
const info = await adapter.requestAdapterInfo();
return {
vendor: info.vendor,
architecture: info.architecture,
device: info.device,
features: [...adapter.features],
canvasFormat: navigator.gpu.getPreferredCanvasFormat(),
};
});
console.log('WebGPU:', gpuInfo);
await browser.close();
所有值应匹配加载的配置文件的 GPU 配置。
开始使用
- 从 GitHub 下载 BotBrowser
- 使用
--bot-profile加载指纹配置文件 - 使用
--bot-config-webgpu进行显式 WebGPU 配置 - 验证 WebGL 和 WebGPU 之间的 GPU 身份一致性
#webgpu#fingerprinting#gpu#privacy#graphics