分析 SDK
Edition: Community and Enterprise Compare editions
収集フィールド、イベント エンドポイント、ならびに Glossia Web 分析の裏にあるプライバシーモデル。
イベントエンドポイント
POST https://glossia.ai/v1/collect
POST /api/analytics/events は相互対応のために引き続き利用可能です。ホストスクリプトは独自オリジンから /v1/collect を導出します。パッケージ統合は endpoint を明示的に設定する必要があります。
@glossia/web SDK から JSON イベントを受け入れます。常に 202 Accepted を返します。不明なドメインまたは不正なペイロードを含む場合でも同様であるため、SDK はどのプロジェクトが分析データを収集しているか決して漏洩させることはありません。
スニペットが宣言するサイトドメインによってプロジェクトが解決されます。 d が権威性を持っています;缺失している場合、サーバーは u (ページ URL) のホストにフォールバックし、その後要求 Origin/Referer にフォールバックします。
リクエスト本文
| フィールド | 型 | 説明 |
|---|---|---|
d |
文字列 | プロジェクトを識別するサイトドメイン(例:example.com)。ブラウザライブラリにより送信されます。フォールバック解決は上記で説明されています。 |
n |
文字列 | イベント名。デフォルトは pageview です。 |
u |
文字列 | ページ URL (location.href)。 |
r |
文字列 | 参照元 (document.referrer)。 |
l |
文字列 | ブラウザ言語 (navigator.languages.join(","))。 |
sl |
文字列 | 実際のページ言語 (document.documentElement.lang)。不明時には空です。 |
al |
文字列 | link[rel="alternate"][hreflang] から取得したカンマ区切りの翻訳言語(x-default を除外)。 |
tz |
文字列 | IANA タイムゾーン (Intl.DateTimeFormat().resolvedOptions().timeZone)。 |
sw |
数 | CSS ピクセルで画面幅。 |
sid |
文字列 | タブ別セッション ID (sessionStorage、閉じた際にクリア)。 |
このエンドポイントは資格情報を許可しないため、CORS は (Access-Control-Allow-Origin: *) で開放されています。
サーバー由来のフィールド
これらはデータ取り込み時に計算され、サーバー側に保存されます。生の IP アドレスおよび User-Agent は保存されません。
| フィールド | ソース | 説明 |
|---|---|---|
visitor_id |
HMAC | IP、User-Agent、プロジェクトに基づいた毎日ローテーションされたハッシュです。跨日来のリンクはできません。 |
country_code |
Cloudflare / GeoIP | 信頼できる CF-IPCountry ヘッダーまたは設定された IP ジオロケーションアダプターからの ISO 3166-1 alpha-2 コード。どちらも国を解決できない場合は空です。 |
device |
User-Agent | desktop, mobile, tablet, bot, または unknown。 |
browser |
User-Agent | chrome, safari, firefox, edge, opera, または unknown. |
os |
User-Agent | windows, macos, ios, android, linux, または unknown. |
hostname |
ページ URL | 小文字化されたホスト。 |
pathname |
ページ言語 | パスコンポーネント。 |
referrer_source |
参照元 | 先行する www./m. を除去した参照元ホスト。 |
browser_language |
言語 | 最も優先される正規化されたロケール(例:pt-BR)。 |
served_locale |
ページ言語 | 正規化された sl, または収集されなかった場合は空(報告されませんでしたとして表示)。 |
has_locale_gap |
計算値 | 1 時、訪問者の優先言語がプロジェクトのターゲット、広告される翻訳 (al), またはページ言語 (sl) と一致しない場合。不足した優先設定はギャップとしてカウントされません。 |
クライアント IP の解決
プライベートインゲスピアからのリクエストに対して、Glossia は nginx が上書きした X-Real-IP ヘッダーを使用し、X-Forwarded-For の呼び出し元制御された最初のエントリではない。直接公開接続ではソケットアドレスを使用する。Hetzner 上に、ロードバランサーと nginx の両方で PROXY プロトコルを有効にする必要があります(これにより nginx はロードバランサーのアドレスではなく訪問者のアドレスを受信します)。他のリバースプロキシも認証されたソースにより X-Real-IP を上書きする必要がある。制限のない入内 X-Forwarded-For ヘッダーでは保証できません。汎用チャートの フォワードヘッダーポリシーだけではこれ保証しません。プライベートピアは信頼されたインフラであるため、直接ポッドアクセスを制限する。
GLOSSIA_TRUST_CLOUDFLARE_CLIENT_IP_HEADER=true はプライベート・イングレスピアからの要求に対して、CF-Connecting-IP を使用して canonical アドレスを上書きすることを許可します。国ヘッダーの信頼とは独立し、デフォルトで無効 です。Edge が Cloudflare を認証するか、Cloudflare を経由しない要求で偽造ヘッダーを除去してからのみ有効にするべきです。DNS だけのデプロイメントはこの機能を無効のままにすべきです。このアドレスは IP レート制限と毎日の訪問者ハッシュのキーとしても機能します。
国解決
GLOSSIA_TRUST_CLOUDFLARE_COUNTRY_HEADER=true は CF-IPCountry の高速パスを有効にします。デフォルトで無効 です。Origin が Cloudflare を認証するか、Cloudflare を経由しない要求を拒否するか、イグレスが信頼できないヘッダーのコピーを除去した後にのみ有効にしてください。ゾーンレベルでの Cloudflare の IP ジオロケーション設定も有効にする必要があります。CF-Connecting-IP, CF-Ray, および nginx の use-forwarded-headers は単独では要求の認証を行いません。
ヘッダー信頼が有効の場合、単一の有効な ISO 国コードはすぐに使用され、IP 検索またはキャッシュアクセスなしで取り下げられます。現在のエッジ値は常にキャッシュされた検索よりも優先されます。欠落、重複、Malformed、または不明なコードは、Cloudflare の XX(不明)および T1(Tor)の値を含む。設定されたジオロケーションアダプターにフォールバックされます。
MaxMind データベース設定なし、フォールバック検索は api.ipapi.is を使用し、プライマリリクエストが失敗または認識されない国を返す場合は api.country.is を使用します。各リクエストは 1 秒の接続および応答タイムアウトを持ち、リトライは無効化されます。両方のプロバイダーからの成功した結果は Cachex によって 24 時間キャッシュされ、100,000 エントリのスケジュールサイズ制限と自動有効期限回収があります。Cachex.fetch/3 は同じ IP での同時欠落を 1 つのサーバーに統合します。失敗はキャッシュされません。プライベートおよび予約済みアドレスは両方のプロバイダーに送信されません。
見られなかったページ言語
イベントに sl が存在しない場合、ダッシュボードは 未報告 を表示します。これは古いトラッカーバージョンによって収集されたイベントや、HTML lang 属性がないページにも含まれます。ページ言語はブラウザの好み、または URL から推測されません。履歴イベントは当時の収集されたメタデータを保持します;新しいトラッカーバージョンはそれをバックフィルしません。
プライバシーモデル
- 永続的なクロスセッション識別子は存在しません。 SDK はクッキーを設定せず、
sessionStorage内にのみタブ別セッション ID を格納し、ブラウザは閉じた際にこれをクリアします。 - フィンガープリンティングは行いません。 キャンバス、WebGL、フォント、音声のフィンガープリンティングは収集されません。毎日ローテーションするサーバーハッシュはそれらを含まず一意性の提供を行います。
- 生の識別子は保存されません。 IP アドレスと User-Agent は一度読み取られ、サーバー秘密鍵と毎日のソルトでハッシュ化され、その後破棄されます。
- プロジェクト別スコープ。 二つのプロジェクトで同じブラウザを使用しても、関連性のない訪問者 ID が生成されるため、Glossia の顧客間で訪問者を追跡することはできません。