web-dev-qa-db-ja.com

FirefoxでJavaScriptによって検出されるプラットフォーム/ OSをどのように変更できますか?

https://panopticlick.eff.org/ にアクセスすると、このサイトは正確なOS /プラットフォームを認識しており、JavaScriptがここで使用されているため、ユーザーエージェントの変更は役に立ちません。

とにかくそれを変更/偽造する方法はありますか?

このサイトでスクリプトを見つけましたが、動作しないようです

// ==UserScript==
// @name        Faker
// @namespace   x
// @version     1
// @grant       none
// @run-at document-start
// ==/UserScript==

var fake_navigator = {};

for(var i in navigator) {
  fake_navigator[i] = navigator[i];
}

fake_navigator.platform = 'Linux armv7l';

navigator = fake_navigator;

私は、Greasemonkeyを使用してFirefoxで実行しようとしましたが、まだプラットフォームとしてWin32を取得しています(私の元のプラットフォームです)。

そのコードは古くなっています/私はそれを間違って実行しますか?他に方法はありますか?

4
cnmesr

navigatorオブジェクトには window.navigator これは実際には読み取り専用のプロパティです。

したがって、navigator = fake_navigator; 動作しないでしょう。

ただし、platformのゲッターを再定義することは可能です。

navigator.__defineGetter__('platform', function(){
    return 'foo' // customized user agent
});

プロパティをクエリすると、関数内の値が返されます。

window.navigator.platform
"foo"

これは、JavaScriptプロパティに関する限り、プラットフォームを偽造しますが、Panopticlickは、1つのプロパティを取得してそれを介してユーザーを識別するだけでなく、ブラウザー全体のフィンガープリントを作成します。したがって、プライバシー上の理由からこれを行う場合は、これを効果的な手段としてお勧めしません。

3
SilverlightFox

Chrome、Firefox、Edge、Operaに導入された新しいテクノロジーでは、ここ数年、プライバシーを制御する方法がありません。物事はあなたのプライバシーを破ってあなたに例えばフラッシュより良いサービスをもたらすために作られました、それは悪いです。

たとえば、Webrtc:webrtcを偽装することはできません。無効にすることしかできません。 webrtcをブロックすると、1000の通常ユーザーを持つサーバーと、webrtcが無効になります。それはあなたがすでに識別されていることを意味します。

これは、偽装、無効化する必要がある1001の事柄のうちの1つだけです。または、偽装も無効化もできません。あなたのアイデンティティを隠さないことです。またはフィールドのエンジニアになること。

3
Badr Elmers

あなたはフィンガープリントと呼ばれる方法を説明します。 JavaScriptまたはFlashを使用して、システムのさまざまなプロパティに関する詳細情報を取得し、ユーザーとシステムを識別する一意のハッシュを作成します。空のユーザーエージェントでもデータをより一意にするため、たとえばユーザーエージェントのなりすましは役に立たないことに注意してください。ここでの目標は、リクエストごとに可能な限り多くのオプションを変更してIDを継続的に変更する(そのためのプラグインがある)か、世界で最も一般的な構成を使用して、一意のフィンガープリントを取得しないことです。プラグインなしで最もよく使用されるブラウザーの最も広く使用されているSubversionと、最も一般的なオペレーティングシステム、色深度、画面/ウィンドウサイズなどについて考えています。プラグインを使用して実際に変更できるものとそうでないものがあります。

1
Rápli András

OS検出を偽造することだけが目的の場合、それは非常に簡単です。 yourマシンで実行するとすぐに、リモートが悪用される可能性があることに注意してください。ここで重要なのは、JavaScriptを非アクティブにし、JavaScriptコードが送信するはずのクエリを手動で送信することです。

スクリプトの複雑さによっては、最初にFirefoxに含まれているようなJavaScriptデバッガーを使用して、スクリプトがホストに送信するものを正確に理解し、次にいくつかのコード(Pythonまたは...ローカルJavaScript!)偽の回答を送信します。素敵なOSはWindows12(時間が経過すると増加します)、DOS/2.10、CP/M、Amiga ...です。

0
Serge Ballesta

変更したいとおっしゃっていましたが、Javascriptだけでいいですか? JavaScriptの場合、このサイトの範囲を超えるため、 StackOverflow にアクセスすることをお勧めします。

JavaScriptコードが不要で、これを行うにはany方法だけが必要な場合、はい、 ランダムエージェントスプーファー を使用できます=。 NoScript および Block Origin と一緒に使用するのが最適です。ただし、これはミクロ管理の悪夢になる可能性があります。

ただし、ランダムエージェントスプーファーのオプションを設定する必要があります。 WebRTC、webGLを無効にしたり、検出可能なフォントを制限したりする必要があります。適切な情報が設定されるまで、これを構成してください。

0
Mark Buffalo