Prepárate para la reducción de usuarios-agentes de Chrome

Chrome sigue reduciendo la información que se comparte en su cadena de usuario-agente para ayudar a proteger la privacidad del usuario.

A partir de Chrome 110 (febrero de 2023), agregaremos gradualmente un valor fijo para la versión de Android y el modelo de dispositivo. El valor predeterminado siempre será Android 10 en un modelo K. Si dependes del usuario-agente para detectar la versión del sistema operativo, el modelo de dispositivo Android o la versión detallada del navegador de un visitante, es posible que debas tomar medidas. Sigue leyendo para obtener más detalles.

user-agent es una cadena que proporciona información sobre el navegador del usuario y su entorno, por ejemplo, saber que un visitante de tu sitio ejecuta Chrome 110 en Android. Tu navegador lo envía en un encabezado HTTP y lo pone a disposición a través de JavaScript.

El problema con la cadena usuario-agente completa es que comparte información detallada sobre el navegador de forma predeterminada en cada solicitud, lo que constituye un factor importante para permitir el seguimiento entre sitios. Nuestro objetivo es reducir las oportunidades de recopilar estos datos de forma pasiva y proporcionar APIs para permitirte acceder a los datos de forma activa cuando los necesites.

Reducción de usuarios-agentes hasta ahora

Ya empezamos a quitar algunos de los datos de usuario-agente que están disponibles de forma predeterminada y a reemplazarlos por valores fijos.

A partir de Chrome 101, reemplazamos el número de la versión secundaria por ceros, p.ej., Chrome/101.3.2.1 se convirtió en Chrome/101.0.0.0.

A partir de Chrome 107, reemplazamos la versión del sistema operativo de escritorio y la información de la CPU por un valor fijo de la plataforma.

MacMacintosh; Intel Mac OS X 10_15_7
WindowsWindows NT 10.0; Win64; x64
ChromeOSX11; CrOS x86_64 14541.0.0
LinuxX11; Linux x86_64

Se corrigieron la versión de Android y el modelo de dispositivo a partir de Chrome 110

A partir de Chrome 110, presentamos gradualmente un valor fijo para la versión de Android y el modelo de dispositivo. En lugar de ver algo como Android 13 en Pixel 7, el valor predeterminado siempre será Android 10 en un modelo K.

Antes: el usuario-agente incluye la versión de Android y el modelo de dispositivo

Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

Después: se redujo el usuario-agente con la versión de Android y el modelo de dispositivo corregidos

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

No hay cambios en el formato de usuario-agente

La reducción de usuario-agente cambia los valores que se muestran en el usuario-agente, pero el formato se mantiene igual. Si solo usas el usuario-agente para leer el tipo de sistema operativo o la versión principal del navegador, esos datos seguirán actualizándose como antes y no será necesario que realices ninguna acción.

La plataforma, el nombre del navegador, la versión principal del navegador y las partes del indicador de dispositivo móvil de la cadena usuario-agente seguirán actualizándose como antes.
El tipo de sistema operativo, el modelo de dispositivo y la versión secundaria del navegador son valores estáticos.
Todas las demás partes de la cadena de usuario-agente permanecen sin cambios.

Alternativas al usuario-agente

Si actualmente utilizas los datos más detallados, siempre es buena idea verificar si puedes usar la mejora progresiva o la detección de funciones en su lugar.

Recuerda siempre que el usuario-agente es igual a cualquier otro valor proporcionado por el usuario: debes validarlo y no suponer que es preciso. El usuario, las extensiones y otros clientes pueden cambiar fácilmente el valor de usuario-agente, o bien es posible que simplemente no se envíe. En la mayoría de los casos, deberías poder entregar contenido funcional a los visitantes sin datos del usuario-agente.

Solicita datos detallados con User-Agent Client Hints

Existen muchos motivos válidos para acceder a datos de usuario-agente detallados, como proporcionar contenido específico del dispositivo, funcionalidad antifraude o registros detallados. Si necesitas datos más detallados, puedes usar la API de User-Agent Client Hints (UA-CH) para acceder a ellos. Al igual que el usuario-agente, UA-CH está disponible a través de encabezados HTTP o JavaScript.

Es posible que ya hayas visto los encabezados predeterminados que se envían con el prefijo Sec-CH-UA-, que te indica el navegador, su versión principal, el sistema operativo y si el navegador es un dispositivo móvil.

Encabezados de solicitud predeterminados de User-Agent Client Hints de Chrome:

Sec-CH-UA: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"

Puedes usar el encabezado Accept-CH en tu respuesta para solicitar más datos. En este caso, puedes solicitar Sec-CH-UA-Platform-Version y Sec-CH-UA-Model para obtener esa versión de Android y ese tipo de dispositivo en solicitudes posteriores.

Encabezado de respuesta de tu servidor que especifica la versión y el modelo de la plataforma:

Accept-CH:
  Sec-CH-UA-Platform-Version,
  Sec-CH-UA-Model

Solicita encabezados de Chrome, incluidos la versión de Android y el nombre del modelo:

Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Model: "Pixel 7"

Puedes hacer lo mismo en JavaScript si llamas a getHighEntropyValues() en la API de userAgentData y pasas un array de los valores que deseas: platformVersion y model. Esto muestra una promesa con un objeto que contiene los valores específicos.

navigator.userAgentData
 .getHighEntropyValues(
   ['platformVersion', 'model']
 ).then(ua => { console.log(ua)
 });

{
  "platformVersion": "13.0.0",
  "model": "Pixel 7"
}

Solicitudes iniciales o de origen cruzado

Si tienes recursos de origen cruzado en tu página que necesitan estos valores, puedes permitir el acceso a través del encabezado HTTP Permissions-Policy o con la metaetiqueta Delegate-CH en tu HTML.

Si es necesario que tu sitio incluya estos valores sensibles en la primera solicitud de nivel superior, puedes usar el encabezado HTTP Critical-CH, que le indicará al navegador que reintente la solicitud inicial con esas sugerencias adicionales agregadas. Esto puede ser útil para los sistemas heredados que son difíciles de actualizar, pero lo ideal es que no dependas de estos valores sensibles para publicar tu HTML inicial.

Más información

Para ver la cadena de usuario-agente reducida en acción, consulta lo siguiente:

  • Consulta la cadena de usuario-agente reducida para tu dispositivo en goo.gle/reduced-ua-demo
  • Consulta todas las Sugerencias de clientes de encabezado de usuario-agente para JavaScript y HTTP para tu dispositivo en goo.gle/ua-ch-demo
  • Envía la cadena de usuario-agente reducida en tu navegador habilitando la marca de Chrome #reduce-user-agent.

También puedes registrarte en la prueba de origen de la reducción de usuario-agente para recibir la cantidad reducida de usuarios-agentes en tu sitio. Sin embargo, finalizaremos esta prueba a principios de marzo, ya que continuemos con el envío de usuarios-agentes reducidos de forma predeterminada.

Tenemos más recursos en la página de destino de reducción de usuarios-agentes y también puedes enviar tus problemas en nuestro repositorio de GitHub dedicado a la reducción de usuarios-agentes.