1

この質問は何度も出されていますが、それらの質問のほとんどは古いものです。

私はいくつかの異なるテクニックを試しました:

a:visited {} /* read computed style - always returns :link color*/
a:visited {} /* set height and measure that, turns out you can only set various colors */
a:link:after { content:"abc"} /* tried various styles */
/* the same restrictions apply when dealing with nested/child elements */

ピクセルの色をそのように取得するために、div の「スクリーンショット」を取得してキャンバスに配置しようとしました。

半透明の div をアンカーの上に置き、それを使用して色を測定することを検討しました。

スニッフィングしたいサイトからスタイルシートをロードして、所要時間を計ってみました (最初/2 番目/... ロード時) が、結果は奇妙です (実際にローカルにキャッシュされたネットワークなど)。

<script>
    var t = new Date().getTime();
</script>
<link id="test" rel="stylesheet" type="text/css" href="http://l.yimg.com/zz/combo?nn/lib/metro/g/breakingnews/breakingnews_0.0.49.css" />
<script> 
    document.getElementById("test").onload = function () {              var ft = ((new Date().getTime()) - t) + "ms";
        alert(ft);
    };
</script>

Mozilla は、これらのセキュリティ制限の理由と方法をここで概説しています。

履歴のスニッフィングは完全に不可能ですか?もしそうなら、標準/受け入れられた/ユーザーフレンドリーな方法はありますか?

4

2 に答える 2

1

@boisvert が指摘したように、これはプライバシーの侵害です。以前は可能でしたが、最近のブラウザ バージョンではできませんでした。クリックしたリンクを localStorage に保存して、後で確認することをお勧めします。100% 効果的ではありませんが、ブラウザー側の JavaScript を使用すると 100% になることはありません。

サイト ノードとして、代わりにサーバー側で実行することもできます。それは100%効果的です。

于 2013-04-21T21:59:22.437 に答える
1

コメントが強調しているように、ブラウザの履歴情報を取得することはできません。少なくとも、ブラウザが本来あるべきように設計されている場合はそうではありません。これはプライバシーの侵害であるためです。

いくつかの限定されたオプションがあります:

  • historyオブジェクトにはback、現在のウィンドウまたはフレーム内を前後に移動するための および メソッドがありますforwardlengthしかし(再びプライバシー)それは読み取り可能であるため、次のようなことはできません x = window.history[0]
  • Cookie (またはセッション) を使用すると、サイトのナビゲーション履歴を維持し、Cookie/セッション データを読み取るサイトに限定された、ユーザー フレンドリーな機能のためにその情報を利用できます。
  • すべてのリンクを最初に中央サイト経由でリダイレクトし、履歴を記録し、そのサイトが訪問したリンクの機能を提供する JavaScript ライブラリをホストするマルチサイト バージョンを想像できます。履歴を保持するための中央の場所を介してリダイレクトされるすべてのリンクに依存しているため、これに同意したサイトにのみ適用されます.
于 2013-04-21T12:08:25.113 に答える