3

Google TV で (Chrome ブラウザ経由で) コンテンツを表示したいクライアントがいますが、「通常の Web」での許可は法的に制限されています。そのため、Javascript を介して Google TV ブラウザを検出し、そうでない場合はコンテンツの再生を禁止します。

最初に考えたのは、ユーザー エージェント文字列をチェックすることでしたが、ユーザーが Web ブラウザーでユーザー エージェント文字列を簡単に変更して、Google TV ブラウザーのふりをするのは簡単すぎるため、彼らはそれを好まなかったようです。

偽造するのが少し難しい (または少なくともそれほど目立たない) ことを確認できるものは他にありますか? 誰かが十分に努力すれば、どんな解決策もハックできることは知っていますが、それは問題ありません。

4

3 に答える 3

2

GoogleTV ブラウザを使用していないユーザーを確実に検出したいだけなので、できることがいくつかあるかもしれません。確かにこれらはなりすましの可能性がありますが、別のユーザー エージェント文字列を使用するよりもかなり困難です。

基本的に、アイデアは、特定の JavaScript オブジェクトのサポートをテストすることです (いくつかのアイデアについては、 http ://www.javascriptkit.com/javatutors/objdetect3.shtml のページを参照してください)。この例はwindow.opera、ブラウザーが確かに Opera であり、間違いなく GoogleTV ではないことを示すものがあるかどうかのテストです。

そのために、私は、最新のすべてのブラウザーでユーザー エージェントの切り替えによって偽造することができず、バイパスするためのより洗練されたメカニズムを必要とする小さなフィドルの例を作成しました。テストしたところ、Google TV で合格しました。

http://jsfiddle.net/XBT4w/2/

于 2012-09-24T19:25:59.700 に答える
0

特に JavaScript で思いつくものは、非常に簡単に偽造できます。なぜなら、任意の値を任意の場所に挿入するコードを簡単に (コンソールを使用して) 貼り付けることができるからです。

于 2012-09-21T21:40:24.667 に答える
0

Googleが提案するよりも良い方法はないと思います:

var userAgent = navigator.userAgent;

function isGoogleTvBrowser(useragent) {
  return Boolean(useragent.match(/(Large Screen)|GoogleTV/i));
}

明らかに、ユーザー エージェント文字列は非常に簡単に偽装できます。

于 2012-09-21T21:11:17.690 に答える