如何防止用户更改用户代理

时间:2015-12-24 16:00:54

标签: javascript java jquery

我正在开发一个应用程序,并且有一个页面我只希望它可供从iphone设备访问的用户使用..

众所周知,用户可以从客户端或通过浏览器模拟器更改用户代理,所以我想知道是否有办法阻止它?

注意:我设法在用户登录我的网站后通过在登录时将浏览器用户代理保留在会话中来防止这种情况。所以即使用户在此之后更改了用户代理,我也只会考虑我在登录时保存在会话中的上一个用户代理

然而,如果用户在调用我的网站并创建会话之前使用模拟器将用户代理更改为“iphone”,那么可能无法解决的问题是什么。

你可以帮助我吗? 谢谢,

6 个答案:

答案 0 :(得分:3)

没有可靠的方法来验证客户端的用户代理。最好的情况是,您可以使用有关其浏览器的其他信息进行推断,例如:如果他们说他们是iPhone,但他们有一个1920x1080的屏幕/浏览器窗口,有些东西是不对的。但我不建议这样做。

答案 1 :(得分:2)

简单回答 - 你做不到。

然而,您可以使用CSS媒体查询检测用户正在移动设备上浏览,您可以使用CSS媒体查询显示/隐藏警告,说明该页面仅适用于移动设备。< / p>

这仍然不会阻止人们欺骗用户代理,并且你无能为力。

答案 2 :(得分:0)

可行的技巧是检查navigator.platformSee this post

但如果有人真的想在没有iPhone的情况下看到这个页面,那么Javascript就不安全了。

答案 3 :(得分:0)

注意,在iPhone上未经测试,但在浏览器Use Jquery to detect IE, then redirectHow to target only one browser?

中返回预期结果过滤WebkitMozMs前缀

尝试在-apple

中检查document.body.style前缀
if ("AppleUserSelect" in document.body.style) {
  // do stuff
}

请参阅Vendor-prefixed CSS Property Overview

答案 4 :(得分:0)

您可以通过检测浏览器特定功能来检测使用哪个浏览器,例如某些专有的Javascript函数。

此外,搜索&#34;浏览器指纹&#34;在Google上,它可能对您有所帮助。

答案 5 :(得分:0)

谢谢大家的回答。为了保存,我会想到如果有人打算访问该页面,可以嗅探并更改用户代理..