[2] いくつかの [[Webブラウザー]]には、 [DFN[[[private browsing]]]]
等の呼称で[[履歴]]を残さない等の[[プライバシー]]に配慮された動作モードが用意されています。

* 通常モードとの挙動の違い

[FIG(short list)[ [37] 通常モードと [[private browsing]] の挙動の違う機能
- [CODE[:visited]]
- [CODE[SharedWorker]]
]FIG]

* 実装

[1] [CITE@ja[プライベート ブラウジングを行う(シークレット モード) - Chrome ヘルプ]] ([TIME[2014-11-04 07:36:45 +09:00]] 版) <https://support.google.com/chrome/answer/95464?hl=ja>

[3] [[Firefox]]


[51] 
[CITE[Chrome]] には[[シークレット モード]]と別に[DFN[ゲスト モード]]があります。

* セッション

[18] [[利用者]]からすると通常モードも private モードも同じ [[Webブラウザー]]アプリケーションの異なる動作モードですが、
技術的には2つの異なる[[利用者エージェント]]と考えるのが適当そうです。

[EG[
[19] [[クッキー]]の扱いでは、同じ[[ドメイン]]でも異なる[[セッション]]とみなされます。
]EG]

[EG[
[20] 同じ[[起源]]の[[閲覧文脈]]でも、異なる[[関連する類似起源閲覧文脈の単位]]に属します。
]EG]

;; [21] 両モードで同じ [[HTTP接続]]を共有するのは、実装上リスクがあるかもしれません。
[[HTTP/2]] では同一ホストには同じ[[接続]]を使うことが原則となっていますが、
通常モードと秘密モードでは別の[[接続]]を使うべきかもしれません。

* プロファイル

[4] いくつかの [[Webブラウザー]]には、複数の[[プロファイル]]を利用できるものがあります。
これは private browsing 同様に[[履歴]]等を通常モードと区別するものですが、
区別しつつ保存してセッションを再開できるのが違います。

[5] [[Chrome]] の [[private browsing]] は1つしか使えませんが、
[[プロファイル]]の切り替えの機能では複数同時に使い分けられます。

* 履歴等の機能

[6] [[Webブラウザー]]には履歴等の機能として次のようなものがあります。

;; [7] [[private browsing]] モードでの動作は、実装により異なります。

[FIG(short list)[
- 閲覧履歴
-- 履歴表示機能
-- [[URL]] の[[補完]]
-- [CODE(CSS)@en[[[:visited]]]]
-- [[ダウンロード]]履歴
-- [[窓]]の表示位置
-- [[代替スタイルシート]]選択
-- [[文字コード]]選択
- [[キャッシュ]]
-- [[bfcache]]
-- [[HTTPキャッシュ]]
-- [[AppCache]]
-- [[既知HSTSホスト]]
-- [[既知ピン付きホスト]]
-- [[代替サービス]]
-- [[HTTPS state]]
-- [[CORS preflight cache]]
-- [[DNSキャッシュ]]
-- [[prerender]]
-- [[証明書データベース]]キャッシュ
- [[Webブラウザー利用者の設定]]
- [[ストレージ]]
-- [[クッキーストア]]、[[Web Storage]] など[[ストレージ (Web)]] 参照
- [[フォーム]]、[[認証]]
-- [[authentication entry]]
-- [[proxy authentication entry]]
-- [[フォームデータ]]の自動補完
-- [[パスワードマネージャー]]からの自動補完
-- [[TLS-OBC]]
-- [[証明書データベース]]
- [[栞]]
-- [[栞]]/[[お気に入り]]
-- [[フィード]]
- [[拡張機能]]
-- [[プラグイン]]
-- [[Webブラウザー]]の拡張
-- [[内容取扱器]]
-- [[プロトコル取扱器]]
-- [[OpenSearch]] による検索機能登録
]FIG]

[15] private モードの履歴等は通常のモードには引き継がれないのが普通です (それが private
モードの趣旨でもあります)。

[14] 通常のモードでの履歴等が private モードに引き継がれるかどうかは場合によります。
例えば通常モードの[[クッキー]]は private モードに引き継がれませんが、
通常モードの補完候補が private モードでも補完候補として使われるかもしれません。

;; [16] 補完候補は[[利用者]]に示されるだけで[[著者]]からはわかりません。

;; [17] [[HTTPキャッシュ]]を両者で共有すると、 [[ETag]] によって通常モードと private
モードを[[著者]]が紐付けできてしまうかもしれません ([[スーパークッキー]]脆弱性)。
キャッシュするページの内容やキャッシュ取得と通常の取得との時間差による推測も可能かもしれません。

[27] 各種履歴類が [[private browsing]] モードでまったく保存されないのか、
通常モードとは別管理で (セッション終了まで) 一時保存されるのかは、
実装方針次第です。しかし[[著者]]に観測できてしまうのは好ましくなさそうで、
場合によっては[[Web互換]]でないかもしれません。

[EG[
[28] 例えば [[Web Storage]] が完全に無効になるのは不適切かもしれません。
セッション終了まで (もしかしたら通常モードより短時間でも良いかもしれませんが)
一時的にはデータが保持されるべきかもしれません。
]EG]

[EG[
[29] [CODE(CSS)@en[:visited]] は[[著者]]から観測できないので、
[[URL]] を表示したかどうかの履歴をまったく保存しなくても良いかもしれません。
]EG]

* 匿名化

[8] [[匿名化]]のためには次のような機能が必要かもしれません。

[FIG(short list)[
- [[串]]の利用
- [[Tor]] の利用
- [CODE(HTTP)@en[[[User-Agent:]]]] や [CODE(JS)@en[[[navigator]]]] の匿名化
- [[Geolocation API]] の値の匿名化
- [[装置]]情報の匿名化
-- [[Media Queries]]
-- [CODE(DOMi)@en[[[Screen]]]] など [[CSSOM View]]
- 利用可能な[[フォント]]の制限
- 利用可能な[[プラグイン]]や[[ブラウザー拡張]]の制限
]FIG]

;; [9] [[fingerprinting]] も参照。

[12] [[a plausible language]] の決定に当たっては、匿名化時の値として
[CODE[[[en-US]]]] が提案されています [SRC[>>13]]。

[REFS[
- [13] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-15 01:40:28 +09:00]] 版) <https://html.spec.whatwg.org/#a-plausible-language>
]REFS]

* 対象外

[34] [[プラットフォーム]]の提供する機能までには秘匿化・履歴削除の効果が及ばないかもしれません。
例えば、次のような機能に注意が必要です。
[FIG(list)[
- [[IME]] の[[履歴]]や[[辞書]]
- [[ファイル]]の[[アップロード]]や[[ダウンロード]]の履歴や結果
- [[画面写真]]
- [[ネットワーク]]の[[履歴]]
- [[アプリケーション]]の利用履歴、[[監査]]記録
]FIG]

* 実装

[10] [CITE@en-US[Safari bug saves Web page URLs in Private mode | MacIssues]]
([TIME[2015-04-05 11:50:16 +09:00]] 版)
<http://www.macissues.com/2015/03/17/safari-bug-saves-web-page-urls-in-private-mode/>

[FIG(quote)[
[FIGCAPTION[
[11] [CITE@en-US[When Private Browsing Isn't Private On iOS: HTML5 And AirPlay]]
([TIME[2015-04-05 11:51:17 +09:00]] 版)
<https://ma.ttias.be/when-private-browsing-isnt-private-on-ios-html5-and-airplay/>
]FIGCAPTION]

> HTML5 storage on those iOS devices have a shared state. Everything stored in HTML5 storage in Incognito Mode can be accessed in normal mode.

]FIG]

[22] [CITE@en-US[private-browsing - Mozilla | MDN]]
([TIME[2014-12-21 23:54:37 +09:00]] 版)
<https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/private-browsing>

[23] [CITE@en[Private Mode Browsing]]
([TIME[2014-10-15 09:49:02 +09:00]] 版)
<http://w3ctag.github.io/private-mode/>

[24] [CITE@ja[「Firefox 42」公開、トラッキング保護付きプライベートブラウジング機能を正式搭載 -INTERNET Watch]]
([[株式会社インプレス]] 著, [TIME[2015-11-06 14:33:53 +09:00]] 版)
<http://internet.watch.impress.co.jp/docs/news/20151104_728710.html>

[25] [CITE@en[Re: Proposal to add a browsing context named "_private"]]
([[Joel Weinberger]] 著, [TIME[2016-01-14 10:26:41 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webappsec/2016Jan/0079.html>

[26] [CITE@ja[Microsoft Edge、InPrivateモードで閲覧したWebサイトの情報を保存していた | スラド IT]]
([TIME[2016-01-31 22:45:53 +09:00]] 版)
<http://it.srad.jp/story/16/01/30/2044207/>

[FIG(quote)[
[FIGCAPTION[
[30] [CITE[Subscribe to Push Notifications | Web Fundamentals - Google Developers]]
( ([TIME[2016-04-19 23:17:25 +09:00]]))
<https://developers.google.com/web/fundamentals/getting-started/push-notifications/step-06?hl=en>
]FIGCAPTION]

> Chrome currently does not support the Push API in Incognito Mode.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[31] [CITE[ios - (How) Can a web site determine if Safari Private Browsing is turned on? - Ask Different]]
([TIME[2016-07-10 13:15:48 +09:00]])
<http://apple.stackexchange.com/questions/131587/how-can-a-web-site-determine-if-safari-private-browsing-is-turned-on>
]FIGCAPTION]

> I have noticed that while in private Browsing mode, Safari will not request favicons, so in theory a site could block caching of the favicon and make a pretty good guess that Private Browsing is on.
> In contrast, on iOS, Safari doesn't request favicons at all. But it will, even in Private Browsing mode, request any "apple-touch-icon" if you access the Sharing panel (the apple-touch-icon is used as the Home Screen icon if you subsequently "Add to Home Screen" for that URL).

]FIG]


[32] [CITE[web browser - Can web sites detect whether you are using private browsing mode? - Information Security Stack Exchange]]
([TIME[2016-07-10 13:19:31 +09:00]])
<http://security.stackexchange.com/questions/9037/can-web-sites-detect-whether-you-are-using-private-browsing-mode>

[33] [CITE@en-US[Contextual Identities on the Web | Tanvi Vyas]]
([TIME[2016-07-19 11:14:56 +09:00]])
<https://blog.mozilla.org/tanvi/2016/06/16/contextual-identities-on-the-web/>

[35] [CITE@en[expand 'clock drift' section in privacy/security]]
([[igrigorik]]著, [TIME[2016-10-01 09:57:36 +09:00]])
<https://github.com/w3c/hr-time/commit/4f49403c3c2ceb3d9e87a1efd0c3eba5b61c2587>

[FIG(quote)[
[FIGCAPTION[
[36] [CITE@ja[ウェブブラウザーのプライベートブラウジング機能、認知していた人は23.1% -INTERNET Watch]]
([[株式会社インプレス]]著, [TIME[2016-10-31 12:46:31 +09:00]])
<http://internet.watch.impress.co.jp/docs/news/741212.html>
]FIGCAPTION]

> Mozilla Japanは、オンラインプライバシーに関する意識調査の結果を発表した。調査対象は国内のインターネット利用者10~60代以上の1236名。調査期間は1月14日~17日。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[38] [CITE[Release Notes for Safari Technology Preview 28 | WebKit]]
([TIME[2017-05-04 02:14:13 +09:00]])
<https://webkit.org/blog/7516/release-notes-for-safari-technology-preview-28/>
]FIGCAPTION]

> Changed private browsing sessions to not look in keychain for client certificates (r215125)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[39] [CITE@en[Google Online Security Blog: Next Steps Toward More Connection Security]]
([TIME[2017-05-04 09:56:34 +09:00]])
<https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html>
]FIGCAPTION]

>  Beginning in October 2017, Chrome will show the “Not secure” warning in two additional situations: when users enter data on an HTTP page, and on all HTTP pages visited in Incognito mode.

]FIG]


[40] [CITE@en-us[BostonGlobe.com disables articles when your browser’s in private mode | Ars Technica]]
([TIME[2017-05-28 18:04:26 +09:00]])
<https://arstechnica.com/information-technology/2017/05/boston-globe-website-no-longer-lets-you-read-articles-in-private-mode/>

[41] [CITE@en[Detect private browsing mode (InPrivate Browsing or Incognito).]]
([TIME[2017-05-28 18:06:02 +09:00]])
<https://gist.github.com/cou929/7973956>

[42] [CITE@en[Detection of incognito / private browsing mode · Issue #82 · w3c/strategy]]
([TIME[2017-05-28 18:06:09 +09:00]])
<https://github.com/w3c/strategy/issues/82>

[43] [CITE@en[401439 - Support Push API in Incognito mode - chromium - Monorail]]
( ([TIME[2017-05-29 02:06:22 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=401439>

[44] [CITE@en-US[Firefox Private Browsing vs. Chrome Incognito: Which is Faster? - The Mozilla Blog]]
([TIME[2017-11-21 02:04:59 +09:00]])
<https://blog.mozilla.org/blog/2017/11/20/firefox-private-browsing-vs-chrome-incognito/>

[45] [CITE@en[1446404 - '''['''Shield''']''' Pref Flip Study: Trusted Recursive Resolver]]
([TIME[2018-03-22 02:02:20 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=1446404>

[FIG(quote)[
[FIGCAPTION[
[46] [CITE@ja[通知のオンとオフを切り替える - Android - Google Chrome ヘルプ]]
([TIME[2018-12-28 17:31:16 +09:00]])
<https://support.google.com/chrome/answer/3220216?co=GENIE.Platform%3DAndroid&hl=ja>
]FIGCAPTION]

> シークレット モードで閲覧している場合、通知は表示されません。

]FIG]


[47] [CITE@ja[シークレットモードだと見られないサイト、いったん対策されるも再度抜け道が見つかる【やじうまWatch】 - INTERNET Watch]]
([[株式会社インプレス]]著, [TIME[2019-08-17 09:43:32 +09:00]])
<https://internet.watch.impress.co.jp/docs/yajiuma/1201633.html>


[48] [CITE@ja[マイナポータルは、プライベートブラウズモード(シークレットモード等)で利用できますか。 | よくある質問|マイナポータル]], [TIME[2023-06-11T09:58:47.000Z]] <https://faq.myna.go.jp/faq/show/2789?site_domain=default>



>プライベートブラウズモード(シークレットモード等)では、マイナポータルの一部機能が動作しない可能性があります。通常モードに変更してご利用ください。




[49] なんで?

[50] [CITE@ja[シークレットモードでのデータ収集をめぐりユーザーがGoogleを訴えた裁判、双方が和解に合意 | スラド IT]]
([TIME[2024-01-02T12:26:36.000Z]])
<https://it.srad.jp/story/24/01/02/076224/>