javascript - 网络服务器如何可靠地确定发送请求的设备?

标签 javascript webserver browser-detection mobile-browser

我最近注意到,我访问的一些网站能够检测到我用来查看网站的设备,但我不确定他们是如何做到这一点的。

例如,音乐流应用程序 www.rdio.com 提供两种不同的服务;一种用于移动设备,一种用于笔记本电脑和台式计算机。他们对移动设备收取 10 美元/月的费用,对台式机和笔记本电脑收取 5 美元/月的费用。

很明显,他们必须有一个很好的方法来检测发送请求的设备,因为他们的业务模型依赖于它。 rdio 和其他公司是如何做到这一点的?到目前为止我所想到的一切似乎都很糟糕。例如,如果它们依赖于 http 请求中的 header 变量,它们如何防止欺骗?或者如果他们在客户端使用 javascript 来检查浏览器功能,您可以检查哪些功能来准确确定设备类型?您是否会查看屏幕分辨率或陀螺仪之类的东西,因为如果我有一台具有笔记本电脑式分辨率的移动设备,或者一台带陀螺仪的笔记本电脑怎么办?

为了准确确定设备类型,网络服务器会检查 HTTP 请求或浏览器的哪些特征?

最佳答案

它们依赖于浏览器的 User-Agent 来确定客户端使用的是哪种设备。

当然,User-Agents 可能会被欺骗,但您无能为力。

虽然有人尝试通过尝试调用特定于这些浏览器的功能来检测真实的浏览器类型,但这并不可靠。

您可以阅读更多关于 User-Agent here 的信息.

关于javascript - 网络服务器如何可靠地确定发送请求的设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182887/

相关文章:

Java Web 启动 - 如何检测应用程序何时关闭?

javascript - Google Drive Api v3 创建共享文件

javascript - React Page 在访问组件状态时一直崩溃

javascript - Froala React 组件抛出未定义的 "cannot set property ' more_btn'

webserver - Airflow : `airflow webserver` 、 `airflow scheduler` 和 `airflow worker` 到底做了什么?

seo - 将多个域转发到一个 Web 服务器的(seo 友好的)最佳技术是什么?

javascript - Node.js 是否应该用于密集处理?

javascript - Chrome 被检测为带有 javascript 的 Safari

javascript - 这个 IE array.push 错误有合理的理由吗?

javascript - jQuery 1.9 浏览器检测