为什么不同的站点将 Vivaldi 的用户代理报告为不同的字符串?

Ben*_*tch 17 browser web user-agent vivaldi

地点 报告的UA
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

分析

只有 DuckDuckGo 自己的机制检测到我实际上正在运行 Vivaldi,因为它具有 Vivaldi/5.2.2623.26其他两个所缺少的部分。

怎么会这样?这确实令我困惑。

use*_*686 32

因为浏览器向这些网站发送不同的User-Agent字符串。\xe2\x80\x93 没有进行真正的检测,网站实际上只是从 HTTP 请求标头中以字符串形式获取 User-Agent 字段并将其显示给您,因此没有什么可以阻止浏览器如果需要,在每个请求中发送不同的字符串。(您可以使用扩展程序使浏览器User-Agent: Cake/3.1416作为 HTTP 标头发送,并且所有网站都会将其报告回来。)

\n

问题在于,一些网站过于关心用户代理,例如,他们可能会避免使用 Vivaldi 中的某些功能,因为它“不是 Chrome”(尽管它具有这些功能,甚至使用相同的渲染引擎),这导致许多浏览器将其用户代理欺骗为网站可以识别的值,即使它不完全正确。

\n

这是一篇关于为什么 Vivaldi 专门决定假装 Chrome 的帖子:

\n\n

最初的 Opera(早在 Presto 引擎时代)已经有一个子菜单,用于在几个流行的用户代理字符串之间切换(如果我没记错的话,默认情况下假装是 Mozilla)。甚至 Firefox 也必须偶尔修改其 UA 字符串,例如此处此处

\n

  • 是的,我就是这么说的。这也是 Vivaldi 官方博客文章所说的(他们甚至专门命名了 DDG)。 (12认同)
  • @Bentch 恰恰相反。维瓦尔第副总司令可以自由地表明自己是维瓦尔第。对于列表中的其他两个网站,它不包含“Vivaldi/5.2.2623.26”并“自定义”UA,使其看起来像普通 Chrome/Safari。请注意,该博客特别提到 DDG 的地方,实际上是说:“对于少数我们知道负责任地使用 Vivaldi 标签(以及我们的版本号)的网站,我们将展示完整的用户代理。” 然后将 DDG 纳入这些理智的网站之一。 (7认同)