返回博客
指纹

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 配置。

开始使用

  1. GitHub 下载 BotBrowser
  2. 使用 --bot-profile 加载指纹配置文件
  3. 使用 --bot-config-webgpu 进行显式 WebGPU 配置
  4. 验证 WebGL 和 WebGPU 之间的 GPU 身份一致性
#webgpu#fingerprinting#gpu#privacy#graphics