指纹
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 配置。
开始使用
- 从 GitHub 下载 BotBrowser
- 使用
--bot-profile加载指纹配置文件 - 使用
--bot-config-webgl进行显式 GPU 配置 - 使用上述脚本验证 WebGL 身份
#webgl#gpu#fingerprinting#privacy#hardware