Cloudflare Workersを使用したファーストパーティトラッキング
Cloudflare Workersを使用してファーストパーティプロキシをセットアップします。このガイドは、サーバー側プロキシをセットアップできない共有ホスティング(Hostinger、GoDaddy、Bluehostなど)のユーザー向けです。
重要な制限:Firefox ETPはバイパスされません
このガイドではカスタムサブドメイン(z.yourdomain.com)をセットアップします。これはいくつかの広告ブロッカーとSafari ITPをバイパスしますが、サブドメインは異なるオリジンと見なされるため、Firefox Enhanced Tracking Protection(ETP)をバイパスすることはできません。
Firefox ETPの互換性が必要な場合は、代わりにこれらの同じドメインプロキシオプションのいずれかを使用してください:
- Cloudflare Pages Functions - Cloudflare Pagesを使用している場合
- Vercel - Vercelを使用している場合
- Netlify - Netlifyを使用している場合
- Next.js - Next.jsを使用している場合
これらは/api/_z/パスを使用して、同じオリジンであり、すべてのトラッキング保護を真にバイパスします。
難易度:簡単 - 約10分かかります。コーディング経験は不要です。コピーして貼り付けるだけです。
サブドメイン命名
このアプローチを続行する場合、z.yourdomain.comを使用してください(analytics.*、metrics.*、tracking.*、またはstats.*は使用しないでください。これらはヒューリスティックフィルターによってさらにブロックされます)。
開始する前に
次の項目を確認してください:
- Cloudflareアカウント(無料ティアで問題ありません)- ここからサインアップ
- Cloudflareに追加されたドメイン(ステップ2を参照)
- Zenovayトラッキングコード(ドメイン → サイト → 一般で確認できます)
トラッキングコードの形式
トラッキングコードは次のようなものです:ZV_XXXXXXXXXX
ZV_で始まる- 続いて10文字(文字と数字)
- 大文字と小文字を区別します - 正確にコピーしてください
例:ZV_Q8U0GYD70WR
Cloudflare Workersを選ぶ理由
Cloudflare Workersはグローバルなエッジネットワーク(300以上のデータセンター)で実行されます。これは以下を意味します:
- **高速:**世界中で50ms以下の応答時間
- **無料:**無料プランで1日100,000リクエスト(ほとんどのサイトに十分以上)
- **シンプル:**管理するサーバーなし
- **信頼性:**99.99%のアップタイム
ステップ1:Cloudflareアカウントを作成する
すでにCloudflareアカウントを持っている場合は、ステップ2にスキップしてください。
- cloudflare.comに移動
- Sign Upをクリック(右上隅)
- メールアドレスを入力
- パスワード(最低8文字)を作成
- Create Accountをクリック
- メールをチェックして検証リンクをクリック
**メールが届きませんか?**スパムフォルダを確認してください。メールは[email protected]から送信されます。
ステップ2:ドメインをCloudflareに追加する
このステップは必須です。 ドメインをCloudflareに追加しないと、z.yourdomain.comのようなカスタムサブドメインを作成できません。
- Cloudflareダッシュボードにログイン
- Add a Siteをクリック(大きな青いボタン)
- ドメイン名を入力(例:
yourdomain.com)www.またはhttps://を含めないでください- ドメインだけ:
yourdomain.com
- Continueをクリック
- Freeプランを選択してContinueをクリック
- Cloudflareが既存のDNSレコードをスキャンします - Continueをクリック
- Cloudflareは2つのネームサーバーを表示します:
bella.ns.cloudflare.comtroy.ns.cloudflare.com
- これらのネームサーバーをコピー - 次のステップで必要になります
ドメインのネームサーバーを更新する
次に、ドメインをCloudflareにポイントする必要があります:
- ドメインレジストラーにログイン(ドメインを購入した場所):
- GoDaddy:godaddy.com
- Namecheap:namecheap.com
- Google Domains:domains.google.com
- Hostinger:hostinger.com
- ドメインのDNSまたはネームサーバー設定を見つける
- 既存のネームサーバーをCloudflareのネームサーバーに置き換える
- 変更を保存
ネームサーバーの変更には時間がかかります。 変更が反映されるまで5分から48時間かかる可能性があります。通常は30分以内に完了します。
ドメインがアクティブになったら、Cloudflareからメールが届きます。
**共有ホスティングを使用していますか?**それでもドメインをCloudflareに追加できます。既存のホスティングは機能し続けます。Cloudflareはフロント側のプロキシになるだけです。ウェブサイトは通常どおり機能します。
ステップ3:Workerを作成する
- Cloudflareダッシュボードのサイドバーで、Workers & Pagesをクリック
- 青いCreateボタンをクリック
- Create Workerをクリック
- ワーカーに名前を付けます:
zenovay-proxy- 小文字、数字、ハイフンのみを使用
- スペースは許可されません
- Deployをクリック
成功メッセージが表示されます。次にプロキシコードを追加する必要があります。
ステップ4:プロキシコードを追加する
**ステップをスキップしないでください!**表示されたとおりにコードを正確にコピーしてください。1つの文字が欠けるとすべてが壊れます。
- デプロイ後、Edit codeをクリック(またはWorkerに移動して「Edit code」をクリック)
- デフォルトコード付きのコードエディタが表示されます
- 既存のコードをすべて選択(MacではCmd+A、WindowsではCtrl+A)
- 削除(DeleteまたはBackspaceキーを押す)
- 次のコードをコピーして貼り付けします:
// Zenovay First-Party Proxy Worker
// This proxies tracking requests through your domain to bypass ad blockers
export default {
async fetch(request) {
const url = new URL(request.url);
// Get the real visitor IP address (for accurate geolocation)
const clientIP = request.headers.get('CF-Connecting-IP') || '';
// Determine the target URL based on the request path
let targetUrl;
if (url.pathname === '/script.js' || url.pathname === '/z.js') {
// Script requests go to the regular endpoint
targetUrl = `https://api.zenovay.com/z.js${url.search}`;
} else {
// All other requests (events, settings) go through first-party endpoint
targetUrl = `https://api.zenovay.com/fp${url.pathname}${url.search}`;
}
// Copy the original request headers
const headers = new Headers(request.headers);
// IMPORTANT: Forward the real visitor IP for accurate geolocation
headers.set('X-Zenovay-Real-IP', clientIP);
// Remove the Host header (we're proxying to a different domain)
headers.delete('Host');
// Handle CORS preflight requests
if (request.method === 'OPTIONS') {
return new Response(null, {
status: 204,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type',
},
});
}
try {
// Forward the request to Zenovay API
const response = await fetch(targetUrl, {
method: request.method,
headers: headers,
body: request.body,
});
// Add CORS headers to the response
const responseHeaders = new Headers(response.headers);
responseHeaders.set('Access-Control-Allow-Origin', '*');
// Return the response to the visitor's browser
return new Response(response.body, {
status: response.status,
headers: responseHeaders,
});
} catch (error) {
// If something goes wrong, return an error
return new Response(JSON.stringify({ error: 'Proxy error' }), {
status: 502,
headers: { 'Content-Type': 'application/json' },
});
}
}
}- Save and Deployをクリック(右上隅)
- 「Worker deployed successfully」メッセージが表示されるまで待つ
コードを正常にコピーしましたか?「Worker deployed successfully」というメッセージが上部に表示されるはずです。エラーが表示される場合は、開き括弧export default {と閉じ括弧}を含むすべてのコードをコピーしたことを確認してください。
ステップ5:カスタムドメインを追加する
重要:z.yourdomain.comを使用する必要があります
FirefoxとEdgeは自動的にこれらのサブドメインをブロックします:
analytics.yourdomain.com— ブロックmetrics.yourdomain.com— ブロックtracking.yourdomain.com— ブロックstats.yourdomain.com— ブロックtelemetry.yourdomain.com— ブロックpixel.yourdomain.com— ブロック
推奨される唯一のサブドメイン:z.yourdomain.com
これは中立的な1文字のサブドメインで、ブラウザはブロックしません。
次に、ワーカーをドメインに接続します:
- Cloudflareダッシュボードでワーカーに移動
- Settingsタブをクリック(「Triggers」ではなく - Settingsに移動しました)
- Domains & Routesセクションを見つけるまでスクロール
- Add → Custom Domainをクリック
- サブドメインを入力:
z.yourdomain.comyourdomain.comを実際のドメインに置き換えるz.プレフィックスをそのまま保つ
- Add Custom Domainをクリック
- Cloudflareは自動的に:
z.yourdomain.comのDNSレコードを作成- SSLサーティフィケート(HTTPS)をプロビジョニング
- これは1~2分かかります
**緑のチェックマークを待つ。**カスタムドメインは「Initializing」と表示されてから、緑のチェックマークで「Active」に変わります。緑のチェックマークが表示されるまで先に進まないでください。
ステップ6:Workerをテストする
トラッキングスクリプトを追加する前に、Workerが機能していることを確認しましょう:
- 新しいブラウザタブを開く
https://z.yourdomain.com/script.jsに移動yourdomain.comを実際のドメインに置き換える
- JavaScriptコード(大量のミニファイされたコード)が表示されるはずです
**JavaScriptコードが見えますか?**Workerが正常に動作しています。ステップ7に進んでください。
エラーまたは空白ページが表示されていますか?
- カスタムドメインがCloudflareで「Active」と表示されていることを確認
- 2~3分待ってもう一度試す
- URLを正しく入力したことを確認
ステップ7:ウェブサイトにトラッキングスクリプトを追加する
重要:以下のインラインスクリプト方法を使用する必要があります。
シンプルな<script src="..."></script>メソッドはCloudflare Workersで確実に機能しません。理由は:
- Cloudflare Rocket Loaderはスクリプト読み込みに干渉することがあります
- スクリプトが読み込まれる前に設定を設定する必要があります
下記のインラインスクリプト方法を使用してください。
このコードをウェブサイトの<head>セクションに追加します。トラッキングコードはZenovayアプリのドメイン → サイト → 一般で確認できます。

<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
trackingCode: 'YOUR_TRACKING_CODE',
apiUrl: 'https://z.yourdomain.com',
settingsEndpoint: '/settings'
};
var script = document.createElement('script');
script.src = 'https://z.yourdomain.com/script.js';
script.defer = true;
document.head.appendChild(script);
</script>置き換えるもの:
| プレースホルダー | 置き換え先 | 例 |
|---|---|---|
YOUR_TRACKING_CODE | Zenovayダッシュボードのトラッキングコード | ZV_Q8U0GYD70WR |
z.yourdomain.com(2回出現) | 実際のカスタムドメイン | z.mywebsite.com |
**z.yourdomain.comの両方の出現を置き換える!**コード内に2つの場所があります。
実際の値の例:
<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
trackingCode: 'ZV_Q8U0GYD70WR',
apiUrl: 'https://z.mywebsite.com',
settingsEndpoint: '/settings'
};
var script = document.createElement('script');
script.src = 'https://z.mywebsite.com/script.js';
script.defer = true;
document.head.appendChild(script);
</script>このコードを追加する場所:
- WordPress:「Insert Headers and Footers」というプラグインを使用するか、テーマの
header.phpに追加 - **Wix:**Settings → Custom Code → Head Code
- **Squarespace:**Settings → Advanced → Code Injection → Header
- **Shopify:**Online Store → Themes → Edit Code →
theme.liquid(<head>セクション内) - HTMLファイル:
<head>タグと</head>タグの間 - **その他のCMS:**設定で「Custom Code」または「Header Scripts」を探す
ステップ8:動作を確認する
チェック1:ネットワークタブ(任意のブラウザ)
- Chrome、Firefox、またはEdgeでウェブサイトを開く
- F12キーを押す(MacではCmd+Option+I)してDevToolsを開く
- Networkタブをクリック
- ウェブサイトをリフレッシュ(Cmd+RまたはCtrl+R)
- フィルター/検索ボックスに
script.jsと入力 z.yourdomain.com/script.jsへのリクエストを探す
表示されるもの:
- Status: 200(OK)
- Domain:
z.yourdomain.com(api.zenovay.comではなく、あなたのドメイン)
チェック2:Firefox Strict モード(最も重要!)
Firefoxには最も厳密なトラッキング保護があります。Firefoxで動作すれば、すべてのブラウザで動作します。
- Firefoxブラウザを開く
- メニュー(☰)→ Settingsをクリック
- 左側のサイドバーでPrivacy & Securityをクリック
- 「Enhanced Tracking Protection」の下で、Strictを選択
- 設定を閉じてウェブサイトを訪問
- DevTools(F12)→ Network タブを開く
- ページをリフレッシュ
script.jsを検索 - ステータス200で読み込まれるはずです
**Firefox Strictモードで動作しますか?**おめでとうございます!ファーストパーティトラッキングが正しく設定されており、すべてのブラウザで動作します。
チェック3:Zenovayダッシュボード
- app.zenovay.comに移動してログイン
- ウェブサイトをクリック
- 別のタブでウェブサイトを訪問
- 1~2分以内に、ダッシュボードに訪問が表示されるはずです
最終チェックリスト
完了する前に、これらをすべて確認してください:
- Workerが
z.yourdomain.comにデプロイされている(JavaScriptコードで応答) - カスタムドメインが
z.プレフィックスを使用している(analytics.、metrics.などではない) - スクリプトタグに
data-cfasync="false"属性が含まれている -
window.ZENOVAY_TRACKER_CONFIGが正しいtrackingCodeで設定されている - スクリプト内の両方のURLがカスタムドメイン
z.yourdomain.comを使用している - Enhanced Tracking Protectionを「Strict」に設定したFirefoxでテスト
- Zenovayダッシュボードに訪問が表示されている
トラブルシューティング
Workerが522または524エラーを返す
**原因:**Zenovay APIへの接続がタイムアウト。
解決策:
api.zenovay.comにアクセス可能なことを確認(ブラウザで訪問)- プロキシコード内にタイポがないことを確認
- ワーカーの再デプロイを試みる(Edit code → Save and Deploy)
カスタムドメインがSSLエラーを表示
**原因:**SSLサーティフィケートがまだプロビジョニングされていない。
解決策: 1~5分待ってください。Cloudflareは自動的にSSLサーティフィケートをプロビジョニングします。10分以上かかる場合は、ドメインのネームサーバーがCloudflareを正しくポイントしていることを確認してください。
スクリプトは読み込まれるがダッシュボードにデータがない
**原因:**通常、トラッキングコードの不一致。
解決策:
- ブラウザのDevToolsコンソール(F12 → Console タブ)を開く
- 赤いエラーメッセージを探す
trackingCodeがZenovayダッシュボードと正確に一致することを確認(大文字と小文字を区別)- ウェブサイトドメインがZenovayに登録されていることを確認
「スクリプトを実行中」だが何も起こらない
**原因:**設定のapiUrlが間違っている。
解決策:
window.ZENOVAY_TRACKER_CONFIGが正しいapiUrlを持つことを確認してください:
apiUrl: 'https://z.yourdomain.com', // 実際のカスタムドメイン
地理的位置が間違った場所を表示
**原因:**実際のIPがZenovayに転送されていない。
解決策: ワーカーコードに次の行が含まれていることを確認してください:
headers.set('X-Zenovay-Real-IP', clientIP);
Firefox/Edgeがまだブロック中
原因:analytics.*やmetrics.*などのブロックされたサブドメインを使用している。
解決策:
カスタムドメインをz.yourdomain.comに変更します。次が必要です:
- Workers & Pages → ワーカー → Settings に移動
- 古いカスタムドメインを削除
- 新しいカスタムドメインを追加:
z.yourdomain.com - トラッキングスクリプト内の両方のURLを更新
詳細:複数のウェブサイト
複数のウェブサイトがある場合、1つのワーカーをすべてに対して使用できます:
-
同じワーカーに複数のカスタムドメインを追加:
z.website1.comz.website2.comz.website3.com
-
各ウェブサイトは独自のトラッキングコードを使用:
<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
trackingCode: 'ZV_SITE1CODE',
apiUrl: 'https://z.website1.com',
settingsEndpoint: '/settings'
};
var s = document.createElement('script');
s.src = 'https://z.website1.com/script.js';
s.defer = true;
document.head.appendChild(s);
</script><script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
trackingCode: 'ZV_SITE2CODE',
apiUrl: 'https://z.website2.com',
settingsEndpoint: '/settings'
};
var s = document.createElement('script');
s.src = 'https://z.website2.com/script.js';
s.defer = true;
document.head.appendChild(s);
</script>次のステップ
- カスタムイベント - ボタンクリックとフォーム送信を追跡
- 訪問者の識別 - アナリティクスをユーザーアカウントに接続
- トラブルシューティング - 一般的な問題についての詳細なヘルプ
ヘルプが必要ですか?
行き詰まった場合:
- 上記の各ステップを再確認
z.yourdomain.comを使用していることを確認(analytics.*やmetrics.*ではない)- Firefox Strictモードでテスト
- ブラウザコンソールでエラーを確認(F12 → Console タブ)
それでも行き詰まっていますか? [email protected] にサポートに連絡してください:
- ドメイン名
- ネットワークタブのスクリーンショット
- コンソールタブの任意のエラーメッセージ