返回博客
指纹

WebGL 指纹保护:使用 BotBrowser 控制 GPU 身份

BotBrowser 如何通过基于配置文件的指纹保护控制 WebGL GPU 身份和参数。

隐私风险

WebGL 暴露详细的 GPU 硬件信息,包括厂商、渲染器、支持的扩展和硬件能力限制。这些信息形成可用于跨网站追踪的独特指纹。

BotBrowser 如何控制 WebGL 身份

BotBrowser 在浏览器引擎层面管理 WebGL 指纹,确保所有 WebGL 相关值形成一致且真实的硬件配置。

基于配置文件的 GPU 身份

加载指纹配置文件时,WebGL 参数自动匹配配置文件的目标 GPU:

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

厂商字符串、渲染器字符串、扩展列表和所有参数限制均与配置文件的 GPU 配置一致。

WebGL 配置覆盖

使用显式 WebGL 配置进行精细控制:

chrome --bot-profile="/path/to/profile.enc" \
       --bot-config-webgl='{"vendor":"Google Inc.","renderer":"ANGLE (NVIDIA GeForce GTX 1660 SUPER)"}'

跨平台 GPU 控制

在 AMD 或 Intel 硬件的机器上运行配置为 NVIDIA GPU 的配置文件。BotBrowser 确保 WebGL 报告配置文件的 GPU 身份。

验证

启动后,确认 WebGL 值匹配:

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 webgl = await page.evaluate(() => {
  const canvas = document.createElement('canvas');
  const gl = canvas.getContext('webgl');
  const ext = gl.getExtension('WEBGL_debug_renderer_info');
  return {
    vendor: gl.getParameter(ext.UNMASKED_VENDOR_WEBGL),
    renderer: gl.getParameter(ext.UNMASKED_RENDERER_WEBGL),
  };
});
console.log('WebGL:', webgl);
await browser.close();

厂商和渲染器应匹配加载的配置文件的 GPU 配置。

开始使用

  1. GitHub 下载 BotBrowser
  2. 使用 --bot-profile 加载指纹配置文件
  3. 使用 --bot-config-webgl 进行显式 GPU 配置
  4. 使用上述脚本验证 WebGL 身份
#webgl#gpu#fingerprinting#privacy#hardware