AdBlock ソフトウェアを検出していますか?
質問
最近訪れていました サイト そしてそのページには、私が AdBlocking ソフトウェアを使用していることに気づいたので、そのような小規模なサイトをサポートするためにそれをオフにしていただけますかというセクションがあることに気付きました。どうやってそれをするのかと思ったのですが?クライアント側とサーバー側のどちらで実行するのが最適ですか?
解決
これは単にサーバ側で行うことができない何かである - 人はあなたのドアをノックし、言うことのためにもちろんゼロ理由があります「私を見て、私はAdblockPlusを持っています!」。クライアント側では、adblockのダウンロードが積極的にあなたが起こると、彼らはadblockerを使用していることを見ることができるものですページのコンテンツを、影響を与えようとした場合。
とにかく、私はnewgrounds.comがあまりにもこれをやっていることを知ることが起こりました。 (彼らの新しいレイアウトは、adblockのダウンロードプラスのユーザーのためにめちゃくちゃにされた - -banner「あなたは、私たちの広告を通して私たちを助けに行くと店で何かを購入するつもりはない場合は、」応答として、彼らは最高のためのコンテストを作っ
グラウンズのソースで簡単に見は、彼らはいくつかの簡単なJavaScriptでこれをやっている私に言いました。 文書の最初ます:
var user_is_leecher = true;
次の外部スクリプトタグがあります:src=checkabp?thisistotrickabp=***adress of ad affilliate***
今ジョーク:user_is_leecher = false;
そこから、彼らは何でも行うことができます。
他のヒント
すべてここに述べた方法でオフには、コードを取り除くために、広告ブロッカーに依存しています。これは、(MacのNetBarrierのような)一部の広告ブロック機能は動作しません。また、広告ブロック機能がオンにキャッチしたときにあなたのコードを更新し続けなければなりません。
ユーザーが広告をブロックしているかどうかを検出するには、あなたがしなければならないすべてはそれのためのテストをしてみてくださいJavaScriptと広告内の関数を見つけることです。彼らが広告をブロックするために使用しているものの方法は重要ではありません。ここでは、GoogleのAdSense広告について次のようになります。
if(typeof(window.google_render_ad)=="undefined")
{
//They're blocking ads, do something else.
}
この方法は、ここで概説さ:のhttp:// WWW。 metamorphosite.com/detect-web-popup-blocker-software-adblock-spamする
あなたは(...おそらく、それぞれの要求にいくつかのユニークな識別子と)HTMLページのやacording広告に対する要求を組み合わせることで、サーバー側でそれを行う可能性が...しかし、これは単なるアイデアですが、私はそれを試したことがありませんでもそれが使用さ見たことがない。
私は、彼らはそれをやったかのように見えるようだコードでこの部分を見つけます:
/*MOOTOOLS*/
window.addEvent('domready', function(){
$$('.cat-item').each(function(el) {
var fx = new Fx.Morph(el,{ duration:300, link:'cancel' });
el.addEvents({
'mouseenter': function() { fx.start({ 'padding-left': 25 }); },
'mouseleave': function() { fx.start({ 'padding-left': 15 }); }
});
});
if ($$(".google-sense468")[0] && $$(".google-sense468")[0].clientHeight == 0 && $('block-warning')) $('block-warning').setStyle('display','block');
});
/*MOOTOOLS END*/
私はそれを行うにはいくつかの方法があると思いますが、おそらく最も簡単なの一つは、広告がロードされるときに置換されること、背景画像、またはテキストのいくつかの種類を持っているだろう。広告がロードされる場合はこのように、あなたは広告が表示されます。広告がロードされない場合は、テキストを参照してください。
この例でも十分かもしれませんJavaScriptや単なるCSSのいずれかによって行われ、クライアント側になります。
がありすぎて、これを行うことができ、いくつかのサーバー側の仕掛けであるかもしれないが、彼らは不必要に複雑で不格好になります。心にスプリング一つの方法は、求められることができ、広告主とのAPIのいくつかの種類含まれるであろう「IP such.and.such負荷から任意の画像を、ユーザをしましたの?」そしてそのように答えを得ます。しかし、私はこのようなサービスがあります疑う - クライアント側で行うためにはるかに簡単になります。
。私は、サーバー側のよりクライアント側でそれを行う方がはるかに簡単であると考えています。広告ブロッカーは、クライアントにインストールされているので、彼らはDOMとブロックAJAXリクエストを操作することができます。私はそれがサーバー上よりも、クライアント上で検出するために、より理にかなっていると考えている理由です。
とにかく、これは広告ブロッカーを持つユーザーは、それがオープンソースだし、完全なコードはgithubの上で有効に検出し、スタンドアロンのシンプルなプラグインがあります:
https://github.com/retargetly/mockingbirdする
これは、彼らが簡単に広告コンテナやポップアップでメッセージを表示することができますように配向より出版社です。プラグインは頻繁に更新され、それは試してみる価値はあります。これはまた、フィドルます:
http://jsfiddle.net/retargetly/9vsha32h/する
あなたが使用する必要がある唯一の方法がある。
mockingbird.adsBlocked(Obj)
呼び出しがコードのどこにでも行うことができ、あなたはそれを動作させるためにはjQueryを必要としません。
あなたの幸運を願い!
これを行う簡単な方法はないと思います。できることは「罠」を作ること。PHP スクリプトで、yourdomain.com/ad.png のような非常に明白な URL をリッスンさせます。おそらく URL を書き換えることでこれを実現できます。このページがロードされている場合は、セッション変数にこれを記録し、1x1 の空白の png を送り返すことができます。
次のリクエストで、ad.png が読み込まれたかどうかを確認できます。そうでない場合は、クライアントが何らかの形式の AdBlock ソフトウェアを使用していると推測できます。クライアントが「ad.png」をキャッシュしないように、適切な http ヘッダーを設定していることを確認してください。
これは現時点で私が考えることができる唯一のサーバー側のアプローチですが、いくつかの欠陥があります。
- png ファイルは http ヘッダーに関係なくキャッシュできます。
- これは最初の http リクエストでは機能しません
- ブラウザがリクエストごとに ad.png をヒットし続けるため、サーバーに余分な負荷がかかります
- 画像がサーバーからロードされても、実際に表示されるという保証はありません
- おそらく私が考えてもいなかったさらなる副作用があるでしょう
試してみようと思ったら、この投稿にコメントしてください。
クライアント側の解決策について。これはそれほど難しいことではありません。ページの読み込み完了時に実行する小さな Javascript を作成できます。このスクリプトは、ページに広告を保持する dom ノードが含まれていることを確認できます。ページが (dom だけでなく) 完全に読み込まれたときにこれを実行すると、広告画像の幅と高さを確認できます。このソリューションの最も明らかな欠点は、クライアントが JavaScript を無効にできることです。
ここではいくつかの良い答えので、私はちょうどこれを追加します。
(あなたがあなた自身を書くことができます)いくつかの広告管理システムを使用します。それによって、表示されていますすべての広告を追跡(およびads.phpまたはshowad.phpまたは何のように、それは明らかにします)。そのスクリプトが呼び出されない場合は、ユーザーが広告ブロックソフトウェアのいくつかのフォームを使用しています。
しかし、そのハンドラを介してそれぞれ、すべての広告を扱うようにしてください。 mod_rewriteのは必須ではありません、それは簡単なPHPを使用して行うことができます。
あなたはサーバー側でadblockerは次のようにsomithingさを検出するために何ができるます:
<?php
header('Content-Type: application/javascript');
//Save it to session
session_start();
$_SESSION['noAdblocker']=true;
?>
noAdblocker=true;
タグ
ads.php
としてこのファイルを保存します
今index.php
ます:
<?php
session_start();
$_SESSION['noAdblocker']=false;
?>
<!DOCTYPE HTML><html><head>
<!-- Now place the "ad-script" -->
<script src="ads.php"></script>
</head><body></body></html>