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

Posted

技术标签:

【中文标题】网站如何知道它们不是默认主页或搜索提供商?【英文标题】:How do websites know they're not the default home page or search provider? 【发布时间】:2016-03-15 17:17:54 【问题描述】:

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

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

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

【问题讨论】:

相关:***.com/questions/15813851/… 即使在我将它们设置为默认值之后,我也会在 Edge 中获得这些。它根本不知道。 【参考方案1】:

没有办法使用 JavaScript 来做到这一点,因为“默认搜索/主页”是用户的偏好,没有 用户的许可您无法访问它因为那将是一个安全/隐私问题。

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

我用 Firefox 检查过这个,不知道 Chrome。

【讨论】:

这对我来说很有意义。我在私有模式下运行 Firefox 时会弹出窗口,因此它无法访问任何 OHAI GOOGLE cookie。 自他们编写 Chrome 以来,他们完全有可能用它做一些特别的事情。 他们可能不会为 chrome 显示它,因为无论如何 Google 都是默认搜索引擎 首页信息可以通过浏览器自己获取,就像过去IE提示首页一样。【参考方案2】:

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

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

请注意,“特殊参数”确实发生在“搜索框启动的搜索”场景中:有一个参数 sourceid 可能表示“搜索源”。

【讨论】:

一个锚#homepage虽然没有提交到服务器,但可能对javascript可用。另外,我假设主页也没有推荐人,是吗? 不错,所以你试图通过输入来查看用户是否经常访问一个网站。因为你知道,主页只在新窗口中打开,所以大多数时候,用户输入它地址,因为在大多数情况下它不在书签中。 嗯,区分书签/主页听起来很难(尤其是因为一个是另一个的特例)...【参考方案3】:

在我的 Firefox (v42) 中,“经常来这里?”即使我将 Google 设置为默认搜索提供程序,该框也会出现。

在 Safari 中,我在同一位置看到一个框,上面写着“浏览网络的更好方法:获取 Google Chrome”

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

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

【讨论】:

我猜它可能是纯粹基于 UA,但希望 Goog 不会每天推出数百万个误报营销横幅?我确实意识到这条评论的讽刺意味。 成为搜索提供者与成为您的默认主页完全不同。

以上是关于网站如何知道它们不是默认主页或搜索提供商?的主要内容,如果未能解决你的问题,请参考以下文章

Confluence 6 配置站点主页面

Confluence 6 配置站点主页面

MouseOver 展开效果

我如何知道我的网站是通过 HTTP 还是 HTTP/2 提供的?

Joomla Extension根据搜索的关键字提供个性化内容

SEO优化如何将自己的网站在搜索引擎中有个好的排名?