トラフィックソース機能は、トラフィック統計サービスで利用できます。トラフィックソースは、訪問レベルの概念です。言い換えれば、訪問が確立されると、ランディングページのトラフィックソースが訪問の交通源です。トラフィックソースには多くの種類がありますが、残念ながらJSに基づいて、トラフィックソースを取得する方法は2つしかありません - document.referrer and window.opener。さらに残念ながら、window.openerが適切であり、document.referrerが非常に弱いため、多くのシナリオでトラフィックのソースを正確に決定することは不可能であるというシナリオが多くないことです。
document.referrerの概要
使用法の観点から、Document.Referrerはブラウザの動作を追跡したいと考えています。ページAが開かれている場合、ブラウザで発生する可能性のあるアクションには、ユーザー操作とJSコードが含まれます。
まず、ページAを開くときにユーザーが実行できるアクションを見てみましょう。
| 1 | アドレスバーに直接のアドレスを入力してください |
| 2 | ページBからリンクAを左クリックし、ページにジャンプします |
| 3 | ページBから新しいウィンドウで開くリンクAを右クリックします |
| 4 | ページBからリンクAを右クリックして、新しいタブで開きます |
| 5 | リンクAをアドレスバーにドラッグします |
| 6 | リンクAをタブバーにドラッグします |
| 7 | ブラウザのフォワードボタンとバックボタンを使用します |
ここのリンクは<a>タグを指しますが、イベントまたはターゲットがある場合は、別の問題である必要があります。
JSによるページを開く可能性のある方法:
| 1 | window.locationを変更します |
| 2 | window.openを使用します |
| 3 | フラッシュをクリックします |
上記には、クライアントがページを開くためのいくつかの方法がリストされています。さらに、サーバーリダイレクトテクノロジーを使用する場合、ページAを訪問者に提示することもできます。
これが特定のブラウザテストです。上記の状況が上記の場合、document.referrerはどのように実行されますか:
| シリアルナンバー | シーン | IE8.0 | FF3.6 | FF4.0 | クロム |
| 1 | アドレスバーに直接のアドレスを入力してください | "" | "" | "" | "" |
| 2 | ページBから左クリックリンクA、ページAの置換ページB(ターゲット= '_セルフ') | √ | √ | √ | √ |
| 3 | 左クリックリンクbページbから、新しいウィンドウ(ターゲット= '_ blank')にAが開きます | √ | √ | √ | √ |
| 3 | ページBから新しいウィンドウで開くリンクAを右クリックします | √ | √ | √ | "" |
| 4 | ページBからリンクAを右クリックして、新しいタブで開きます | √ | √ | √ | "" |
| 5 | マウスを使用してアドレスバーにリンクをドラッグします | / | "" | "" | "" |
| 6 | マウスドラッグリンクAタブバーにリンクします | "" | "" | "" | "" |
| 7 | ブラウザのフォワードボタンとバックボタンを使用します | 保つ | 保つ | 保つ | 保つ |
| 8 | Window.locationを変更するにはページA(同じドメイン)を開きます | "" | √ | √ | √ |
| 9 | [window.openを使用してページ]を開きます | "" | √ | √ | √ |
| 10 | フラッシュをクリックしてページを開きます | ||||
| 11 | サーバーのリダイレクトページa | "" | "" | "" | "" |
「」とは空の文字列を意味しますが、√ソースページを正しく審査できることを意味し、維持することは、フォワードとバックワードが変更されないときにページを変更しないリファラーを意味します。この表から、そのdocument.referrerがケースの約半分をカバーできることがわかります。ただし、マウスでタブバーにリンクをドラッグする、前後に移動するなど、より一般的に使用される操作など、適切に処理することはできません。
document.referrerのソース
ブラウザがサーバーからページAをリクエストすると、HTTPリクエストが送信されます。このリクエストのヘッダーには、参照属性があります。サーバーがリクエストを受信した後、ヘッダーに参照者を抽出して、訪問者がリクエストを開始したページを決定できます。
一般的に言えば、ブラウザから送信されるヘッダーの参照者は、Aを要求するときに送信されます。次に、document.referreの値はページAを取得した後に何ですか。上記の写真はページAとdocument.referreを要求するヘッダーです。
ヘッダーに紹介が含まれていない場合、document.referreを使用する場合、空の文字列として割り当てられます。
HTTPSリクエストについて
通常のHTTPページのHTTPSリンクをクリックすると、参照者情報をHTTPSリクエストヘッダーに添付できます。その後、document.referreを使用してHTTPSページで通常のHTTPページを取得できます。
同様に、1つのHTTPSページで別のHTTPSリンクをクリックすると、リクエストのヘッダーに参照情報を添付できます。
ただし、HTTPページからHTTPリンクをクリックすると、残念ながら送信されたHTTPリクエストヘッダーには、HTTPページに関する情報を含めることはできません。
鍛造参照情報
上記の説明によれば、document.referreはヘッダーの参照者から派生しています。次に、document.referreの値を理論的に変更する場合は、リクエストヘッダーを変更するだけです。ヘッダー内の既存の参照者を必要な値に置き換えることができます。元々利用できない場合は、参照を追加できます。
クライアント側では、ヘッダーを改ざんするのは非常に簡単なことです。ページのHTTPリクエストが送信される前に、パケットインターセプターツールを使用してインターセプトし、ヘッダー情報を分析し、参照を変更できます。
検索後、RefControlプラグインを使用してFirefoxを簡単に変更できます。とにかく、交通源をだましているのは簡単です。
ページフォースリフレッシュ
執筆を終えて間もなく、ジャンプページの方法が欠落していること、つまり、ページをHTMLのメタタグで指定するように強制的に更新することがわかりました。たとえば、b.htmlに書き込みます
コードコードを次のようにコピーします
その後、5秒後、ブラウザはサーバーへのページリクエストを自動的に開始します。
テスト後、IE8、FF3.6-FF4.0では、参照情報はありませんが、Chromeは誤ってB.HTMLをヘッダーの参照として追加できます。