Huella digital del navegador explicada para scrapers
La huella digital del navegador consiste en identificar a un visitante por el conjunto de rasgos de su navegador, y no por una cookie ni por una cuenta. Los sitios la usan para reconocer visitantes que vuelven, detectar fraude y reconocer la automatización. Si haces scraping de la web, te la encontrarás. Esta guía explica qué se mide, por qué una sola incoherencia causa problemas y cómo mantener un perfil coherente y bien comportado para recopilar datos públicos. También explica los límites de lo que puede y debe hacer el ajuste de la huella digital.
De qué está hecha una huella digital
Ningún valor aislado identifica a un navegador por sí solo, pero muchos valores pequeños juntos a menudo sí. Entre las entradas habituales están:
- User agent y client hints. El nombre, la versión y el sistema operativo que el navegador declara.
- Geometría de pantalla y ventana. El tamaño de la pantalla, la profundidad de color, la relación de píxeles del dispositivo y el tamaño del viewport.
- Idioma y zona horaria. La cabecera
Accept-Language,navigator.languagesy la zona horaria que declara el navegador. - Fuentes instaladas. Las fuentes que la página puede detectar, que varían según el sistema operativo y el software instalado.
- Salida de canvas, WebGL y audio. Pequeñas diferencias en cómo la pila gráfica o de audio dibuja o procesa una imagen o un sonido de prueba.
- Rasgos de red. El handshake TLS, la configuración de HTTP/2 y el orden de las cabeceras de la petición. El servidor los ve incluso antes de que se ejecute ningún JavaScript.
Los scripts de huella digital combinan estos datos en un hash o una puntuación. Cuantas más señales estables e inusuales haya, más identificador será el resultado.
Por qué destaca una incoherencia
Un navegador real es internamente coherente. Su sistema operativo coincide con sus fuentes, su zona horaria coincide con su idioma y el tamaño de su pantalla coincide con el dispositivo en el que funciona. Los scrapers suelen romper esa coherencia sin pretenderlo:
- Un user agent copiado de un navegador de escritorio, enviado desde un servidor sin fuentes instaladas.
- Una cabecera
Accept-Languageen alemán en una petición cuya IP está en otro país, con una zona horaria que no coincide con ninguno de los dos. - Un entorno headless que declara un tamaño de ventana que ningún monitor real usa.
- Un perfil nuevo en cada ejecución, de modo que las cookies y el historial nunca parecen los de un visitante que vuelve.
Cada incoherencia es una señal pequeña. Juntas pueden pasar una petición de "visitante normal" a "necesita un análisis más detenido".
Paso 1: mide tu propia configuración
Puedes ver lo que una página aprende de tu cliente cargando una página de prueba de huella digital que controles, o una página de diagnóstico que ejecutes en local. Mira los valores y pregúntate si describen una máquina coherente. Este es un ejemplo mínimo con Playwright que imprime algunos de ellos:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
page = context.new_page()
page.goto("https://example.com") # replace with a page you own
print(page.evaluate("""() => ({
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
platform: navigator.platform,
viewport: [innerWidth, innerHeight]
})"""))
browser.close()
Paso 2: mantén una sola identidad por perfil
El hábito más útil es tratar cada identidad de scraping como un solo perfil. Dale un conjunto único de rasgos y mantenlos durante toda su vida:
- Una única versión de navegador, un único user agent y un único sistema operativo.
- Un locale, idioma y zona horaria que coincidan con la región de donde procede el tráfico.
- Un viewport y un factor de escala de dispositivo que coincidan con una pantalla real.
- Un almacén de cookies persistente, para que el perfil se comporte como un visitante que vuelve.
Cambiar uno de estos valores en cada petición resulta más sospechoso que mantenerlos estables. La coherencia es lo que hace que un perfil parezca normal.
Paso 3: regula el perfil como lo haría un visitante
La huella digital es solo una entrada. Los sitios también vigilan la velocidad a la que un perfil recorre el sitio. Un perfil que carga doscientas páginas de producto en un minuto no es una persona, sea cual sea su huella. Reparte las peticiones, guarda los resultados en caché y detente cuando una página lo indique. La lista de comprobación para scrapear sin ser bloqueado trata el ritmo con más detalle.
Paso 4: conoce los límites
El ajuste de la huella digital no puede hacer que un perfil automatizado parezca una persona que no está allí. Los sitios que se apoyan en la huella digital suelen combinarla con límites de frecuencia, comprobaciones de cuenta y, a veces, un captcha. Cuando aparece un captcha, necesitas un token de un solver y no más ajustes de huella. El tipo de captcha en vivo en Scarnox es PopularCaptcha; la guía de PopularCaptcha en Python muestra la petición. Para tener el panorama completo de qué widgets existen, lee tipos de captcha explicados.
Y, más importante, evadir la huella digital no es una licencia para ignorar las reglas de un sitio. Si el titular ha restringido el acceso automatizado, lo correcto es parar, no hacer que tu perfil sea más difícil de notar. La huella digital también es un tema de privacidad. Algunos sitios la usan para seguir a personas entre visitas, y esa es una razón más para recopilar solo lo que tu proyecto necesita.
Scrapea de forma responsable
- Lee el
robots.txty los términos antes de hacer scraping de un sitio. - Usa menos peticiones, y más lentas, y guarda en caché lo que ya has recopilado.
- No crees perfiles para hacerte pasar por personas reales ni para eludir un bloqueo.
- No almacenes datos personales que no necesitas, y trata con cuidado los que sí guardes.
Dónde seguir leyendo
Si tu objetivo está detrás de una comprobación a nivel de navegador, empieza por la detección de navegadores headless, que cubre las señales específicas de los navegadores automatizados. Las páginas que necesitan JavaScript para mostrar su contenido se tratan en scrapear sitios con JavaScript.
Empieza con crédito de prueba gratis, sin tarjeta: crea una cuenta y prueba el flujo de PopularCaptcha contra una página que sea tuya. Para conocer las tarifas actuales, consulta la página de precios.