JavaScript操作の詳細分析 Referer_JavaScriptスキル

WBOY
リリース: 2016-05-16 16:56:21
オリジナル
1665 人が閲覧しました

リファラーの重要性
HTTP リクエストにはリファラー ヘッダーがあり、現在のトラフィックのソース参照ページを示すために使用されます。たとえば、www.sina.com.cn/sports/ のリンクをクリックして cctv.com のホームページにアクセスすると、参照元は www.sina.com.cn/sports/ になります。 Javascript では、document.referrer を通じて同じ情報を取得できます。この情報により、訪問者がどのチャネルから現在のページにアクセスしたかを知ることができます。これはウェブ分析にとって非常に重要であり、このリファラー情報を分析することで、さまざまなチャネルからのトラフィックの分布やユーザーが検索したキーワードなどがわかります。

しかし、さまざまな理由により、JavaScript で読み取られるリファラーが空の文字列になる場合があります。リファラーが失われる状況を以下にまとめます。

ページ ナビゲーション用の Location オブジェクトを変更する
Location オブジェクトは、ページ ナビゲーション用の非常に実用的なオブジェクトです。 URL の一部のみを変更できるためです。たとえば、cn ドメイン名から com ドメイン名に切り替える場合、他の部分は変更されません。

コードをコピー コードは次のとおりです:

window.location.hostname = "example.com";

ただし、Location を変更することによるページ ナビゲーションの方法では、Referrer が発生します。 IE では失われます。

IE5.5 では空の文字列が返されます

Chrome3.0、Firefox3.5、Opera9.6、Safari3.2.2 はすべて正常にソース Web ページに戻ります

window.open メソッドで新しいウィンドウを開きます
例:

コードをコピーコードは次のとおりです:

このリンクをクリックすると、新しいウィンドウで Google Web サイトが開き、アドレスバーに次の JS コードを入力すると、送信されたリファラーが表示されます。
コードをコピー コードは次のとおりです。

javascript:alert(document.referrer)

テスト結果:

IE5.5 では空の文字列が返されます

Chrome3.0、Firefox3.5、Opera9.6、Safari3.2.2 はすべて正常にソース Web ページに戻ります

同じドメイン名がこのメソッドを通じてリダイレクトされる場合、windoww.opener オブジェクトにアクセスすることで失われたリファラー情報を取得できます。コードは次のとおりです:

コードをコピー コードは次のとおりです:




クロスドメインなら仕方ないですね~

マウス ドラッグで新しいウィンドウを開きます
マウス ドラッグは、現在非常に人気のあるユーザーの習慣であり、多くのブラウザーにマウス ドラッグ ブラウジングのサポートが組み込まれています。ただし、この方法で開かれたページは基本的にリファラーを失います。さらに、この場合、window.opener を使用して失われたリファラーを取得することはできません。

テスト済み:

Maxthon2.5.2、Firefox、Chrome3.0、Opera9.6、Safari3.2 用の FireGesture プラグイン。

Flash 内部リンクをクリックします
Flash をクリックして別の Web サイトにアクセスすると、リファラーの状況はさらに複雑になります。

IE では、クライアント Javascript の document.referrer を通じて読み取られた値は空ですが、トラフィック監視ソフトウェアを使用して確認すると、HTTP リクエストの Referer ヘッダーが実際には Valuable であることがわかります。これは、 IEで実装されたバグ。同時に、この値はソース Web ページのアドレスではなく、Flash ファイルのアドレスを指します。

Chrome 4.0 で Flash をクリックして新しいウィンドウにアクセスすると、リファラーもソース Web ページのアドレスではなく、Flash ファイルのアドレスを指します。

Chrome 3.0 と Safari 3.2 は同じですが、両方ともリファラー情報が失われます。

Opera は Firefox と同じで、Referrer の値はソース Web ページのアドレスです。

HTTPS から HTTP
HTTPS Web サイトから HTTP Web サイトにジャンプする場合、ブラウザーはリファラーを送信しません。すべての主要なブラウザの動作は同じです。

たとえば、HTTPS で Google Reader または Gmail を使用し、リンクをクリックして別の Web サイトに移動する場合、技術的に言えば、そのようなアクセスとユーザーが URL を直接入力することとの間に違いはありません。

リファラーの喪失が広告トラフィックのモニタリングに及ぼす影響
リファラーが失われると、Web Analytics は情報の非常に重要な部分を失い、特に広告トラフィックの場合は不可能になります。実際のソースを知るために。現在、Google Adsense 広告を使用している国内 Web サイトの多くは、広告リンクを開くために window.open メソッドを使用しているため、IE ではリファラーが失われ、現時点で最大の市場シェアを持つブラウザは IE であることがわかっていますので、その影響は次のとおりです。大きいものです。したがって、多くのトラフィック統計ツールは、トラフィックのこの部分を「直接トラフィック」として分類します。これは、ユーザーが URL を直接入力するのと同じです。

このような状況に備えて、広告主は広告を掲載する際にランディング ページの URL に特定のトラッキング パラメーターを追加する必要があります。

たとえば、Flash 広告をクリックすると、到達する URL は http://www.example.com/ になります。このトラフィックがどのチャネルから来たのかを監視するために、この広告のランディング URL を変更できます。このメソッドと同様に http.://www.example.com/?src=sina にアクセスし、JavaScript コードを使用してランディング ページでこの src パラメータを抽出すると、広告ソース情報を取得できます。

Google Adwords を実行する場合、バックグラウンド システムには「自動タグ設定」オプションがあり、このオプションを有効にすると、Google はすべての広告のランディング ページ URL を生成するときに gclid パラメータを自動的に追加します。このパラメータは、 Google Analytics バックエンドと Adwords 広告バックエンド。これにより、広告トラフィックがどの広告キャンペーンに該当するか、どの広告ソースや広告キーワードなどの情報を知ることができます。このアイデアは実際には上記のものと似ています。 Google が自動的に URL を変更しただけです。

IE での空のリファラーの解決策
window.location.href メソッドを使用して IE でジャンプすると、リファラーの値が空になります。タグ内でジャンプすると、リファラーは空になりません。したがって、この IE の問題は、次のコードを使用して解決できます

コードをコピー コードは次のとおりです:

関数 gotoUrl(url){
if(window.VBArray){
var gotoLink = document.createElement('a');
gotoLink .href = url; .appendChild(gotoLink) ;
gotoLink .click(); ;
リンクにアクセスするときにブラウザがリファラーを使用することを禁止します
Web サイトからリンクをクリックして別のページにアクセスすると、ブラウザーは今度はソースを識別するためにヘッダーにリファラー値を追加します。ページにアクセスしました。ただし、この種の識別はユーザーのプライバシーを漏らす可能性があります。場合によっては、どこをクリックしたかを他の人に知られたくないことがあります。ブラウザーがリファラーを送信しないようにする方法はありますか?

•新しい html5 ソリューションを使用し、rel="noreferrer" を使用し、接続属性を noreferrer として宣言します。現在、chrome4 でのみサポートされています。
•中間ページを使用しますが、実際には Google のメソッドを使用するなどしてリファラーを送信します。接続リダイレクト、noreferrer.js.
•JavaScript プロトコルのリンク転送を使用します。以下の手順を参照してください。

target="_blank" に相当する新しいウィンドウを開きます:

コードをコピーします コードは次のとおりです:

function open_window(link){
var arg = 'u003cscriptu003elocation.replace("' link '")u003c/scriptu003e';
window.open('javascript:window.name; ', arg) ;
}

は接続にリダイレクトされます。

コードをコピーします コードは次のとおりです:
function redirect(link){
var arg ='u003cscriptu003etop.location.replace( "' リンク '")u003c/scriptu003e';
var iframe = document.createElement('iframe');
iframe.src='javascript:window.name;'; ;
document.body.appendChild(iframe)


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート