Local | UA relatado |
---|---|
https://duckduckgo.com/?q=what+is+my+user+agent&ia=answer | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.81 Safari/537.36 Vivaldi/5.2.2623.26 |
https://www.whatismybrowser.com/detect/what-is-my-user-agent/ | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.81 Safari/537.36 |
https://httpbin.org/get | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.81 Safari/537.36 |
Análise
Apenas o próprio mecanismo do DuckDuckGo detecta que estou de fato rodando o Vivaldi, pois ele tem a Vivaldi/5.2.2623.26
parte que falta aos outros dois.
Como isso pode ser? Isso realmente confunde minha mente.
Porque o navegador envia diferentes strings de User-Agent para esses sites. Não há detecção real acontecendo - o site literalmente apenas obtém o campo User-Agent como uma string de um cabeçalho de solicitação HTTP e o mostra de volta para você, então não há nada que impeça o navegador de enviar uma string diferente em cada solicitação, se necessário . (Você pode usar uma extensão para fazer o navegador enviar
User-Agent: Cake/3.1416
como um cabeçalho HTTP e todos os sites reportarão de volta.)O problema é que alguns sites se preocupam muito com o User-Agent, por exemplo, eles podem evitar o uso de certos recursos no Vivaldi por ser "não Chrome" (apesar de ter esses recursos e até usar o mesmo mecanismo de renderização), o que resulta em muitos navegadores falsificando seu User-Agent para um valor que os sites reconheceriam, mesmo que não seja bem verdade.
Aqui está um post sobre por que Vivaldi decidiu especificamente fingir ser o Chrome:
O Opera original (nos dias do mecanismo Presto) já tinha um submenu para alternar entre várias strings populares de user agent também (fingindo ser Mozilla por padrão, se bem me lembro). Até o Firefox precisa modificar sua string UA de vez em quando, como aqui ou aqui .