AdBlockとJavaScriptを検出[閉じ
-
27-10-2019 - |
質問
WebサイトでAdblockingソフトウェアを検出し、リダイレクトによりユーザーにAdblockを無効にするように依頼したいと思います。私が見つけた唯一の方法は、JavaScriptを使用することでした。
他に検出方法はありますか?
そうでない場合、JavaScriptが無効になっているかどうかを検出し、特定のページにリダイレクトするにはどうすればよいですか?
解決
JavaScriptが無効になっている場合、実際に「検出」することはできません。 JavaScriptはクライアント側の機能であるため、サーバーはそれを検出できず、クライアント側がJavaScriptを使用して「検出」されます。キャッチ22が表示されます。
利用可能なのはです <noscript>
JavaScriptがオフになった場合にのみブラウザによってレンダリングされるタグ。これは、JavaScriptが無効になっている場合、ユーザーにメッセージを表示するための標準的なメカニズムです。 NoScriptと賢いCSSを使用すると、ユーザーがJavaScriptを有効にするか、サイトを使用するために提示したリダイレクトリンクに従って必須にすることができます。
自動的にリダイレクトする方法はありません それだけ JavaScriptが無効になっているユーザー。 JavaScriptを使用してユーザーを選択的にリダイレクトすることも、サーバー側の基準(HTTPヘッダーなど)に基づいて人をリダイレクトすることもできます。しかし、あなたはその中間グループをキャッチすることはできません。
Adblockingの検出に関しては、これはブラウザーとアドブロックメソッドによって異なります。一貫したフラグはありませんが、JavaScriptを介して広告サーバーの可用性をチェックするか、広告コンテンツがページにロードされているかどうかを確認するなどを行うことができます。
他のヒント
ユーザーが広告をブロックしているかどうかを検出するには、AD 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
JavaScriptが無効になっているすべてのユーザーをリダイレクトするには、このコードをHTMLのヘッドに配置するだけです。
<noscript>
<meta http-equiv="refresh" content="5;url=http://newsite.com/">
</noscript>
私はこの投稿から主題について引用します:
http://w3guy.com/detecting-adblock/
HTML
<div class="myTestAd">
<!-- Adsense Ad code goes here -->
</div>
JS:
if ($('.myTestAd').height() == 0) {
// stuff to do if adBlock is active
}
「window.google_render_ad」をチェックする作業に対する @beauのソリューションを取得できませんでしたが、「window.google_jobrunner」をチェックするときに機能しました。
元の回答が投稿されてからAdSenseコードが変更されたのかもしれませんが、JSで「Google_Jobrunner」がAdSenseからダウンロードされたが、「Google_Render_ad」ではなく「Google_Jobrunner」を見つけました。