(如何)网站可以确定Safari私人浏览是否打开?


11

在Mavericks上的Safari中,有时我会从网站上看到一个对话框,指示某些网站功能将被阻止或降级,除非我关闭“私人浏览”模式。大多数用户可能希望他们选择是否使用私有浏览是私有的。我的印象是其他主要浏览器不会将“私人浏览”状态泄露给网站。

我已经注意到,在私有浏览模式下,Safari不会请求网站图标,因此从理论上讲,一个站点可以阻止网站图标的缓存,并且可以很好地猜测“私人浏览”已打开。

相比之下,在iOS上,Safari根本不要求提供图标。但是,即使您在“私人浏览”模式下,如果您访问“共享”面板,它也会请求任何“ apple-touch-icon”(如果随后随后将“ apple-touch-icon”用作“主屏幕”图标,则该图标将用作“主屏幕”图标)。网址)。

除收藏夹图标外,网站是否还有其他已知方法可以确定(或以合理的准确性进行猜测)您在桌面Safari中使用私有浏览模式?


您可以提供一个示例网站吗?
sayzlim 2014年

例如,video.pbs.org “发生了错误。为使本网站获得最佳体验,请检查“私人浏览”是否已关闭。”
假人2014年

该网站可能是由于其他一些因素(例如DNT = 1或某些跟踪器阻止)而退出的。在这种情况下,错误消息是令人误解的。但是我在其他网站上也得到了类似的东西。
假名2014年

1
我只是测试了DNT和阻止扩展,而这些似乎并不是一个因素。在关闭所有扩展名且未设置DNT的“私人浏览”模式下,我仍然出现错误对话框。但是,关闭了“私人浏览”功能并启用了DNT = 1和(阻止)扩展功能后,我没有收到该错误。
假人2014年

为什么不希望网站知道您处于隐私模式?我们的基于Web的应用程序将在该配置中完全不起作用,因为我们严重依赖于indexeddb,appcache,本地存储,Web worker和其他各种HTML5功能,这些功能在隐私模式下根本不可用。因此,您要提供的是一种避免我们告诉用户他们已经配置了浏览器,从而使我们的Web应用程序无法运行的方法。那有什么价值?(如果您不理解为什么这样做没有任何意义,请放轻松。您不会受到网站
已知信息的

Answers:


14

在iOS上,HTML5的本地存储在私有浏览模式下不可用,这意味着您可以通过尝试将某些内容保存到本地存储并使用以下JavaScript捕获异常来检测到它:

try { localStorage.test = 2; } catch (e) {
  alert('You are in Private Browsing mode');
}

https://stackoverflow.com/a/17741714/修改

在OS X上,并没有真正的规范方法,但这应该提供一些有用的信息:

如果您正在寻找实施指南,则应该尝试使用Stack Overflow


谢谢。我只对服务器端实现感兴趣,只要它能帮助我防御黑暗技术即可;)
假名

2
不过请注意误报-如果该来源的本地存储柜已满,提供的JavaScript代码段还将以非私有模式显示警报。
Mathias Bynens 2014年


4

Safari的Private Browsing与其他浏览器Private Browsing的工作方式不同。

例如,Chrome的隐身模式创建了一个单独的新会话,该会话将在浏览会话后删除所有数据(网站仍可以在该模式下从IP地址跟踪您的操作)。

尽管Safari禁止网站在本地创建/写入文件,但请放弃对Cookie所做的所有更改,包括您在此浏览会话期间在浏览器中的活动(该网站仍然可以在此模式下跟踪您的活动,但他们会在此会话中存储Cookie除外)被丢弃)。

那么,网站如何知道您是否已打开“私人浏览”?因为它检查是否可以在本地写入文件


Safari确实允许在私有浏览会话中使用cookie,对吗?在“私人浏览”期间,我能够登录到网站并执行我通常所做的一切,并且没有遇到任何限制,除非在极少数情况下,我会收到这样的对话框。
假人2014年

是的,修改了我的答案。我的意思是,关闭“私人浏览”后,此会话期间的Cookie不会保存。
sayzlim 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.