URLがリダイレクトされている場合、ブラウザーはどのようにしてページにアクセスしたかを知ることができますか?


5

リダイレクトリンクのリンク先URLにアクセスしたことを、Chrome、Safari、Firefox、またはその他のブラウザーはどのように認識しますか?

ブラウザは、リダイレクトURL がリンクしているURLをブラウザが認識し、訪問したスタイルをリンクに適用することを常に興味深いと感じました。

私が求めていることを理解するには:

  • Googleにランダムなキーワードを入力します。
  • 検索結果で青いリンクを見つけます。クリックしないでください。
  • リンク先URL(通常はリンクの下に緑色で記載されています)をコピーします。
  • 新しいウィンドウ/タブを開き、リンク先URLをアドレスバーに貼り付けてを押しますEnter
  • Googleの検索結果に戻ると、すぐにリンクが表示され、紫色に変わります。

ただし、リンクはいくつかのgoogle.com/url...ページにあります。Googleがマークアップに入れて、ブラウザにリンクの履歴を関連付けるURLまたは何かを伝えるものはありますか?ブラウザは特定の方法でGoogleの検索結果を読むだけですか?


URLに接続し、リダイレクトされたURLを取得するのはブラウザーです。そこにミステリーはありません。
フォンブランド

回答:


6

リンクをホバリング中にステータスバーに注意を払うと、最初は「クリーン」なURLを指していることがわかります。

(3つのマウスボタンのいずれかで)リンクをクリックした場合にのみ、JavaScriptイベントがトリガーされ、リンクのリンク先がGoogleのURLリダイレクトに変更されます。

自分の主張を確認するには、紫色のリンクのいずれかを右クリックして、コンテキストメニューを閉じます。Googleの検索結果から既にサイトにアクセスしていない限り、色が変わることがわかります。1

GoogleがリダイレクトURL 2をどのように挿入するか正確にはわかりませんが、一般的な考え方は次のとおりです。

// define a function `f' that changes a link's clean URL to a redirection URL
var f = function () {
    // prepend `http://www.google.com/url?rct=j&url=' to the link's target
    this.href = 'http://www.google.com/url?rct=j&url=' + escape(this.href);
    // don't invoke this function anymore when clicking the link
    this.removeEventListener('click', f);
    // don't invoke this function anymore when right-clicking the link
    this.removeEventListener('contextmenu', f);
}

// save all <a> tags in an array `a'
var a = document.getElementsByTagName('a');

// for each <a> tag in the array `a'
for (var i = 0; i < a.length; i++) {
    // execute function `f' when clicking the link
    a[i].addEventListener('click', f);
    // execute function `f' when right-clicking the link
    a[i].addEventListener('contextmenu', f);
}

このjsFiddleを試して、動作を確認できます。


1 Chromium 25(Ubuntu 12.10)およびChrome 26(Windows 7)でテスト済み

2最小化されたJavaScriptは読みにくいです。


私はそれがそうだとは思わない。また、これは非常にOS固有の説明のようです。しかし、あなたは私をある方向に向けました。Google広告では、広告主は選択したURLを表示でき、広告にカーソルを合わせるとステータスバー表示URL表示されますが、リンク先URLはまったく異なります。ブラウザはGoogleの検索結果に合わせて調整され、履歴に緑のURLを使用すると考えています。
ヘンリャロン

私の答えのどの部分もOS固有ではありません。リンクの色の再レンダリングは異なる可能性があるため、正確なバージョン(OSを含む)に言及しましたが、一般的な結果は、たとえばWindows 7上のChromeの現在のバージョンとまったく同じです。私を信じて:1. JavaScriptを有効にして、答えで説明した手順に従ってください。2. JavaScriptを無効にしたGoogle何か。JavaScriptがないと、リンクをクリックしたときにURLを変更する方法がないため、ステータスバーにクリーンなURLが表示されないことがわかります。
デニス

あなたのマシンでJavaScriptが無効になっている場合、Googleはまったく別のページを表示します。しかし、それでもこれは理にかなっています。どのような種類のJavaScriptテクニックを使用してステータスバーを改ざんできるかを説明できますか?
ヘンリャロン

改ざんされているのはステータスバーではありません。リンクのURLです。リンクは最初はクリーンなURLを指しますが、クリックするとそのURLが変更されます。説明のためにフィドルを追加しました。
デニス

ワオ。これが事実です!私はとてもショックを受けました。Googleは分析を追跡するより良い方法を見つけることができませんでしたか?これを行うためにJavaScriptを使用している場合、インラインJavaScriptを介してトリガーされたリンクを追跡し、リダイレクトシステム全体を持たないようにすることもできます。今、私は理解しています。我慢してくれてありがとう。
-henryaaron
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.