Proteccion de huella de fuentes con BotBrowser
Como BotBrowser controla las listas de fuentes y metricas de texto a nivel del motor del navegador para senales de fuentes consistentes entre plataformas.
El riesgo de privacidad
Las fuentes instaladas y las metricas de renderizado de texto crean una senal de rastreo. La combinacion de fuentes disponibles varia segun el SO, las aplicaciones instaladas y los paquetes de idioma. Las APIs de medicion de texto tambien producen resultados especificos de la plataforma debido a diferencias en los motores de renderizado de fuentes.
La solucion de BotBrowser
BotBrowser controla las senales relacionadas con fuentes a nivel del motor del navegador, no mediante inyeccion de JavaScript o bloqueo de APIs.
Listas de fuentes consistentes con la plataforma
Cuando un perfil apunta a una plataforma especifica, BotBrowser reporta las fuentes apropiadas independientemente del SO host:
chrome --bot-profile="/path/to/windows-profile.enc" \
--user-data-dir="$(mktemp -d)"
Las consultas de enumeracion de fuentes devuelven el conjunto correcto de fuentes para la plataforma objetivo.
Alineacion de metricas de fuentes
Las APIs de medicion de texto devuelven metricas consistentes con el motor de renderizado de fuentes de la plataforma objetivo:
- Resultados de
measureText() - Dimensiones de desplazamiento de elementos con fuentes especificas
- Mediciones de caja delimitadora de fuentes
Sin necesidad de bloqueo
A diferencia de las extensiones que bloquean el acceso a fuentes (lo cual es en si detectable), BotBrowser permite el uso normal de las APIs de fuentes mientras controla los resultados. Los sitios web funcionan normalmente, pero las senales coinciden con el perfil.
Verificacion
Despues de cargar un perfil, verifica la consistencia de fuentes:
const { chromium } = require('playwright-core');
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/windows-profile.enc',
],
headless: true,
});
const page = await (await browser.newContext()).newPage();
const fontCheck = await page.evaluate(() => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.font = '72px monospace';
const fallbackWidth = ctx.measureText('mmmmm').width;
ctx.font = '72px Arial, monospace';
const arialWidth = ctx.measureText('mmmmm').width;
return {
arialAvailable: arialWidth !== fallbackWidth,
arialWidth,
fallbackWidth,
};
});
console.log('Verificacion de fuentes:', fontCheck);
Verificaciones clave:
- La disponibilidad de fuentes coincide con la plataforma objetivo
- Las metricas de texto no revelan el SO host real
- Sin advertencias de "font access blocked"
Primeros pasos
- Descarga BotBrowser desde GitHub
- Carga un perfil que coincida con tu plataforma deseada con
--bot-profile - Prueba la consistencia de fuentes con herramientas de prueba de huellas
- Lee la guia de fuentes para mas detalles