我们有一个客户希望他们的内容在Google TV上(通过Chrome浏览器),但在法律上限制在“常规网络”上允许它。因此,我们希望通过Javascript检测Google TV浏览器,如果不是,则禁止播放内容。
第一个想法是检查用户代理字符串,但显然他们不喜欢这样,因为用户在Web浏览器上更改用户代理字符串太容易了,因此它假装是Google TV浏览器
还有其他我们可以检查的东西有点难(或至少不那么明显)假吗?我知道,如果有人努力尝试,任何解决方案都可以被攻击,这没关系。
答案 0 :(得分:2)
您可以做一些事情,因为您只想确保使用GoogleTV浏览器检测谁不。当然这些可能是欺骗性的,但它们比使用不同的用户代理字符串要困难得多。
基本上,我们的想法是测试某些JavaScript对象支持(请参阅此页面:http://www.javascriptkit.com/javatutors/objdetect3.shtml了解一些想法)。这方面的一个例子是测试window.opera
的存在,这表明浏览器确实是Opera,绝对不是GoogleTV。
为此,我编写了一个小小提琴示例,在所有现代浏览器中都不能被用户代理切换伪造,并且需要更复杂的机制来绕过。我测试了它确实传递了Google TV。
答案 1 :(得分:0)
我认为除了Google suggests之外还有更好的方式:
var userAgent = navigator.userAgent;
function isGoogleTvBrowser(useragent) {
return Boolean(useragent.match(/(Large Screen)|GoogleTV/i));
}
虽然很明显,用户代理字符串可以非常容易伪造。
答案 2 :(得分:0)
你能想到的任何东西,特别是在JavaScript中,都是非常容易来伪装,因为人们可以轻而易举地(使用控制台)粘贴代码,将任何值注入任何位置。 / p>