Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

Matomoのレポートから操作のないアクセスを極力除外する方法

Matomoに限らずアクセス解析では避けて通れないいわゆる1ページ素通りのアクセス。そのほとんどが海外の通常回線からのアクセスで、例えばフォームプラグインに脆弱性が見つかれば「/contact」や「/問い合わせ」といった、企業サイト以外では設置しないことの多いページを類推してアクセスして、何かを探るのが目的という場合も多いですね。

それらを除外して、できるだけきちんとアクセスしてきたものだけをレポートで見たい!今回はMatomo On-Premise(インストール型のMatomo)のトラッキングコードを少し改造して、ページ表示後にパソコンやスマートフォンで何かしらの操作があった場合にのみデータを送信する(アクセス解析に含める)方法を紹介します。

まずは以下が通常のMatomoのトラッキングコードです。

MatomoのサイトアドレスとIDを変更してフッターなどに設置すればOKですし、Matomoのサイト管理ページからも正確なトラッキングコードを得ることができます。

<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="MatomoのURL";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', 'トラッキングコード内のID']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

そして以下が、アクションがあった場合にのみMatomoへデータを送るためのコード。

通常のトラッキングコードを出力するのは同じですが、前述したようにページを表示した後で、例えばマウスのスクロール動作やスマホのスクロールやタップ動作などがあった場合のみデータを送るようにしています。

<!-- Matomo (Delayed Loading) -->
<script>
(function() {
  var loaded = false;

  function loadMatomo() {
    if (loaded) return;
    loaded = true;

    // イベントリスナーの解除(1度発火したら監視を終了)
    var events = ['keydown', 'mousemove', 'wheel', 'touchmove', 'touchstart'];
    events.forEach(function(e) {
      window.removeEventListener(e, loadMatomo, {passive: true});
    });

    // --- ここから元の Matomo コード ---
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);

    var u = "MatomoのURL";
    _paq.push(['setTrackerUrl', u + 'matomo.php']);
    _paq.push(['setSiteId', 'トラッキングコード内のID']);
    
    var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
    g.async = true;
    g.src = u + 'matomo.js';
    s.parentNode.insertBefore(g, s);
    // --- ここまで ---
  }

  // ユーザーアクションの監視(一度でも操作があれば発火)
  var events = ['keydown', 'mousemove', 'wheel', 'touchmove', 'touchstart'];
  events.forEach(function(e) {
    window.addEventListener(e, loadMatomo, {passive: true, once: true});
  });
})();
</script>
<!-- End Matomo Code -->

実はこれ、結構海外からの1ページ離脱アクセスに対して何とかならないかと某AIと対話して作ったものです。

テストしてみたところ、ある程度の1ページ離脱アクセスを除外することはできたものの、結構その操作自体も機械的に偽装するみたいで100%ではないようです。

従って、海外からのアクセス自体を拒否して、Matomoのレポートからも排除したいということであれば、そうしたサービスを使うか、海外からのIPアドレスをAIなどに投げてClassless Inter-Domain Routing (CIDR)形式にして拒否コードにした上で、サイトの.htaccessへ追加するか、public_html直下の.htaccessへ追加するのが妥当かも知れません。

お使いのサーバーの管理ソフトがcPanelで、IPブロッカーという機能が使えるようであれば、それを使うことで簡単にpublic_html直下の.htaccessへ拒否情報を追加したり削除したりできるので便利です

コメントを残す

メールアドレスが公開されることはありません。※ が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します