有没有办法获取客户端的浏览器和操作系统名称,以便客户端无法修改它?

Par*_*ant 1 browser frontend user-agent backend

所以我必须获取客户端的浏览器和操作系统名称。但问题是我们不希望用户能够操纵有关操作系统或浏览器的信息。但一些网站表明只有一种方法可以做到这一点,那就是使用请求标头 userAgent。

以下是我浏览过的链接:

  1. 通过解析用户代理检索浏览器、操作系统和设备类型
  2. 如何防止用户更改用户代理
  3. 如何防止网站检测我的操作系统?我应该使用哪个浏览器?

所以根据这些我们只能借助userAgent来完成,而且对于客户端来说修改它并不是一件困难的事情,而且我们也没有办法检测到客户端是否修改了它。事实证明,即使是像亚马逊和 Facebook 这样的跨国公司也依赖 userAgent。

因此,在了解设备指纹时,我了解了一个名为FingerprintJs的 javascript 库,它们似乎并不依赖 userAgent 来查找客户端操作系统名称,因为我尝试使用它,结果发现在操作 userAgent 时我得到了原始的结果。我仍在试图弄清楚它们到底是如何获取操作系统和浏览器名称的。即使客户端也可以操纵它,我们仍然有办法至少让客户端很难伪造浏览器和操作系统吗?

Mic*_*ski 6

您无法限制随请求发送到服务器的值。用户始终能够使用例如curl 来发送一些任意标头、cookie 等。您可以通过某种模糊性使篡改值变得更加困难,但这并不能保证此类解决方案的安全。

设备指纹识别可能会有所帮助,但您很可能会被广告拦截器阻止,因为它们也以指纹识别为目标。尽管如此,即使您确实实现了设备指纹识别并获得了有关用户浏览器的更准确的数据,用户仍然可以篡改请求并更改该数据。

我不知道您的要求是什么,但通常情况下,您不应该太关心用户的浏览器或操作系统。