Preparar-se para a redução de user agent do Chrome

O Chrome continua reduzindo as informações compartilhadas na string do user agent para proteger a privacidade do usuário.

A partir do Chrome 110 (fevereiro de 2023), vamos lançar gradualmente um valor fixo para a versão do Android e o modelo do dispositivo. O valor padrão sempre será Android 10 no modelo K. Se você depende do user agent para detectar a versão do sistema operacional, o modelo do dispositivo Android ou a versão detalhada do navegador de um visitante, talvez seja necessário realizar uma ação. Leia os detalhes a seguir.

O user-agent é uma string que fornece informações sobre o navegador e o ambiente do usuário, como saber que um visitante do seu site está executando o Chrome versão 110 no Android. Seu navegador envia esses dados em um cabeçalho HTTP e os disponibiliza via JavaScript.

O problema da string completa do user agent é que ela compartilha informações detalhadas sobre o navegador por padrão em todas as solicitações, o que é um fator importante para permitir o rastreamento entre sites. Nosso objetivo é reduzir as oportunidades de coletar passivamente esses dados, além de fornecer APIs para permitir que você acesse dados ativamente quando precisar.

Redução de user agent até o momento

Já começamos a remover alguns dos dados do user agent disponíveis por padrão e a substituí-los por valores fixos.

No Chrome 101, substituímos o número da versão secundária por zeros, por exemplo: O Chrome/101.3.2.1 agora é Chrome/101.0.0.0.

No Chrome 107, substituímos a versão do sistema operacional para computadores e as informações da CPU por um valor fixo para a 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

Correção da versão do Android e do modelo do dispositivo a partir do Chrome 110

A partir do Chrome 110, apresentaremos gradualmente um valor fixo para a versão do Android e o modelo do dispositivo. Em vez de mostrar algo como Android 13 em Pixel 7, o valor padrão sempre será Android 10 em um modelo K.

Antes: o user agent inclui a versão do Android e o modelo do dispositivo

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

Depois: user agent reduzido com a versão do Android e o modelo de dispositivo corrigidos

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

Nenhuma alteração no formato do user agent

A redução do user agent altera os valores retornados no user agent, mas o formato permanece o mesmo. Se você usar o user agent apenas para ler o tipo de sistema operacional ou a versão principal do navegador, esses dados continuarão sendo atualizados como antes, e não será necessário fazer nada.

As partes de plataforma, nome do navegador, versão principal do navegador e indicadores de dispositivos móveis da string do user agent continuam sendo atualizadas como antes.
O tipo de sistema operacional, o modelo do dispositivo e a versão secundária do navegador são valores estáticos.
Todas as outras partes da string do user agent permanecem como estão.

Alternativas para o user agent

Se você usa dados mais detalhados no momento, é recomendável verificar se é possível usar o aprimoramento progressivo ou a detecção de recursos.

Lembre-se sempre de que o user agent é como qualquer outro valor fornecido pelo usuário: você deve validá-lo e não presumir que ele é preciso. O valor do user agent pode ser alterado facilmente pelo usuário, pelas extensões ou por outros clientes. Ele também pode simplesmente não ser enviado. Na maioria dos casos, você poderá exibir conteúdo funcional aos visitantes sem dados do user agent.

Solicitar dados detalhados com dicas de cliente HTTP do user agent

Há vários motivos válidos para acessar dados detalhados do user agent, como fornecer conteúdo específico do dispositivo, funcionalidade antifraude ou registro detalhado. Se você precisar de dados mais detalhados, use a API User-Agent Client Hints (UA-CH) para acessá-los. Assim como o user agent, o UA-CH está disponível nos cabeçalhos HTTP ou JavaScript.

Talvez você já tenha visto os cabeçalhos padrão sendo enviados com o prefixo Sec-CH-UA-, que informa o navegador, a versão principal dele, o sistema operacional e se o navegador é um dispositivo móvel.

Cabeçalhos de solicitação das dicas padrão de cliente HTTP do user agent do 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"

É possível usar o cabeçalho Accept-CH na sua resposta para pedir mais dados. Nesse caso, você pode pedir que Sec-CH-UA-Platform-Version e Sec-CH-UA-Model recuperem essa versão do Android e esse tipo de dispositivo nas próximas solicitações.

Cabeçalho de resposta do servidor especificando a versão e o modelo da plataforma:

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

Cabeçalhos de solicitação de volta do Chrome, incluindo a versão do Android e o nome do modelo:

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

Você pode fazer o mesmo em JavaScript chamando getHighEntropyValues() na API userAgentData e transmitindo uma matriz dos valores desejados: platformVersion e model. Isso retorna uma promessa com um objeto que contém os valores específicos.

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

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

Solicitações iniciais ou de origem cruzada

Se você tiver recursos de origem cruzada na página que precisem desses valores, permita o acesso com o cabeçalho HTTP Permissions-Policy ou usando a metatag Delegate-CH no HTML.

Se for necessário que o site tenha esses valores sensíveis na primeira solicitação de nível superior, use o cabeçalho HTTP Critical-CH, que instrui o navegador a repetir a solicitação inicial com essas dicas extras. Isso pode ser útil para sistemas legados difíceis de atualizar, mas o ideal é que você não dependa desses valores confidenciais para fornecer seu HTML inicial.

Saiba mais

Para ver a string reduzida do user agent em ação, confira o seguinte:

Você também pode se registrar no teste de origem da Redução do user agent para receber o user agent reduzido no seu site. No entanto, encerremos esse teste no início de março porque continuamos desenvolvendo o envio do user agent reduzido por padrão.

Temos mais recursos na página de destino de redução de user agent, e você também pode levantar dúvidas em nosso repositório dedicado do GitHub sobre redução de user agent.