Webエンジニアがアフィリエイトで稼ぐ

プログラミングやSEOなどWebエンジニアのノウハウを活かしてWebサービスを運営しています。

POP広告を掲載するとリファラが送られない件

POP広告の種類

アダルトサイトで主に掲載されているoctopuspopは以下の4種類があります。

  • タブアンダー
    タブが背面に立ち上がって広告を表示するタイプ(従来のPOP広告)
  • タブアップ
    タブが前面に立ち上がって広告を表示するタイプ
  • ポップアンダー
    ブラウザが背面に立ち上がって広告を表示するタイプ
  • ポップアップ
    ブラウザが前面に立ち上がって広告を表示するタイプ

上記のうち、タブアンダーとポップアンダーは本来のリンク先に一部のブラウザでリファラが送信されません。 タブアップとポップアップはリファラが送信されますが、広告が前面に表示されるためユーザビリティが著しく低下します。
リンク先にリファラが送信されないと、正しいアクセストレードが行えません。

リファラが送信されない原因

octopuspopのJavaScriptコードの比較

タブアンダー

this.setAttribute("href",a.click_url);
f&&this.removeAttribute("target");
window.open(c)

Aタグのhref属性を広告URLに変更し、本来のリンク先をwindow.openで開いています。 window.openでタブを開く場合にリファラを送信するかはブラウザ毎に挙動が異なり、主要なブラウザではIEリファラを送信しません。

タブアップ

window.open(a.click_url)

広告URLをwindow.openで開いています。本来のリンクはAタグのhref属性で遷移するので、リンク先にリファラが送信されます。

#ポップアンダー、ポップアップはあえて使用する意味がわからないので省略

タブアンダーでリファラを送信させる

POP広告のJavaScript自体は変更することができないので、本来のリンク先との間にクッションページを挟むことでリファラを送信させてみるサンプル。

イメージはこんな感じ

a.html →(タブアンダー)  b.html →(リダイレクト)  → c.html  

リンク元とリンク先の間にクッションページ(b.html)を挟むことで、
リンク先にはb.htmlがリファラとして送信される。

b.html

<script>
(function(url){
 if (navigator.userAgent.toLowerCase().indexOf('msie') >= 0){
  var a=document.createElement('a'),
      b=document.createElement('body');
  a.href=url;
  b.appendChild(a);
  a.click();
 } else {
  window.location.replace(url);
 }
})('リンク先URL');
</script>
<noscript>
<meta http-equiv="refresh" content="0;URL='リンク先URL'">
</noscript>

IE10以下は、window.location.replaceではリファラを送れないので、JavaScriptでa要素を作りクリックして遷移させる。

POP広告のSEOへの影響

タブアンダー 、ポップアンダーはAタグのhref属性を広告のURLに変えてしまうので、GoogleなどのJavaScriptを処理するクローラは本来のリンク先を追えなくなる可能性があります。外部リンクに対してPOP広告を表示するだけであれば問題ないですが、サイト内リンクにタブアンダー 、ポップアンダー広告を表示するのはやめておいた方が良さそうです。