Casos de uso del User-agent
User-agents se han utilizado durante mucho tiempo para proporcionar a los equipos de marketing y desarrollador información importante sobre cómo los navegadores, sistemas operativos y dispositivos muestran el contenido del sitio, así como la forma en que los usuarios interactúan con los sitios web. User-agents también se utilizan para bloquear el correo no deseado y filtrar bots que rastrean sitios por distintos motivos adicionales.
Sin embargo, en los últimos años, algunos propietarios de sitios y proveedores de marketing han utilizado user-agent junto con otra información incluida en los encabezados de solicitud para crear huellas digitales que pueden utilizarse como medio para identificar a usuarios sin su conocimiento. A pesar del importante propósito que cumple user-agent para los propietarios del sitio, los desarrolladores de navegadores han decidido realizar cambios en la forma en que user-agents trabajan para limitar los posibles problemas de privacidad de los visitantes del sitio.
Los desarrolladores de navegadores crearon User-Agent Client Hints como solución a este desafío. Las Client Hints siguen permitiendo que los sitios recopilen la información necesaria sobre el explorador, el sistema operativo y el dispositivo, a la vez que brindan una mayor protección contra los métodos de seguimiento encubiertos, como la huella digital.
Client Hints
User-Agent Client Hints proporcionan a los propietarios de sitios web la capacidad de acceder a gran parte de la misma información disponible en el usuario-agente, pero de una manera que preserva la privacidad. Cuando los navegadores modernos envían user-agent a un servidor web, todo user-agent se envía en cada solicitud, independientemente de si es necesario. Por otro lado, las Client Hints refuerzan un modelo en el que el servidor debe solicitar al explorador la información adicional que desea conocer sobre el cliente. Al recibir esta solicitud, el explorador puede aplicar sus propias políticas o configuración de usuario para determinar qué datos se devuelven. En lugar de exponer a todo user-agent de forma predeterminada en todas las solicitudes, el acceso ahora se administra de forma explícita y auditable.
User-Agent Client Hints han estado disponibles en Chrome desde la versión 89. Las versiones recientes de exploradores basados en Chromium, como Microsoft Edge, Opera, Brave, Chrome Android, Opera Android y Samsung Internet, también admiten la API de Client Hints.
Las Client Hints contenidas en los encabezados de la primera solicitud realizada por el explorador a un servidor web contienen la marca del explorador, la versión principal del explorador y un indicador de si el cliente es un dispositivo móvil. Cada fragmento de datos tiene su propio valor de encabezado, en lugar de agruparse en una sola cadena de user-agent.
Por ejemplo, estas son algunas Client Hints:
Sec-CH-UA: "Chromium";v="101", "Google Chrome";v="101", " Not;A Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "macOS"
… mientras que este es el user-agent para el mismo explorador:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
Aunque la información es similar, la primera solicitud al servidor contiene Client Hints que contienen solo un subconjunto de lo que está disponible en la cadena user-agent. Falta en la solicitud la arquitectura del sistema operativo, la versión completa del sistema operativo, el nombre del motor de diseño, la versión del motor de diseño y la versión completa del explorador. Sin embargo, en solicitudes posteriores, la API de Client Hints permite que los servidores web soliciten detalles adicionales de alta entropía sobre el dispositivo. Cuando se solicitan estos valores de entropía alta, según la política del explorador o la configuración del usuario, la respuesta del explorador puede incluir esa información.
El siguiente ejemplo es un objeto JSON devuelto por la API de Client Hints cuando se solicitan valores de entropía altos:
{
"architecture":"x86",
"bitness":"64",
"brands":[
{
"brand":" Not A;Brand",
"version":"99"
},
{
"brand":"Chromium",
"version":"100"
},
{
"brand":"Google Chrome",
"version":"100"
}
],
"fullVersionList":[
{
"brand":" Not A;Brand",
"version":"99.0.0.0"
},
{
"brand":"Chromium",
"version":"100.0.4896.127"
},
{
"brand":"Google Chrome",
"version":"100.0.4896.127"
}
],
"mobile":false,
"model":"",
"platformVersion":"12.2.1"
}
Los valores de entropía altos incluyen varios fragmentos de información adicionales que no están disponibles en la información de Client Hints predeterminada. La siguiente tabla contiene detalles de qué datos están disponibles en la solicitud predeterminada frente a la información de User-Agent Client Hints de alta entropía.
Encabezado HTTP | JavaScript | User-agent | Client hint | Client hint de alta entropía |
---|---|---|---|---|
Sec-CH-UA | marcas | Sí | Sí | No |
Sec-CH-UA-Platform | plataforma | Sí | Sí | No |
Sec-CH-UA-Mobile | móvil | Sí | Sí | No |
Sec-CH-UA-Platform-Version | platformVersion | Sí | No | Sí |
Sec-CH-UA-Arch | arquitectura | Sí | No | Sí |
Sec-CH-UA-Model | modelo | Sí | No | Sí |
Sec-CH-UA-Bitness | Tasa de bits | Sí | No | Sí |
Sec-CH-UA-Full-Version-List | fullVersionList | Sí | No | Sí |