网站如何知道它们不是默认主页或搜索提供商?

How do websites know they're not the default home page or search provider?

据我所知,没有 public API 浏览器默认 homepage/search 提供程序公开。那么 Google 怎么知道要显示这个呢?它仅在 Google 不是我浏览器上的默认主页/默认搜索提供程序时出现。

我只能假设他们是从众多变量中推断出来的,例如引荐来源网址。我无法成功深入研究 Google 的编译 JavaScript。我什至不确定它是在客户端还是服务器端检测到的。

我使用的是 Firefox 44,但我也在 Chrome 上看到过这些横幅。

在我的 Firefox (v42) 中,即使我将 Google 设置为默认搜索提供程序,也会出现 "Come here often?" 框。

在 Safari 中,我在同一位置得到一个框,上面写着 "A better way to browse the web: Get Google Chrome"

在 Opera 和 Chrome 中,即使我将默认搜索提供程序更改为 Google 以外的其他内容,我也根本看不到框。

所以,我相信他们所做的只是使用 UserAgent 对象在 JavaScript 中检测浏览器。

我不知道 Google 到底是做什么的,但我会做什么:

  • 用一些特殊参数设置主页URL并检查它-'http://www.example.com/#!homepage(防止漏报)
  • 检查 Referer 字段:
    • 如果不存在,假设用户手动输入
    • 如果每次用户访问都非常相似(并且可能在浏览会话开始时 - 通过 GA 在每个页面上推断),假设用户总是从某个地方点击进入这里
  • 设置一个 cookie,例如visitedHelpAboutHomePage 当用户访问 "yes, show me" 页面时(可能会防止误报,但也可能会产生误报)

请注意 "special parameter" 确实发生在 "searchbox-initiated search" 场景中:有一个参数 sourceid 可能意味着 "source of search."

只是没有办法用JavaScript做到这一点,因为"default search/homepage"是用户的偏好,如果没有[,你就无法访问它=16=]用户许可,因为那将是一个security/privacy问题。

Google 的作用 在每次用户访问时显示带有关闭图标的促销广告和带有如何将其设置为默认主页的说明的转到按钮. 点击 其中任何一个,它会创建 2 个 cookie,以便下次它会检查您的 cookie 并使促销消失。即使 Google 是您的主页并且您清除了 cookie,横幅仍然存在以将 Google 宣传为您的主页。

我已经用 Firefox 检查了这个,不知道 Chrome。