我很想知道使用客户端脚本检测访问者浏览器是否比服务器端脚本更可靠?
通过PHP
和Javascript
访问浏览器既简单又受欢迎。在前者中,我们分析了头数组发送的$_SERVER['HTTP_USER_AGENT']
。但是,标题并不总是可靠的。 Javascript
可以更加可靠,因为它可以从访问者的计算机上获取访问者浏览器吗?
我的意思是可以错过标题中的USER AGENT并通过javascript获取浏览器吗?
更新:请不要介绍jQuery
等方法,因为我熟悉它们。我只是想知道当javascript仍能检测到浏览器时,标头的用户代理是否可能失败?客户端和服务器端方法的比较。
答案 0 :(得分:2)
用户代理可以在服务器端或客户端进行测试,无论哪种方式都可以被欺骗。
您可以使用JavaScript指纹浏览器(查看浏览器提供的方法和对象)并使用它来推断浏览器,但这不太精确,客户端可以禁用/阻止/编辑JavaScript。
所以两者都不完全可靠。
基于浏览器的识别,做任何事情通常是个坏主意。
答案 1 :(得分:1)
行。因此RFC
不需要User-Agent标头用户代理应该在请求中包含此字段。
http://tools.ietf.org/html/rfc2616#section-14.43
这意味着无法保证服务器端检测。
类似地,客户端检测通常依赖于navigator.userAgent
,但也由用户代理(浏览器或不支持)提供,同样无法保证。
因此你问题的答案是50/50 :)
现在,如果你想弄清楚如何处理不同的浏览器 - 功能检测是你最安全的选择 - 但这是一个不同的问题;)
答案 2 :(得分:1)
我只想使用服务器端检测。
如果用户想要屏蔽他们的浏览器,他们的浏览器可能会被屏蔽两端。
如果你想找到他们的浏览器的HTML兼容性,如果他们掩盖了他们的浏览器,他们应该期待轻度破坏的页面(但你应该总是尽量不要使用浏览器特定的HTML)。如果是javascript兼容性,他们也应该期待一些破解的javascript。
答案 3 :(得分:0)
在jquery
中查看$.browser()答案 4 :(得分:0)
另一个角度:我们为什么要检测浏览器?
在分析的情况下,你可以做的并不多。任何进行过一些研究的人都可以发送他们喜欢的任何用户代理字符串,但是谁会经历所有麻烦;)
如果我们谈论在网站上启用/禁用的功能,您应该真正选择功能检测。通过关注浏览器能够/不能做什么,而不是它自己所称的内容,您通常可以期望浏览器在您需要的功能存在时可靠地执行任何操作。
答案 5 :(得分:0)
使用客户端javascript的一大优势是,您可以获得有关浏览器的更多信息。
这是一个有趣的例子:https://panopticlick.eff.org/