网站如何知道他们不是默认主页或search提供商?
据我所知,浏览器的默认主页/search提供程序没有公开的API暴露。 那么谷歌如何知道显示呢? 只有当Google不是我浏览器上的默认主页/默认search提供程序时才会出现。
我只能假设他们是从众多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对象进行浏览器检测。