网站如何知道他们不是默认主页或search提供商?

据我所知,浏览器的默认主页/search提供程序没有公开的API暴露。 那么谷歌如何知道显示呢? 只有当Google不是我浏览器上的默认主页/默认search提供程序时才会出现。

谷歌在页面弹出:“更快地获得谷歌。将您的默认搜索引擎切换到Google。 Googe在页面弹出:“经常来这里?让Google成为您的主页。

我只能假设他们是从众多variables中推断出来的,比如引用者。 我无法成功地深入Google编译的JavaScript。 我甚至不确定是否检测到客户端或服务器端。

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

简单地说, 没有办法做到这一点,因为“默认search/主页”是一个用户的偏好,你没有权限访问没有用户的权限,因为这将是一个安全/隐私问题。

Google在每次用户访问时所做的都是显示带有closures图标的促销广告,以及如何将其设置为默认主页的指示button。 点击其中的任何一个,它会创build2个cookies,以便下一次它会检查您的cookies,使宣传片消失。 即使Google是您的首页,并清除了您的Cookie,那么仍然会有一个横幅将Google推广为您的主页。

我已经检查了这与Firefox,不知道铬。

我不知道Google做了什么,但是我会做什么:

  • 设置一些特殊的参数的主页url,并检查它 – http://www.example.com/#!homepage (防止漏报)
  • 检查Referer字段:
    • 如果不存在,假定用户已经手动input
    • 如果每次用户访问都非常相似(也许看起来像浏览会话的开始 – 通过在每个页面上的GA推断),假设用户总是从某处通过点击来到这里
  • 设置一个cookie,例如visitedHelpAboutHomePage当用户访问“是,显示我”页面(可能防止误报,但也可能产生误报)

请注意,“search框启动的search”场景中会出现“特殊参数”:有一个参数sourceid可能意味着“search源”。

在我的Firefox(v42)中,“经常来这里?” 即使当我将Google设置为默认search提供程序时,也会显示该框。

在Safari中,我在同一位置获得一个框,上面写着“更好的浏览网页的方式:Get Google Chrome”

在Opera和Chrome中,即使将我的默认search提供程序更改为Google以外的内容,我也没有任何框。

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