example-petstore.com

サンプル ドメイン · 実際のサービスではありません · ブラウザでアクセスするとこのページが表示されます · API リクエストには 410 Gone を返します

サンプル ドメイン · 実際のサービスではありません

example-petstore.com

example-petstore.com は、Google アナリティクス、Search Console、構造化データに関する Google のドキュメントで、読者自身のウェブサイトの代わりとして使われたサンプル ドメインです。ショップ、API、検索機能はありません。 この名前がコードや設定に含まれている場合は、自社のドメインに置き換えてください。

キー、トークン、パスワードをここに送信しましたか? すぐに再発行してください。

example-petstore.com を指すコードからのリクエストは、実際のサービスではなくこのサーバーに届きます。リクエストに含まれる API キー、アクセス トークン、パスワード、セッション Cookie もすべて届いています。これらの認証情報は漏えいしたものとして扱ってください。

  1. キー、トークン、パスワードを発行したサービスで無効にします。
  2. 新しいものを発行し、コードではなく設定やシークレット マネージャーで管理します。
  3. コード内のアドレスを修正し、新しい認証情報が実際のサービスにのみ送信されるようにします。
  4. そのサービスのアクセスログに、心当たりのないアクティビティがないか確認します。

GitHub、AWS、Google Cloud、Stripe などでキーを無効にする場所

この名前の由来

以下の各サンプルでは、公開当時の古いスニペットと、代わりに使用するコードを示しています。 ハイライトされた部分が置き換える箇所です。日付とアーカイブされた出典は経緯の全文に まとめています。

Google Analytics · 2009–2024

従来のアナリティクスによるクロスドメイン トラッキング

従来のアナリティクス(ga.js)で複数のドメインをトラッキングする Google のガイドでは、 example-petstore.com のペットショップ、dogs.example-petstore.com などのサブドメイン、 example-commerce-host.com のショッピング カートが使われていました。

古いサンプル

_gaq.push(['_setAccount', 'UA-12345-1']);
_gaq.push(['_setDomainName', 'example-petstore.com']);
_gaq.push(['_setAllowLinker', true]);

<a href="http://dogs.example-petstore.com/intro.html"
   onclick="_gaq.push(['_link', 'http://dogs.example-petstore.com/intro.html']); return false;">See my pet store</a>

従来のアナリティクスとユニバーサル アナリティクスは、データを収集しなくなりました。サンプルのリンクも含めてこのコードを削除し、 Google Analytics 4 用の Google タグを設置してください。クロスドメイン測定はその後、管理画面で設定します。

代わりに使用するコード

<!-- Google tag (gtag.js) for Google Analytics 4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

ガイド全文: 従来のアナリティクスから Google Analytics 4 へ

Search Console · 2015–2019

サイトの移転

Search Console のアドレス変更ツールのヘルプでは、http://fish.example-petstore.com から http://example.com または http://example-petstore.com への移転が例として使われていました。 このツールは確認済みのドメイン プロパティ間でのみ機能するため、canonical、サイトマップ、hreflang も含め、 サンプルのアドレスは自社のものに置き換える必要があります。

ガイド全文: Search Console でのサイトの移転

API · スクリプト

API クライアントとスクリプト

api.example-petstore.com/v2/pet などのアドレスへのリクエストは、 このドメインをベース URL として使用しているコードから送られています。これらのリクエストには、JSON による説明とともに 410 Gone を返します。このドメインは、petstore.swagger.io の Swagger Petstore サンプル API とは関係ありません。

代わりに使用するコード: アドレスを設定から読み込む

# Python: read the address from configuration, not from the code
import os
BASE_URL = os.environ["API_BASE_URL"]

// JavaScript / Node.js
const baseURL = process.env.API_BASE_URL;

ガイド全文: API クライアントと SDK の設定

クイック チェックリスト

  • コード、テンプレート、テーマ、タグマネージャーで example-petstore と example-commerce-host を検索します。
  • 従来のアナリティクスとユニバーサル アナリティクスのコードを削除し、Google Analytics 4 には自社のドメインだけを登録します。
  • 構造化データには自社のホームページとサイト名を使用し、Schema Markup Validator で確認します。
  • API クライアントとスクリプトが実際のサービスを指すようにし、ここに送信された認証情報はすべて再発行します。
  • すべてが正しい場所を指していれば、サイトやコードからこのドメインに何も届かなくなります。

ステップごとのガイド

サンプル ドメインが見つかったプラットフォームのガイドを開いてください。

Google Analytics 4: クロスドメイン測定
  1. Google アナリティクスで Admin を開き、Data streams に移動します。対象のウェブ ストリームを選択します。
  2. Configure tag settings › Configure your domains を開きます。example-petstore.com と example-commerce-host.com を削除し、ショップや決済プロバイダなど、実際に所有または使用しているドメインを追加します。
  3. Configure tag settings に戻り、List unwanted referrals を開いて、決済プロバイダなど新しいセッションを開始させたくない参照元を追加します。最大 50 件まで登録できます。
  4. 保存します。変更は、このストリームを使用するすべてのページの Google タグに適用されます。

管理画面よりコードで設定したい場合

// Only if you configure cross-domain measurement in code instead of in the admin
gtag('set', 'linker', {
  'domains': ['www.example.com', 'checkout.example.net']
});

確認: 自社のドメインから別の自社ドメインへのリンクをクリックします。リンク先ページのアドレスに _gl= が含まれていれば正常です。Admin › DebugView(Tag Assistant またはデバッグモードを有効にした状態)で、訪問が 1 つのセッションとして継続していることを確認します。

ドキュメント: Set up cross-domain measurement · ガイド全文を読む

Google Tag Manager
  1. Tag Manager で Google tags を開き、対象の Google タグを選択して Show all を選びます。
  2. Configure your domains では自社のドメインだけを残します。無視すべき参照元には List unwanted referrals を使用します。
  3. Tags と Variables で example-petstore、example-commerce-host、_gaq、pageTracker を検索します。従来のアナリティクスやユニバーサル アナリティクスのコードを含む古いカスタム HTML タグは削除します。
  4. Preview でテストしてから Submit を選び、新しいコンテナ バージョンを公開します。

確認: Preview で、Google タグがすべてのページで配信され、サンプル ドメインを参照するタグがないことを確認します。自社ドメイン間のリンクには _gl= が付きます。

ドキュメント: Google tag settings in Tag Manager · ガイド全文を読む

従来のアナリティクスやユニバーサル アナリティクスの古いコード
  1. テンプレートで _gaq、pageTracker、ga.js、analytics.js、ga('create'、urchin を検索します。
  2. _link や _linkByPost を含む onclick ハンドラと onsubmit ハンドラも含め、ブロック全体を削除します。「See my pet store」や「Continue Shopping」などのサンプルのリンクは、自社のページを指すように変更するか削除します。
  3. Google Analytics 4 用の Google タグを設置します(下記のスニペット)。Google Tag Manager から追加することもできます。
<!-- Google tag (gtag.js) for Google Analytics 4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

確認: ページのソースを表示し、ga.js、analytics.js、サンプル ドメインが含まれていないことを確認します。Google Analytics 4 の Reports › Realtime に自分の訪問が表示されます。

ドキュメント: Universal Analytics has been replaced · ガイド全文を読む

WordPress と SEO プラグイン
  1. Yoast SEO、Rank Math、All in One SEO は、自社のアドレスからサイトのスキーマを生成するため、サンプル ドメインは使用しません。それでも検索アクションを削除したい場合は、Yoast では add_filter( 'disable_wpseo_json_ld_search', '__return_true' );、Rank Math では rank_math/json_ld/disable_search、All in One SEO では Search Appearance › Advanced › Enable Sitelinks Search Box をオフにします。
  2. SEOPress はバージョン 8.1(2024年9月)で検索ボックスのマークアップを削除しました。プラグインを更新してください。
  3. サンプル ドメインは通常、手動で貼り付けたブロックに由来します。テーマの header.php、「カスタム head コード」や「ヘッダー スクリプト」の欄、ページの head にコードを挿入するプラグインを確認してください。
  4. そのブロックを正しい WebSite マークアップ(下記のスニペット)に置き換えます。SEO プラグインがすでに出力している場合は削除します。
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Your site name",
  "url": "https://www.example.com/"
}
</script>

確認: ホームページのソースを表示し、自社の名前とアドレスを含む WebSite ブロックが 1 つだけあることを確認します。Schema Markup Validator でもチェックしてください。

ドキュメント: Yoast: SearchAction · ガイド全文を読む

手動で追加した構造化データ
  1. example-petstore.com を含む <script type="application/ld+json"> ブロック(または microdata)を探します。
  2. url を自社のホームページに置き換え、name に自社のサイト名を設定します。Google はサイトリンク検索ボックスを表示しなくなったため、potentialAction / SearchAction の部分は削除してかまいません。
  3. WebSite ブロックはホームページにのみ配置します。
  4. Search Console で、ホームページに対して URL Inspection › Request indexing を実行します。
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Your site name",
  "url": "https://www.example.com/"
}
</script>

確認: Schema Markup Validator に、自社の name と url を持つ WebSite アイテムが表示されることを確認します。リッチリザルト テストはサイト名に対応していません。

ドキュメント: Site names in Google Search · ガイド全文を読む

Search Console: サイトの移転
  1. 旧ドメインと新ドメインの両方を、同じ Search Console アカウントでドメイン プロパティとして確認します。
  2. 旧アドレスをすべて、対応する新アドレスへ 301 リダイレクトし、リダイレクトを 180 日以上維持します。
  3. 旧プロパティで Settings › Change of address を開き、新しいプロパティを選択します。
  4. 新しいサイトの canonical、サイトマップ、hreflang にサンプルのアドレスが残っていないか確認し、サイトマップを再送信します。

確認: Search Console でアドレス変更リクエストが処理中と表示され、新しいプロパティに表示回数が記録され始めることを確認します。

ドキュメント: Change of Address tool · ガイド全文を読む

API クライアント、SDK、スクリプト
  1. アドレスが設定されている場所を特定します。コード内のベース URL やホスト、設定ファイル、環境変数、Postman 環境、SDK のコンストラクタなどです。
  2. アドレスを設定に移し(下記のスニペット)、実際のサービスを指すようにします。
  3. このドメインに送信されたキー、トークン、パスワードはすべて無効にし、それらを発行したサービスで新しいものを発行します。
  4. 設定されたアドレスに example- が含まれている場合に失敗するチェックを追加し、再発を防ぎます。
# Python: read the address from configuration, not from the code
import os
BASE_URL = os.environ["API_BASE_URL"]

// JavaScript / Node.js
const baseURL = process.env.API_BASE_URL;

確認: リクエストが実際のサービスに届き、成功することを確認します。コードからのリクエストはここに届かなくなります。このドメインはそのようなリクエストに 410 Gone を返します。

ドキュメント: OWASP Secrets Management · ガイド全文を読む

概要: プラットフォーム別の修正方法

場所表示される内容対処方法
従来のアナリティクス(ga.js)またはユニバーサル アナリティクス(analytics.js)これらの名前を含む _setDomainName、_setAllowLinker、_link、_linkByPost、または ga('linker:autoLink', …)onclick / onsubmit ハンドラやサンプルのリンクも含め、古いスニペットをすべて削除し、Google Analytics 4 用の Google タグを設置してください。ユニバーサル アナリティクスは 2023年7月1日にデータの処理を停止しました。 Universal Analytics has been replaced
Google Analytics 4ドメインリストにこれらの名前がある、またはレポートに自己参照が表示されるAdmin › Data streams › 対象のウェブ ストリーム › Configure tag settings › Configure your domains で、自社のドメインだけを残してください。不要な参照元は List unwanted referrals に追加します。 Set up cross-domain measurement
コード内の Google タグ(gtag.js)gtag('set', 'linker', {'domains': ['example-petstore.com']}) またはハードコードされた cookie_domainlinker.domains には自社のドメインを指定してください。cookie_domain は省略するか、'auto' に設定します。 Measure activity across multiple domains
Google Tag ManagerGoogle タグのドメインリスト、または古いカスタム HTML タグGoogle tags › 対象のタグ › Show all › Configure your domains / List unwanted referrals を開きます。カスタム HTML タグと変数で古いスニペットを検索し、Preview でテストしてください。 Google tag settings in Tag Manager
手動で追加した構造化データ(JSON-LD、microdata)"url": "https://www.example-petstore.com/"、または query. や host.example-petstore.com を指す targeturl には自社のホームページを、name には自社のサイト名を指定してください。SearchAction は削除してかまいません。Schema Markup Validator で確認してください(リッチリザルト テストはサイト名に対応していません)。 Site names in Google Search
Yoast SEOサイトのスキーマ内の検索アクションYoast は自社のサイトアドレスを使用します。削除するには add_filter( 'disable_wpseo_json_ld_search', '__return_true' ); を追加します。 Yoast: SearchAction
Rank Mathサイトのスキーマ内の検索アクションRank Math は自社のサイトアドレスを使用します。削除するには、フィルタ rank_math/json_ld/disable_search を使用します。 Rank Math: sitelinks search box schema
All in One SEOサイトのスキーマ内の検索アクションSearch Appearance › Advanced › 「Enable Sitelinks Search Box」をオフにします。 AIOSEO: sitelinks search box
SEOPress—検索ボックスのマークアップはバージョン 8.1(2024年9月)で削除されました。プラグインを更新してください。 SEOPress changelog
Search Consoleサイト移転、canonical、サイトマップ、hreflang で使用されているサンプルのアドレスアドレス変更ツールは、所有しているドメイン プロパティ間でのみ機能し、301 リダイレクトを 180 日以上維持する必要があります。自社サイトの canonical、サイトマップ、hreflang を修正してから、サイトマップを再送信してください。 Change of Address tool
API クライアント、SDK、スクリプトこれらの名前のいずれかを指すベース URL やホスト(多くの場合 Authorization ヘッダー付き)ベース URL を設定(環境変数または設定ファイル)に移し、実際のサービスを指すようにしてください。ここに送信されたキーはすべて無効にしてください。 OWASP Secrets Management

自分のコードで探す

テンプレートやテーマファイルも含め、プロジェクト全体で次の 2 つの名前を検索してください。

grep -rniE "example-(petstore|commerce-host)\.com" .

コードに表示されない箇所も確認してください。ホームページのレンダリング後の HTML(ソースを表示して検索)、Google Tag Manager コンテナのカスタム HTML タグと変数、CMS やテーマの「カスタム head コード」欄、アナリティクス プラグインや SEO プラグインの設定です。

よくある質問

example-petstore.com とは何ですか?

サンプル ドメインです。Google アナリティクス、Search Console、構造化データに関する Google のドキュメントで、読者自身のウェブサイトの代わりとして使われ、そこからチュートリアルにコピーされました。ショップ、API、検索機能はありません。

example-petstore.com は実在するペットショップですか?

いいえ。ここでは何も販売しておらず、商品、アカウント、注文もありません。このドメインのどのアドレスにアクセスしても、このページが表示されます。

サイトやコードからのリクエストが example-petstore.com に届くのはなぜですか?

サンプルのアドレスがコピーされたまま置き換えられていないためです。古いトラッキング スニペットのリンク、構造化データ、Search Console の設定、API クライアントのベース URL などが考えられます。自社のドメインまたは実際のサービスに置き換えてください。

API キー、トークン、パスワードを example-petstore.com に送信してしまいました。どうすればよいですか?

漏えいしたものとして扱ってください。発行したサービスで無効にし、新しいものを発行してコードの外で管理し、アドレスを修正したうえで、そのサービスのアクセスログを確認してください。キーを無効にできるのは、発行したサービスだけです。

query.example-petstore.com は何に使われていましたか?

サイトリンク検索ボックスに関する Google の 2014~2015年のサンプルで、ペットショップの検索結果ページとして作られた架空のアドレスです。Google はサイトの検索結果の下に検索ボックスを表示でき、検索語句が {search_term_string} に入った状態で、そのアドレスにユーザーが送られる仕組みでした。このアドレスは実在したことがなく、Google は 2024年11月に検索ボックスの表示を終了しました。

example-petstore.com が最初に使われたのはいつですか?

2009年3月です。Google が従来のアナリティクスのドキュメントを再編成した際、複数のドメインのトラッキングに関するガイドでペットショップとそのカートが登場しました。それ以前のバージョンのガイドでは使われていません。

Google アナリティクスでユーザーの重複や自己参照が表示されるのはなぜですか?

クロスドメイン測定に誤ったドメインが登録されているか、何も登録されていないためです。Google Analytics 4 で、Configure your domains に自社のドメインを登録し、不要な参照元を List unwanted referrals に追加してください。

_setDomainName には先頭のドット、"none"、"auto" のどれを使うべきですか?

いずれも使いません。_setDomainName は従来のアナリティクス(ga.js)の機能で、従来のアナリティクスはデータを収集しなくなりました。古いコードを削除し、Cookie ドメインを自動的に設定する Google Analytics 4 を使用してください。

Swagger Petstore と関係がありますか?

いいえ。Swagger Petstore は petstore.swagger.io にある OpenAPI のサンプル API です。example-petstore.com は、Google のアナリティクスと SEO のドキュメントに由来します。

example-commerce-host.com とは何ですか?

姉妹サンプル ドメインで、同じクロスドメインのサンプルに登場するサードパーティのショッピング カートです(example-commerce-host.com/example-petstore など)。example-commerce-host.com をご覧ください。

出典