example-petstore.com

示例域名 · 并非真实服务 · 浏览器访问显示此页面 · API 请求返回 410 Gone

示例域名 · 并非真实服务

example-petstore.com

example-petstore.com 是 Google 在 Google Analytics、Search Console 和结构化数据相关文档中使用的示例域名,用来代指您自己的网站。此域名上没有商店、API 或搜索功能。如果您的代码或设置中出现此名称,请将其替换为您自己的域名。

您访问的是 dogs.example-petstore.com。该地址只存在于示例中,因此将您引导至此的内容仍指向一个占位地址。 它很可能来自Classic Analytics(ga.js)跨域名示例中的链接(“See my pet store”):查看修复方法。

曾将密钥、令牌或密码发送到此处?请立即轮换。

指向 example-petstore.com 的代码所发出的请求会到达此服务器,而不是真实服务,其中携带的 API 密钥、访问令牌、密码或会话 Cookie 也会一并送达。请将这些凭据视为已泄露:

  1. 在签发该密钥、令牌或密码的服务中将其撤销。
  2. 签发新的凭据,并将其保存在配置或密钥管理工具中,而不是代码中。
  3. 更正代码中的地址,确保新凭据只发送到真实服务。
  4. 检查该服务的访问日志,查找您无法识别的活动。

在 GitHub、AWS、Google Cloud、Stripe 等平台撤销密钥的位置

找到合适的指南

每篇指南只处理一项任务。请根据您发现这个域名的位置选择对应的分组。

修复网站设置

从 Google 示例中照搬的 Analytics、结构化数据和 Search Console 设置。

结构化数据

站点链接搜索框与网站名称

包含 query.example-petstore.com 的搜索框标记有什么作用、Google 为何停用它,以及现在应使用的 WebSite 标记。

Search Console

在 Search Console 中迁移网站

借助 301 重定向和 Change of Address 工具完成整站迁移,并确保规范网址、站点地图和 hreflang 中没有示例地址。

开发与测试

永远不会把请求发到陌生人服务器上的 API 客户端、模拟服务器和示例值。

API · SDK

配置 API 客户端和 SDK

将基础 URL 移出代码,指向真实服务,并添加一项检查,防止示例地址进入生产环境。

API · OpenAPI

在找 Swagger Petstore 吗?

Swagger Petstore 示例 API 的真实基础 URL、可用的请求示例、测试密钥,以及如何用 Docker 运行自己的副本。

文档

可以放心使用的示例值

保留的域名、IP 地址段、AS 号、MAC 地址、电话号码和测试卡,让示例即使被复制也不会造成危害。

安全

当密钥、令牌或密码被发送到这里或提交到 Git 时。

安全

凭据泄露:现在该怎么办

密钥、令牌或密码被发送到了示例域名。请撤销并替换它们,本指南附有常见服务提供商撤销页面的直接链接。

背景

名称的由来、哪些名称是保留的,以及本站使用的术语。

历史

example-petstore.com 的历史

Google 在何时何处使用了 example-petstore.com 和 example-commerce-host.com,从 2009 年至今,附存档来源。

参考

示例域名

哪些名称保留给文档使用,为什么像本域名这样的形似名称会收到真实流量,以及应该使用什么。

参考

术语表

简要解释 _setDomainName、linker、_gl、不需要的引荐、SearchAction 和 410 Gone。

在一个页面查看全部指南

此名称的来源

以下每个示例都列出了当初发布的过时代码段,以及应改用的内容。突出显示的部分是您需要替换的内容。完整历史中列有日期和存档来源。

Google Analytics · 2009–2024

使用 Classic Analytics 进行跨域名跟踪

Google 关于使用 Classic Analytics(ga.js)跟踪多个域名的指南中,使用了位于 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>

Classic Analytics 和 Universal Analytics 已不再收集数据。请删除这段代码(包括示例链接),然后安装适用于 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>

完整指南:从 Classic Analytics 迁移到 Google Analytics 4

Search Console · 2015–2019

迁移网站

Search Console 关于 Change of Address 工具的帮助文档中,以从 http://fish.example-petstore.com 迁移到 http://example.com 或 http://example-petstore.com 为例。该工具只能在两个网域级资源(Domain property 或 https://example.com/ 这样的根 URL 前缀资源)之间使用,且二者须由同一个 Google 账号拥有,因此必须将示例地址替换为您自己的地址,包括规范网址、站点地图和 hreflang 中的地址。

完整指南:在 Search Console 中迁移网站

API · 脚本

API 客户端和脚本

发往 api.example-petstore.com/v2/pet 等地址的请求,来自将此域名用作基础 URL 的代码。这些请求会收到 410 Gone 以及 JSON 格式的说明。此域名与 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;

// PHP 8
$baseUrl = getenv('API_BASE_URL') ?: throw new RuntimeException('API_BASE_URL is not set');

完整指南:配置 API 客户端和 SDK

快速检查清单

  • 在您的代码、模板、主题和代码管理工具中搜索 example-petstore 和 example-commerce-host。
  • 删除 Classic Analytics 和 Universal Analytics 代码;在 Google Analytics 4 中只列出您自己的域名。
  • 在结构化数据中使用您自己的首页和网站名称,并使用 Schema Markup Validator 进行检查。
  • 将 API 客户端和脚本指向真实服务,并轮换所有曾发送到此处的凭据。
  • 当所有内容都指向正确的位置后,您的网站或代码将不会再向此域名发送任何内容。

概览:各平台的修复方法

位置您看到的内容处理方法
Classic Analytics(ga.js)或 Universal Analytics(analytics.js)_setDomainName、_setAllowLinker、_link、_linkByPost 或 ga('linker:autoLink', …) 中包含这些名称之一删除整段旧代码(包括 onclick/onsubmit 处理程序和示例链接),然后安装适用于 Google Analytics 4 的 Google 代码。标准 Universal Analytics 媒体资源已于 2023年7月1日停止处理数据(360 媒体资源于 2024年7月1日)。 Universal Analytics has been replaced
Google Analytics 4域名列表中出现这些名称,或报告中出现自我引荐Admin › Data collection and modification › 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_domain在 linker.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、微数据)"url": "https://www.example-petstore.com/",或指向 query. 或 host.example-petstore.com 的 target将您自己的首页用作 url,将您自己的网站名称用作 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.4 版(2024年12月)中移除;请更新该插件。 SEOPress changelog
Search Console网站迁移、规范网址、站点地图或 hreflang 中使用了示例地址Change of Address 工具只能在同一 Google 账号拥有的两个网域级资源之间使用。301 重定向请至少保留一年,最好永久保留(该工具的迁移信号本身持续 180 天)。请更正您自己网站上的规范网址、站点地图和 hreflang,然后重新提交站点地图。 Change of Address tool
API 客户端、SDK 和脚本基础 URL 或主机使用了这些名称之一,通常还带有 Authorization 标头将基础 URL 移至配置(环境变量或配置文件)中,并将其指向真实服务。撤销所有曾发送到此处的密钥。 OWASP Secrets Management

在您自己的代码中查找

在您的项目(包括模板和主题文件)中搜索这两个名称:

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

另请检查代码中看不到的地方:首页渲染后的 HTML(查看源代码并搜索)、Google Tag Manager 容器中的自定义 HTML 代码和变量、CMS 或主题中的“自定义 head 代码”字段,以及分析和 SEO 插件的设置。

常见问题解答

example-petstore.com 是什么?

一个示例域名。Google 在 Google Analytics、Search Console 和结构化数据相关文档中用它代指您自己的网站,各类教程又从中照搬了它。此域名上没有商店、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 重新整理了 Classic Analytics 文档,关于跟踪多个域名的指南首次引入了这家宠物商店及其购物车。该指南的更早版本并未使用它。

这与 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。

来源