この質問の年齢にもかかわらず、私は最近それが非常に便利であることに気付いたので、他の人がまだそれを見ているとしか思えません. ここや他の場所を見た後、広告ブロッカーを間接的に検出するための主な 3 つのクライアント側チェックは 、ブロックされたdiv
/ img
、ブロックされたiframe
s、およびブロックされたリソース (javascript ファイル) をチェックすることであると推測しました。
多分それは行き過ぎか偏執的かもしれませんが、選択から1つまたは2つだけをブロックする広告ブロックシステムをカバーしているため、1つのチェックだけを行っていた場合はカバーされていない可能性があります.
チェックを実行しているページに次を追加します:(私はjQueryを使用しています)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>
ページの他の場所に次を追加します。
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
私は餌の名前を持つ div と、「Advert」というテキストを含む外部でホストされた画像と、AdSense で使用されるサイズを使用しました (placehold.it に感謝します!)。
後で確認できるように、ドキュメントにadvertisement.js
何かを追加する必要があります。前と同じことをしているように見えますが、実際にadvertisement.js
は、出力ではなく、ロードされているファイル ( ) 自体をチェックしています。
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
そして、すべてを組み合わせた広告ブロッカー検出スクリプト
$(document).ready(function()
{
var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
$("body").append(ifr);
});
$(window).on("load",function()
{
var atb = $("#myTestAd");
var atb2= $("#myTestAd2");
var ifr = $("#adServer");
setTimeout(function()
{
if( (atb.height()==0) ||
(atb.filter(":visible").length==0) ||
(atb.filter(":hidden").length>0) ||
(atb.is("hidden")) ||
(atb.css("visibility")=="hidden") ||
(atb.css("display")=="none") ||
(atb2.html()!="check") ||
(ifr.height()!=300) ||
(ifr.width()!=300) )
{
alert("You're using ad blocker you normal person, you!");
}
},500);
});
ドキュメントの準備ができたら、つまりマークアップが読み込まれたら、iframe もドキュメントに追加します。次に、ウィンドウがロードされると、つまりコンテンツが含まれます。画像などが読み込まれたら、次のことを確認します。
- 最初のテスト div のサイズと可視性。
- 2 番目のテスト div の内容が「チェック」であること。これは、ブロックされて
advertimsent.js
いない場合と同じです。
- iframe の寸法 (非表示のオブジェクトには高さや幅がないため、可視性を推測しますか?)
そしてスタイル:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
お役に立てれば