(方法)WebサイトでSafariプライベートブラウジングが有効になっているかどうかを確認できますか?


11

MavericksのSafariで、プライベートブラウジングモードをオフにしないと、一部のサイト機能がブロックまたは低下することを示すダイアログがWebサイトからときどき表示されます。ほとんどのユーザーはおそらく、プライベートブラウジングをプライベートにするかどうかの選択を期待しています。私の印象では、他の主要なブラウザはプライベートブラウジングの状態をWebサイトにリークしません。

プライベートブラウジングモードではSafariがファビコンを要求しないので、理論的にはサイトがファビコンのキャッシュをブロックし、プライベートブラウジングがオンになっているとかなり推測できることに気づきました。

対照的に、iOSでは、Safariはファビコンをまったく要求しません。ただし、プライベートブラウジングモードでも、[共有]パネルにアクセスすると、「apple-touch-icon」を要求します(そのため、「ホーム画面に追加」すると、apple-touch-iconがホーム画面アイコンとして使用されます。 URL)。

ファビコン以外に、デスクトップサファリでプライベートブラウジングモードを使用しているとWebサイトが判断できる(または妥当な精度で推測できる)既知の方法は他にありますか?


ウェブサイトの例を提供できますか?
sayzlim 2014年

例:video.pbs.org「エラーが発生しました。このWebサイトを快適に利用するには、プライベートブラウジングがオフになっているかどうかを確認してください。」
偽物2014年

Webサイトが、DNT = 1や一部のトラッカーのブロックなど、他の何らかの要因を妨害している可能性があります。その場合、エラーメッセージは誤解を招く可能性があります。しかし、私は他のサイトでも同じようなものを得ています。
偽物2014年

1
DNTとブロッキング拡張機能をテストしたところ、それらは要因ではないようです。すべての拡張機能がオフでDNTが設定されていないプライベートブラウジングモードでも、エラーダイアログが表示されます。しかし、プライベートブラウジングをオフにし、DNT = 1と(ブロック)拡張をオンにすると、エラーは発生しません。
偽物2014年

プライバシーモードであることをサイトに知られたくないのはなぜですか。indexeddb、appcache、ローカルストレージ、ウェブワーカー、およびプライバシーモードでは利用できないその他のさまざまなHTML5機能に大きく依存しているため、この構成ではWebベースのアプリケーションは完全に機能しなくなります。ですから、あなたが求めているのは、私たちがユーザーにブラウザを設定してWebアプリケーションが機能しないことをユーザーに知らせないようにする方法です。その価値は何ですか?(これが意味をなさない理由がわからない場合は、リラックスしてください。あなたはサイトの
既知の情報に

回答:


14

iOSでは、HTML5のローカルストレージはプライベートブラウジングモードでは使用できません。つまり、何かをローカルストレージに保存して、次のJavaScriptで例外をキャッチすることで、それを検出できます。

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

/programming//a/17741714/から変更

OS Xでは、実際には標準的な方法はありませんが、これはいくつかの有用な情報を提供するはずです。

実装ガイダンスを探している場合は、代わりにスタックオーバーフローを試してください。


ありがとう。私はサーバーサイドの実装に興味があります。それは、ダークアートに対する防御に役立ちます;)
pseudon

2
ただし、誤検知に注意してください。提供されたJavaScriptスニペットは、そのオリジンのローカルストレージロッカーがいっぱいの場合、非プライベートモードでもアラートを表示します。
Mathias Bynens、2014年


4

Safariのプライベートブラウジングは、他のブラウザのプライベートブラウジングと同じようには機能しません。

たとえば、Chromeのシークレットモードでは、別の新しいセッションが作成され、ブラウジングセッション後にすべてのデータが削除されます(Webサイトは、そのモードのIPアドレスからのアクションを引き続き追跡できます)。

Safariは、Webサイトでのファイルの作成/書き込みをローカルで禁止しますが、このブラウジングセッション中のブラウザーでのアクティビティを含む、Cookieに加えられたすべての変更を破棄します(このセッションでCookieを保存することを除いて、Webサイトはこのモードでのアクティビティを追跡できます)破棄されます)。

では、プライベートブラウジングをオンにしたかどうかをWebサイトはどのようにして知るのでしょうか。ローカルにファイルを書き込めるかどうかをチェックするからです


Safariでは、プライベートブラウジングセッションでのCookieを許可していますか?プライベートブラウジング中にWebサイトにログインして、通常行うすべてのことを行うことができ、このようなダイアログが表示されるまれなケースを除いて、制限はありません。
偽物2014年

ええ、私の答えを少し修正しました。つまり、プライベートブラウジングをオフにすると、このセッション中のCookieは保存されません。
sayzlim 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.