Passer au contenu principal




User-Agent Client Hints es una nueva expansión de la API de Client Hints, que posibilita a los desarrolladores ingresar a información sobre el navegador de un usuario de una manera ergonómica y que preserva la privacidad.


Mise à jour

Il apparaît dans:
Sûr et sécurisé

Las sugerencias de cliente posibilitan a los desarrolladores solicitar activamente información sobre el dispositivo o las condiciones del usuario, en lugar de tener que analizarla fuera de la cadena de usuario-agente (UA). Proporcionar esta ruta alternativa es el primer paso para disminuir eventualmente la granularidad de las cadenas de usuario-agente.

Apprenez à mettre à niveau votre fonctionnalité existante qui repose sur l'analyse de la chaîne utilisateur-agent pour utiliser les conseils client utilisateur-agent.

Antécédents

Cuando los navegadores web realizan solicitudes, incluyen información sobre el navegador y su entorno para que los servidores puedan habilitar el análisis y personalizar la respuesta. Esto se definió en 1996 (RFC 1945 para HTTP / 1.0), donde puede hallar el définition originale de la chaîne User-Agent, qui comprend un exemple:

Agent utilisateur: CERN-LineMode / 2.15 libwww / 2.17b3

Este encabezado estaba destinado a especificar, en orden de relevancia, el producto (a modo de ejemplo, navegador o biblioteca) y un comentario (a modo de ejemplo, versión).

L'état de la chaîne user-agent

À propos de l'intervention décennies, esta cadena ha acumulado una gama de detalles adicionales sobre el cliente que realiza la solicitud (así como cruft, debido a la compatibilidad con versiones anteriores). Podemos ver eso cuando miramos la cadena actual de User-Agent de Chrome:

Mozilla / 5.0 (Linux; Android 10; Pixel 3) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 84.0.4076.0 Mobile Safari / 537.36

La cadena anterior contiene información sobre el sistema operativo y la versión del usuario, el modelo del dispositivo, la marca del navegador y la versión completa, pistas suficientes para inferir que es un navegador teléfono celular y sin mencionar una serie de referencias a otros navegadores por razones históricas.

La combinaison de ces paramètres avec la grande diversité de valeurs possibles signifie que la chaîne User-Agent peut contenir suffisamment d'informations pour permettre aux utilisateurs individuels d'être identifiés de manière unique. Si vous testez votre propre navigateur sur
AmIUniquevous pouvez voir à quel point toi
La chaîne user-agent identifie votre. Plus l '«indice de similarité» résultant est bas, plus vos demandes seront uniques, plus il sera facile pour les serveurs de vous suivre secrètement.

La chaîne utilisateur-agent permet à de nombreux cas d'utilisationy tiene un propósito importante para los desarrolladores y propietarios de sitios. A pesar de todo, además es fundamental que la privacidad de los usuarios esté protegida contra métodos de seguimiento encubiertos, y el envío de información de UA de forma predeterminada va en contra de ese objetivo.

Además existe la necesidad de mejorar la compatibilidad web cuando se trata de la cadena Usuario-Agente. No está estructurado, por lo que analizarlo genera una complejidad innecesaria, que usualmente es la causa de errores y problemas de compatibilidad del sitio que perjudican a los usuarios. Estos problemas además perjudican de forma desproporcionada a los usuarios de navegadores menos habituales, puesto que es factible que los sitios no hayan podido probar su configuración.

Présentation des conseils pour les nouveaux clients de l'agent utilisateur

Suggestions du client de l'agent utilisateur
permitir el acceso a la misma información pero de una manera más preservada de la privacidad, lo que a su vez posibilita que los navegadores reduzcan eventualmente el valor predeterminado de la cadena Usuario-Agente de transmitir todo. Suggestions pour le client Aplicar un modelo en el que el servidor debe solicitar al navegador un recopilatorio de datos sobre el cliente (las sugerencias) y el navegador aplica sus propias políticas o configuración de usuario para establecer qué datos se devuelven. Esto significa que en lugar de exponer toutes
La información de Usuario-Agente de forma predeterminada, el acceso ahora se gestiona de forma explícita y auditable. Los desarrolladores además se benefician de una API más simple: ¡no más expresiones regulares!

L'ensemble actuel de conseils client décrit principalement les capacités de connexion et d'affichage du navigateur. Vous pouvez explorer les détails dans Automatisez la sélection des ressources grâce aux commentaires des clients, pero aquí hay un repaso rápido sobre el procedimiento.

Le serveur demande des suggestions client spécifiques via un en-tête:

⬇️ Réponse du serveur

Accept-CH: largeur de la fenêtre, largeur

Ou une balise meta:

<meta http-equiv="Accepter-CH" contenu="Viewport-Width, Width" />

Después, el navegador puede elegir por enviar los siguientes encabezados en solicitudes posteriores:

⬆️ Demande ultérieure

Viewport-Width: 460
Width: 230

El servidor puede elegir por variar sus respuestas, a modo de ejemplo, ofreciendo imágenes con una resolución adecuada.

Des discussions sont en cours sur l'activation des suggestions des clients dans une demande initiale, mais vous devez envisager une conception réactive ou une amélioration progressive avant de vous engager dans cette voie.

Las sugerencias de cliente de agente de usuario amplían la gama de propiedades que se pueden especificar a través de el Accepter-CH en-tête de réponse du serveur. Lorsque le navigateur renvoie des informations, il utilise le Sec-CH-UA préfixe. Pour tous les détails, commencez par l'explicateur y posteriormente sumergirse en el iniciativa completa.

El nuevo conjunto de sugerencias se encuentra disponible en Chromium 84, por lo tanto exploremos cómo funciona todo.

Conseils sur les clients de l'agent utilisateur dans Chromium 84

Les suggestions du client de l'agent utilisateur ne seront activées que progressivement dans Chrome stable, comme
problèmes de compatibilité sont résolus. Pour forcer la fonctionnalité de test, assurez-vous de:

  • sont sur Chrome 84 bêta o idéntico
  • activer le chrome://flags/#enable-experimental-web-platform-features drapeau

De manera predeterminada, el navegador devuelve la marca del navegador, la versión significativa / principal y un indicador si el cliente es un dispositivo teléfono celular:

⬆️ Toutes les demandes

Sec-CH-UA: "Chromium";v="84", "Google Chrome";v="84"
Sec-CH-UA-Mobile: ?0

Mise en garde:
Estas propiedades son más complejas que un solo valor, por lo que Encabezados estructurados
se usan para representar listas y valores booleanos.

Réponses de l'agent utilisateur et en-têtes de demande

⬇️ Réponse
Accepter-CH
⬆️ Demande
entête
⬆️ Demande
Exemple de valeur
La description
UA Sec-CH-UA "Chrome"; v = "84",
"Google Chrome"; v = "84"
Liste des marques de navigateurs et leur version significative.
UA-Mobile Sec-CH-UA-Mobile ?1 Booleano que indica si el navegador está en un dispositivo teléfono celular (?1 vraiment) ou pas (?0 par faux).
UA-Version complète Sec-CH-UA-Version complète "84.0.4143.2" La version complète du navigateur.
Plateforme UA Plateforme Sec-CH-UA "Android" La plataforma del dispositivo, de forma general el sistema operativo (SO).
Version de la plate-forme UA Version de la plate-forme Sec-CH-UA "10" La version de la plate-forme ou du système d'exploitation.
UA-Arch Sec-CH-UA-Arch "ARM64" La arquitectura subyacente del dispositivo. Aunque esto puede no ser relevante para mostrar la página, es factible que el sitio desee ofrecer una descarga con el formato correcto de forma predeterminada.
Modèle UA Modèle Sec-CH-UA «Pixel 3» Le modèle de l'appareil.
Gotchas!

Les considérations de confidentialité et de compatibilité signifient que la valeur peut être vide, non renvoyée ou remplie avec une valeur de variable. Ceci est connu comme
GRAISSE.

Exemple d'échange

Un exemple d'échange ressemblerait à ceci:

⬆️ Demande initiale du navigateur
Le navigateur demande le / téléchargements
page du site et soumet votre User-Agent de base par défaut.

GET /downloads HTTP/1.1
Host: example.site

Sec-CH-UA: "Chromium";v="84", "Google Chrome";v="84"
Sec-CH-UA-Mobile: ?0

⬇️ Réponse du serveur
El servidor devuelve la página y, al mismo tiempo, solicita la versión completa del navegador y la plataforma.

HTTP/1.1 200 OK
Accept-CH: UA-Full-Version, UA-Platform

⬆️ Demandes ultérieures
Le navigateur accorde au serveur l'accès aux informations supplémentaires et envoie les suggestions supplémentaires dans toutes les réponses suivantes.

GET /downloads/app1 HTTP/1.1
Host: example.site

Sec-CH-UA: "Chromium";v="84", "Google Chrome";v="84"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Version-Complète: "84.0.4143.2"
Sec-CH-UA-Platform: "Android"

API JavaScript

Al mismo tiempo de los encabezados, además se puede ingresar al User-Agent en JavaScript a través de
navigator.userAgentData. La valeur par défaut Sec-CH-UA y Sec-CH-UA-Mobile se puede ingresar a la información del encabezado a través del marques y mobile propriétés, respectivement:


console.Journal(navigateur.userAgentData.marques);


[
{
brand: 'Chromium',
version: '84',
},
{
brand: 'Google Chrome',
version: '84',
},
];


console.Journal(navigateur.userAgentData.mobile);


faux;

Des valeurs supplémentaires sont accessibles via le getHighEntropyValues () appel. Le terme «haute entropie» fait référence à entropie de l'information, dicho de otra forma, la cantidad de información que estos valores revelan sobre el navegador del usuario. Del mismo modo que con la solicitud de encabezados adicionales, depende del navegador qué valores, si corresponde, se devuelven.


navigateur
.userAgentData.getHighEntropyValues(
["architecture", "model", "platform", "platformVersion",
"uaFullVersion"])
.then(ua => { console.Journal(ua) });


{
"architecture": "x86",
"model": "",
"platform": "Linux",
"platformVersion": "",
"uaFullVersion": "84.0.4143.2"
}

Manifestation

Vous pouvez tester à la fois les en-têtes et l'API JavaScript sur votre propre appareil à l'adresse
user-agent-client-hints.glitch.me.

Asegúrese de que está usando Chrome 84 Beta o idéntico con
chrome://flags/#enable-experimental-web-platform-features activée.

Suggestion à vie et réinitialisation

Sugerencias especificadas a través de el Accepter-CH El encabezado se enviará durante la sesión del navegador o hasta que se especifique un recopilatorio distinto de sugerencias.

Cela signifie que si le serveur envoie:

⬇️ Répondre

Accepter-CH: UA-Version complète

Ensuite, le navigateur enverra le Sec-CH-UA-Version complète en-tête sur toutes les demandes pour ce site jusqu'à ce que le navigateur soit fermé.

⬆️ Demandes ultérieures

Sec-CH-UA-Version-Complète: "84.0.4143.2"

A pesar de todo, si otro Accepter-CH l'en-tête est reçu, alors que reemplazar absolutamente suggestions actuelles envoyées par le navigateur.

⬇️ Répondre

Accepter-CH: UA-Platform

⬆️ Demandes ultérieures

Sec-CH-UA-Platform: "Android"

El anteriormente solicitado Sec-CH-UA-Version complète ne sera pas envoyé.

Il vaut mieux penser à lui Accepter-CH encabezado que especifica el conjunto completo de sugerencias deseadas para esa página, lo que significa que el navegador envía las sugerencias especificadas para todos los subrecursos en esa página. Aunque las sugerencias persistirán hasta la siguiente navegación, el sitio no debe confiar ni hacerse cargo que se entregarán.

Succès:
Asegúrese siempre de poder ofrecer una experiencia significativa sin esta información. Esto es para impulsar la experiencia del usuario, no para definirla. ¡Es por esto que se llaman «pistas» y no «respuestas» o «requerimientos»!

Además puede utilizar esto para eliminar de manera efectiva todas las sugerencias enviadas por el navegador enviando un espacio en blanco Accepter-CH en réponse. Pensez à l'ajouter partout où l'utilisateur réinitialise ses préférences ou se déconnecte de votre site.

Este patrón además coincide con el funcionamiento de las sugerencias a través del
hashtag. Les suggestions demandées ne seront envoyées que dans les demandes initiées par la page et non dans une navigation ultérieure.

Portée des suggestions et demandes d'origine croisée

De manera predeterminada, las sugerencias del cliente solo se enviarán en solicitudes del mismo origen. Eso significa que si pide sugerencias específicas sobre https://example.com, pero los recursos que desea aprovechar al máximo están en https://downloads.example.com elles ou ils je ne le ferai pas
recevoir des suggestions.

Para permitir sugerencias en solicitudes de origen cruzado, cada sugerencia y origen deben especificarse a través de un Politique de fonctionnalité entête. Ceci spécifie chaque suggestion (préfixée ch-) y la lista permitida de orígenes que deberían recibir la sugerencia. A modo de ejemplo:

⬇️ Réponse de example.com

Accept-CH: UA-Platform, DPR
Feature-Policy: ch-UA-Platform downloads.example.com;
ch-DPR cdn.provider img.example.com

⬆️ Application à downloads.example.com

Sec-CH-UA-Platform: "Android"

⬆️ Demandes de cdn.provider ou img.example.com

DPR: 2

¿Dónde usar las sugerencias de cliente de agente de usuario?

La solución rápida es que debe refactorizar cualquier instancia en la que esté analizando el encabezado User-Agent o haciendo uso de cualquiera de las llamadas de JavaScript que acceden a la misma información (dicho de otra forma, navigator.userAgent, navigator.appVersionou navigator.platform) pour utiliser à la place les conseils du client de l'agent utilisateur.

Llevando esto un paso más adelante, debe volver a evaluar el uso que hace de la información del agente de usuario y reemplazarla por otros métodos siempre y cuando sea factible. Habitualmente, puede alcanzar el mismo objetivo haciendo uso de la mejora progresiva, la detección de funciones o el diseño receptivo. El problema básico de confiar en los datos de usuario-agente es que siempre mantiene un mapeo entre la propiedad que está inspeccionando y el comportamiento que habilita. Es una sobrecarga de mantenimiento para asegurar que su detección sea completa y esté actualizada.

Avec ces mises en garde à l'esprit, le Le référentiel User-Agent Client Hints répertorie certains cas d'utilisation valides pour les sites.

Qu'en est-il de la chaîne utilisateur-agent?

El plan es minimizar la capacidad de rastreo encubierto en la web reduciendo la cantidad de información de identificación expuesta por la cadena de Usuario-Agente existente sin causar interrupciones indebidas en los sitios existentes. La introducción de sugerencias de cliente de agente de usuario ahora le brinda la posibilidad de entender y experimentar con la nueva capacidad, antes de que se realicen cambios en las cadenas de agente de usuario.

Por último, la información en la cadena Usuario-Agente se reducirá para que mantenga el formato heredado y, a la vez, solo proporcione el mismo navegador de alto nivel y la información de versión significativa según las sugerencias predeterminadas. En Chromium, este cambio se ha pospuesto hasta al menos 2021 para proporcionar tiempo adicional para que el ecosistema evalúe las nuevas capacidades de User Agent Client Hints.

Vous pouvez tester une version de ceci en activant le
chrome://flags/#freeze-user-agent flag de Chrome 84. Esto devolverá una cadena con las entradas históricas por razones de compatibilidad, pero con detalles específicos. A modo de ejemplo, algo como:

Mozilla / 5.0 (Linux; Android 9; périphérique non spécifié) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 85.0.0.0 Mobile Safari / 537.36

photo par Sergey Zolkin
au
Unsplash