Cadenas User-Agent y Client Hints: qué revelan y qué se congeló

La cadena user agent es la señal de identificación más antigua de la web y la que más ha cambiado en los últimos años. Leerla bien exige saber qué sigue habiendo en ella, qué se congeló deliberadamente y adónde fue a parar el detalle eliminado.
Qué dice la cadena
Una cadena actual de Chromium en Windows tiene este aspecto: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36. Los tokens históricos (Mozilla/5.0, AppleWebKit, like Gecko, Safari) están ahí por compatibilidad con scripts escritos hace décadas y no aportan información. Las partes útiles son la plataforma (Windows NT 10.0, incluso en Windows 11), la arquitectura y la versión mayor del navegador.
Lo que antes figuraba ahí se ha eliminado a propósito. La versión menor y de parche es ahora 0.0.0. La versión de Windows está fijada en 10.0. Las cadenas de Android ya no incluyen el modelo del dispositivo. Es la «reducción del user agent» que Chromium aplicó entre 2022 y 2023 precisamente porque la cadena se había convertido en una superficie de huella digital.
Client Hints: los mismos datos, bajo petición
El detalle eliminado no se esfumó; se trasladó a los User-Agent Client Hints. Un servidor puede pedir campos concretos con una cabecera Accept-CH, y el navegador enviará entonces cabeceras como Sec-CH-UA-Platform-Version o Sec-CH-UA-Model en peticiones posteriores. Las pistas de baja entropía (marca y versión mayor, plataforma, indicador de móvil) se envían por defecto. Las de alta entropía (versión completa, arquitectura, bits, modelo, versión de la plataforma) solo se envían a los sitios que las piden, y un script puede solicitar el mismo conjunto mediante navigator.userAgentData.getHighEntropyValues().
El objetivo del diseño es que el sitio tenga que declarar lo que quiere, lo que hace visible y auditable la recopilación. En la práctica, un sitio que quiera crear una huella digital todavía puede pedirlo todo; la diferencia es que pedirlo es una solicitud que el navegador puede ver, registrar o rechazar.
El problema de la coherencia
Como ahora los mismos datos están disponibles desde dos fuentes, pueden compararse. Un navegador que cambia su cadena user agent para declararse macOS pero deja que navigator.userAgentData.platform siga informando de Windows ha creado una contradicción trivial de detectar. Lo mismo vale para la propiedad navigator.platform, las fuentes propias de cada sistema operativo visibles para la página y la cadena de renderizador WebGL, que nombra un controlador gráfico que solo existe en un sistema operativo. Falsear solo la cadena lleva años siendo una estrategia perdedora.
Leer la tuya
Un diagnóstico muestra la cadena en bruto, el navegador y la versión que se extraen de ella, y el motor (Blink, Gecko o WebKit). Ten en cuenta que todos los navegadores en iOS informan de WebKit, diga lo que diga la marca, porque Apple lo exige. Si el nombre del navegador analizado te sorprende, la cadena está siendo alterada por una extensión o un ajuste del perfil; que eso sea un problema depende de si el resto del navegador concuerda con la alteración.


