Web サイトで広告ブロック ソフトウェアを検出し、リダイレクトして広告ブロックを無効にするようユーザーに依頼したいと考えています。私が見つけた唯一の方法は、Javascriptを使用することでした。
他の検出方法はありますか?
そうでない場合、Javascript が無効になっているかどうかを検出して特定のページにリダイレクトするにはどうすればよいですか?
Web サイトで広告ブロック ソフトウェアを検出し、リダイレクトして広告ブロックを無効にするようユーザーに依頼したいと考えています。私が見つけた唯一の方法は、Javascriptを使用することでした。
他の検出方法はありますか?
そうでない場合、Javascript が無効になっているかどうかを検出して特定のページにリダイレクトするにはどうすればよいですか?
ユーザーが広告をブロックしているかどうかを検出するには、広告 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>
javascriptが無効になっている場合、実際に「検出」することはできません。javascriptはクライアント側の機能であるため、サーバーはそれを検出できず、クライアント側での「検出」はjavascriptを使用して行われます。キャッチ22が表示されます。
利用できるのは<noscript>
タグです。これは、JavaScriptがオフになっている場合にのみブラウザによってレンダリングされます。これは、JavaScriptが無効になっている場合にユーザーにメッセージを表示するための標準的なメカニズムです。noscriptと巧妙なCSSを使用すると、ユーザーがjavascriptを有効にするか、提示したリダイレクトリンクをたどってサイトを使用することが必須になります。
javascriptが無効になっているユーザーのみを自動的にリダイレクトする方法はありません。javascriptを使用してユーザーを選択的にリダイレクトすることも、サーバー側の基準(HTTPヘッダーなど)に基づいてユーザーをリダイレクトすることもできます。しかし、その中間グループを捕まえることはできません。
アドブロックの検出に関しては、これはブラウザとアドブロックの方法によって異なります。一貫性のあるフラグはありませんが、JavaScriptを介して広告サーバーの可用性を確認したり、広告コンテンツがページに読み込まれているかどうかを確認したりできます。
「window.google_render_ad」をチェックする@Beauのソリューションを取得できませんでしたが、「window.google_jobrunner」をチェックすると機能しました。
元の回答が投稿されてから Adsense コードが変更された可能性があります。Adsense からダウンロードした JS に「google_jobrunner」が見つかりましたが、「google_render_ad」は見つかりませんでした。