ブラウザ拡張機能
Zenovay Analytics Inspector は、任意のページ上で Zenovay トラッキングスクリプトを検出し、ポップアップでライブイベントを表示する Chrome + Firefox 用 WebExtension です。診断ツールであり、DevTools を開くよりも、またはダッシュボードのインストール確認フローを開くよりも、ブラウザ内で素早く確認できる代替手段です。
テレメトリは一切ありません。拡張機能は Zenovay にネットワーク呼び出しを行いません。すべての状態は chrome.storage.session に存在し、ブラウザを閉じるとクリアされます。
インストール
Chrome Web Store
近日公開 — 提出パッケージは準備済みです。承認され次第、ここに直接リンクを掲載します。
Firefox Add-ons (AMO)
近日公開 — 提出パッケージは準備済みです。
ソースから (開発者向け)
git clone https://github.com/zenovay/extension-zenovay.git
cd extension-zenovay
npm install
npm run build
Chrome では、chrome://extensions を開き、デベロッパー モード(右上のトグル)を有効にし、パッケージ化されていない拡張機能を読み込むをクリックして dist/ ディレクトリを選択します。
Firefox では、about:debugging#/runtime/this-firefox を開き、一時的なアドオンを読み込むをクリックして dist/manifest.json を選択します。
バッジの読み方
| バッジ | 意味 |
|---|---|
| (空) | このページで Zenovay トラッキングスクリプトは検出されていません |
琥珀色 ! | スクリプトは検出されたが、まだイベントが発火していない |
緑 ON | スクリプトが検出され、イベントが発火している |
青 C | スクリプトが検出され、cookieless モードで動作している |
バッジの状態はタブごとなので、1 つのブラウザセッションで複数のサイトの異なる状態を同時に表示できます。
ポップアップに表示される内容
バッジをクリックすると、ポップアップに以下が報告されます:
- ステータスカード — 現在の検出状態。ライブイベント中は脈動するピップ付き
- トラッキングコード — プロジェクト ID (例:
ZV_abc123…) - スクリプトの src — トラッカーが読み込まれている URL
- Cookieless — スクリプトタグに
data-cookieless="true"が設定されているか、またはZENOVAY_TRACKER_CONFIGにcookielessMode: trueがあるか - GPC — ユーザーがブラウザ設定で Global Privacy Control を有効にしているか
- API エンドポイント — トラッカーがイベントを送信する宛先
- ライブイベント — 最新 50 件のイベントのスクロール可能なリスト (イベントタイプ + 相対時間)
- Zenovay ダッシュボードで開く — 対応するウェブサイトのダッシュボードへのディープリンク
ライブイベント: パス A vs パス B
Zenovay トラッカーは、サイトが data-debug="true" を設定している場合にのみ zenovay:debug:event カスタムイベントを発行します。本番サイトは通常そうしていません。
パス B (デフォルト)。 拡張機能は zenovay:debug:event をリッスンし、window._zenovayDebugBus を排出します。デバッグモードのページ (または app.zenovay.com) では、イベントが流れ込んでくるのが見えます。デバッグモードのない本番サイトでは、ポップアップは次のように表示します:
ライブイベントを見るにはスクリプトタグで
data-debug="true"を有効にするか、下のディープインスペクションを切り替えてください。
パス A (オプトイン)。 ポップアップで Beta: ディープインスペクションを有効にします。拡張機能は navigator.sendBeacon と window.fetch をパッチして、トラッカー API への イベント POST をインターセプトします。すべてのサイトで動作しますが、2 つの注意点があります:
- 拡張機能は、同様にネットワーク呼び出しをパッチする他の拡張機能と衝突する可能性があります。
- トグルを有効にする前に発火したイベントはキャプチャされません。3 秒間イベントがなければ、ポップアップは初回ページビューをキャプチャするためのワンクリック再読み込みを提供します。
衝突に関するフィードバックを収集するまで、パス A は Beta とマークしています。いずれかのサイトで奇妙な動作を見たら無効にしてください。
検出シグナル
拡張機能は 5 つのソースを順番に調べます。すべてページの MAIN world 内で実行されます:
- スクリプトタグスキャン —
script[src*="/z.js"]、script[src*="zenovay-tracker"]、script[data-id]、script[data-tracking-code]、script[data-website-id]。 - グローバルプローブ —
typeof window.zenovay === 'function'、200 ms 間隔で最大 5 秒間ポーリング。 - 設定プローブ — トラッカーが
/loadエンドポイント経由 (ダッシュボード注入設定付き) で読み込まれた場合、window.ZENOVAY_TRACKER_CONFIGを読み取ります。 - イベント購読 —
windowでzenovay:debug:eventをリッスン。 - バッファ排出 —
window._zenovayDebugBusが存在する場合スナップショットを取ります。
いずれか 1 つのシグナルでページを「検出済み」とマークするのに十分です。
権限
| 権限 | 理由 |
|---|---|
activeTab | ポップアップを開いたときにアクティブタブの DOM を読む |
storage | タブごとに最新 50 件のイベントをセッションストレージにキャッシュ |
scripting | ページの MAIN world に検出プローブを注入する |
host_permissions: <all_urls> | 訪れるすべてのサイトで Zenovay を検出する |
明示的に要求しないもの: tabs、webRequest、cookies、history、bookmarks、downloads。拡張機能はあなたの他のタブ、履歴、保存されたパスワードを読むことはできません。
プライバシー
Inspector は、Zenovay の広範な cookieless 姿勢を尊重するように構築されています:
- ネットワーク呼び出しなし — 拡張機能は api.zenovay.com にも他のどこにもデータを送信しません。
- クッキーなし — 拡張機能自身もその UI もクッキーを書き込みません。トグルの状態は
chrome.storage.localにあります (Beta: ディープインスペクション設定の数バイト)。タブレベルのイベントデータはchrome.storage.sessionにあり、ブラウザを閉じるとクリアされます。 - 永続的なペイロード保存なし — パス A のパッチはイベント本体をメモリ内でのみ解析します。
- ディープリンクはユーザー起動 — Zenovay ダッシュボードで開くのクリックが唯一のアウトバウンドアクションで、意図的なクリックが必要です。
トラブルシューティング
Zenovay が確実にあるサイトでバッジが空のまま
- タブをハードリフレッシュ (Cmd/Ctrl + Shift + R)。注入されたプローブは
document_idleで実行されます。新鮮な読み込みで正常に動作する機会を与えます。 - ページソースを検査して、
/z.js、zenovay-tracker、またはdata-id="…"にマッチするscript srcパターンを探します。どれも存在しない場合、スクリプトは実際には読み込まれていません。 - サイトの CSP を確認 — 厳格な
script-srcディレクティブがトラッカーを完全にブロックしている可能性があります。
バッジが琥珀色 ! を表示しているがイベントを期待している
これはパス B が設計通りに機能しています。スクリプトは読み込まれていますが、サイトに data-debug="true" がないため zenovay:debug:event を発行していません。ポップアップで Beta: ディープインスペクションを有効にして再読み込みしてください。
ディープインスペクションを有効にした後、イベントリストが空
3 秒以内にヒントバナーが現れたら、再読み込みをクリック。トラッカーの初回ページビューはページ読み込みごとに 1 回発火します。パス A は有効化された瞬間からのイベントしかキャプチャしません。
Cookieless を設定したのに cookieless インジケーターが ✗ を表示
data-cookieless="true" は <script> タグ自体に文字列 "true" として配置する必要があります。確認してください:
<script src="https://api.zenovay.com/z.js" data-id="あなたのコード" data-cookieless="true"></script>
data-cookieless (存在のみ) や data-cookieless="1" ではありません。トラッカーは厳格な文字列一致で読み取ります。
オープンソース
拡張機能は MIT ライセンスで、github.com/zenovay/extension-zenovay で公開開発されています。Issues とプルリクエストを歓迎します。