広告ブロッカー(Adblock)の除外設定より広告ブロック検出のほうが現実的な対応である

広告ブロッカー(Adblock)の除外設定

先日、「【お願い】広告ブロッカー(Adblock)の除外設定をお願いします。」という記事が話題になっていた。

この記事では、すまほん!!というウェブサイトが読者に対し、広告ブロッカー(Adblock)の除外設定に同サイトのドメイン「smhn.info」を追加するようお願いしています。

広告掲載が主な収入源である同サイトは、広告ブロッカーの普及により収入が減少しており、読者に対して広告表示を許可して支援するよう求めています。

記事では、広告ブロッカーを解除する方法も詳しく説明しています。

しかし、協力ベースだとほとんどの人は除外設定にしないので、広告収入を維持したいのであれば、広告ブロッカーを検出して、閲覧したいユーザーに対してアラートを出して、広告ブロッカーの除外設定をお願いする方が良いでしょう。

広告ブロッカーを使用している方は「iwb.jp」のドメインの除外設定もお願いします。(小声)

広告ブロッカーを検出する方法

npm利用の場合

npmが使用可能であればAdblockDetectorを使用すれば広告ブロッカーを判定できます。

AdblockDetector

npm i -D adblock-detector
import AdblockDetector from 'adblock-detector'

const adbDetector = new AdblockDetector()
const userHasAdblock = adbDetector.detect()
const adblockText = userHasAdblock ?
  '❌ 広告がブロックされています。': 
  '✅ 広告が表示されています。'
console.log(adblockText)

AdblockDetectorは画面上に表示されない擬似広告バナーをJavaScriptで生成して、その広告を非表示にする処理が実行されたら、広告ブロッカーと判定されます。

JavaScriptで自作する場合

広告が非表示になるとWebページ内で広告の要素部分が以下いずれかの状態になるので、これらをJavaScriptで検出すれば広告ブロッカーを判定できます。

  • display: noneなる
  • 高さが変わる
  • 要素内の特定のタグが除去される
  • etc.

具体的なJavaScriptのコードは以下の通り。(.adsense内にiframe広告がある場合)

window.onload = () => {
  const adsense = document.querySelector('.adsense')
  const adsenseIframe = document.querySelector('.adsense iframe')
  const adsenseMinHeight = 40

  if (adsense && adsenseIframe) {
    const adHeight = parseInt(window.getComputedStyle(adsense).height, 10)
    const adsenseIframeHeight = parseInt(window.getComputedStyle(adsenseIframe).height, 10)
    
    if (adHeight < adsenseMinHeight || adsenseIframeHeight < adsenseMinHeight) {
      console.log('❌ 広告がブロックされています。')
    } else {
      console.log('✅ 広告が表示されています。')
    }
  } else {
    console.log('❌ 広告がブロックされています。')
  }
}

広告ブロッカーで非表示にしたときは高さが0になるとは限らないので、最低の高さを40pxで指定して判定しています。

また、前述のAdblockDetectorのように擬似広告バナーをJavaScriptで生成して、その広告を非表示にする処理が実行されたら、広告ブロッカーと判定する処理と併用するのも有効です。

WordPressの場合

WordPressの場合はCHP Ads Block Detectorという拡張機能をインストールすれば広告ブロッカーを判定できます。

Adblockなどには対応していますが、uBlock Originなどの一部の広告ブロッカーには対応していないので、未対応の広告ブロッカーには別途JavaScriptで自作して対応する必要があります。

CHP Ads Block Detector

よくありそうな質問

なぜ広告ブロッカーの除外設定が必要なのか?

広告ブロッカーを使用されて広告が非表示になると、広告収入がなくなり、Webサイトの維持費がなくなり、最終的にはWebサイトの閉鎖につながります。

Webサイトの維持にはドメイン維持費とサーバー料金がかかります。
(企業であれば人件費なども)

広告をクリックしない人は除外設定する必要はないのでは?

広告はクリックしなくても表示されるだけ(インプレッション)でも広告収入が入ります。

また、2024年にはGoogleのAdsense広告が「クリック単価」から「インプレッション単価」に移行するため、広告が表示されないと広告収入が激減します。

Updates to how publishers monetize with AdSense

不快な広告が表示される

Google Adsenseなどでは右上のバツをクリックして、「この広告の表示を停止」を選択すれば、以後は表示されなくなります。

不快な広告を非表示にできない

不快な広告が表示されるWebサイトを閲覧するのはやめましょう。

不快であれば「閲覧しない」という選択肢があなたにはあります。

悪質広告が表示されると詐欺にあう可能性がある

騙されないように一般常識とITリテラシーを高めてください。

騙されやすい人はWebサイトを閲覧しないことをオススメします。