Javascript 网站如何知道它们';您不是默认的主页或搜索提供商吗?

Javascript 网站如何知道它们';您不是默认的主页或搜索提供商吗?,javascript,browser,search-engine,webpage,Javascript,Browser,Search Engine,Webpage,据我所知,浏览器默认主页/搜索提供商没有公开API。那么谷歌如何知道如何显示这一点呢?只有当谷歌不是我浏览器上的默认主页/默认搜索提供商时,它才会出现 我只能假设他们是从很多变量推断出来的,比如推荐人。我无法成功地深入研究谷歌编译的JavaScript。我甚至不确定它是在客户端还是服务器端被检测到 我在Firefox44上,但我也在Chrome上看到了这些横幅 在我的Firefox(v42)中,即使我将Google设置为默认搜索提供商,也会出现“经常来这里”框 在Safari中,我在同一位置

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

我只能假设他们是从很多变量推断出来的,比如推荐人。我无法成功地深入研究谷歌编译的JavaScript。我甚至不确定它是在客户端还是服务器端被检测到

我在Firefox44上,但我也在Chrome上看到了这些横幅

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

在Safari中,我在同一位置看到一个框,上面写着“浏览网页的更好方式:使用谷歌浏览器”

在Opera和Chrome中,即使我将默认的搜索提供商更改为Google以外的其他服务,我也不会得到任何框


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

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

  • 使用一些特殊参数设置主页URL并选中-'(防止误报)
  • 检查
    Referer
    字段:
    • 若它不在那个里,那个么假设用户已经手动输入了它
    • 如果每次用户访问都非常相似(可能是在浏览会话开始时——通过每个页面上的GA推断),那么假设用户总是从某个地方点击来这里
  • 设置cookie,例如,当用户访问“yes,show me”(是,演示我)页面时,
    VisitedHelpAboutThomepage
    (可能防止误报,但也可能产生误报)

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

简单地说,JavaScript没有办法这样做,因为“默认搜索/主页”是用户的首选项,未经用户许可,您无法访问该首选项,因为这将是一个安全/隐私问题。

谷歌在每次用户访问时所做的是显示一个带有关闭图标的促销广告和一个go按钮,并说明如何将其设置为默认主页单击其中任何一个,它将创建两个cookie,以便下次检查您的cookie并使促销消失。即使当谷歌是你的主页,你清除你的cookies,然后横幅仍然存在,以促进谷歌作为你的主页


我在Firefox上查过了,不知道Chrome。

我猜这可能是一个纯粹基于UA的网站,但人们希望谷歌不会每天发布数百万条虚假的营销横幅?我确实意识到了这条评论中的讽刺。作为搜索提供商与作为默认主页完全不同。相关:即使在我将它们设置为默认页面后,我也会在Edge中获得这些内容。它根本不知道。锚
#主页
虽然没有提交到服务器,但可能可用于javascript。另外,我假设主页也没有参考资料,是吗?不错,所以你试图通过键入来查看用户是否经常访问网站。因为你知道,主页只在一个新窗口上打开,所以大多数时候,用户输入它的地址,因为在大多数情况下它不在书签中。嗯,区分书签/主页听起来很难(特别是因为一个是另一个的特例)…这对我来说很有意义。当我在私有模式下运行Firefox时,会出现弹出窗口,因此,它将无法访问任何
OHAI GOOGLE
cookies。完全有可能他们在编写chrome后对chrome做了一些特殊的操作。他们可能不会在chrome上显示它,因为谷歌是默认的搜索引擎。网页信息可以通过浏览器本身访问,就像以前IE推荐主页一样。