2011-12-17 9 views
13

たとえば、Facebook.comがブラウザでバージョンコントロールスクリプトを実行し、スクリプトを使用して変更されたHTMLコードを実行しているかどうかを確認できますか?私はuserscriptを実行しているかどうかをウェブサイトで知ることができますか?

は、そのキャッシュにHTMLコードを読み取って、サーバーに送り返され、クライアントに送信されたコードと比較されたハッシュタグのいくつかの種類を生成することができますスクリプトで行うことができますか?

+0

Facebookは静的なHTMLではないため、ハッシュは役に立たないので、impossibruです。 –

+1

Facebookがあなたのuserscriptを検出していると信じる理由がありますか?もしそうなら、なぜですか?あなたはどう思われますか? –

+3

Facebookはあなたのuserscriptを気にしません。実際には頻繁にインターフェイスを変更するだけで、多くのユーザースクリプト、特に積極的に管理されていないスクリプトとの闘いに役立ちます。 – c69

答えて

21

はい、理論上、サイトはさまざまな状況でスクリプトの存在を推測できます。

これは絶対確実ではありません。通常、サイトに対する無視できるほどの脅威にはあまりにも多くの問題があります。 (その後、再び、いくつかのウェブマスターは、このようなことについて強迫-paranoidsすることができ;))

いくつかの方法、スクリプトが)順不同で(何に依存:

  1. ゲームやオークションサイトができます「入札」クリックのタイミング(速度と規則性)を監視します。

  2. サイトでは、AJAX-backのように、<script>ノードの数を追加することができます。

  3. 同様に、サイトはページの内容の一部または全部をAJAXバックして、期待値と比較することができます。隠された要件を満たしていない

  4. エクストラAJAX呼び出し、またはAJAX呼び出しが指摘(と成功したように見えるように許可)することができます。

  5. スクリプトでunsafeWindowが正しい(間違った)方法で使用されている場合はa page can detect that and even hijack (slightly) elevated privilegesです。

  6. マウスオーバーイベントが先行していなかった「クリック」を検出できます。私は実際にこれが野生で使われているのを見ました。

  7. A page's javascript can often detect script-generated clicks (etc.)は、ユーザが作成したものとは異なります。 (リマインダーのおかげで、c69は、。)

最終的には、利点がしかし、userscriptライターにあります。ウェブページがとる対抗策は、ユーザー側で検出して阻止することができます。カスタム、必要なプラグイン、または必要なハードウェアドングルは、熟練した意欲のあるユーザーによって邪魔される可能性があります。

+3

Operaでは、ページが(.isTrustedプロパティを介して)偽のクリックを検出できるようになりました。他のブラウザではおそらくすぐに可能になります。 – c69

+2

@ c69、これはFirefoxでしばらくは可能ですが(http://help.dottoro.com/ljoljvsn.php)、IE9でのサポートは限られています。 –

+1

@MikeOrtiz、No。userscript自体は、ページが見ることができない別のスコープ、つまり@grant noneモードでも存在します。 ... userscriptが '

5

更新:以下の方法は、Greasemonkey 3.3の時点では完全に無効です。



見る(デッドリンク) How-to Detect Greasemonkey

JavascriptをGMがをインストールしている場合(ただし、スクリプトが実際にそのページ上で実行されていないかどうか)を検出する:

廃止されたオプション1:

if (Components.interfaces.gmIGreasemonkeyService) { 
    alert("I smell a monkey!"); 
} 


廃止オプション2:

<script type="text/javascript" src="resource://greasemonkey/addons4.js"></script> 
<script type="text/javascript"> 
if (typeof GM_addonsStartup !== "undefined") { 
    alert("I smell a monkey!"); 
} 
</script> 
+0

これはまだ有効ですか? – Edge

+1

@Edge、これはもう有効ではありません。更新された答えをご覧ください。 –

関連する問題