一. 功能定义

首先要从功能上明确无痕浏览的作用和目的。涉及的功能包括: Bookmark, History (Input, Browse, Download, Forms/Auto complete), SSL Certs,Cookie, Local Storage, WebSQL, Application Cache, HTTP Cache,Disk Cache,Web App/Plugin 以及所有这些可能会引起持久化及透露用户信息(如Gelocation, Notification)的功能项。

*还有剪贴板中从无痕浏览模式下复制出来的内容。

行为上主要区别正常模式与无痕模式的相互影响, 三个问题:

     1. 什么可以清除

2. 什么可以禁用

3. 什么可以相互共享

其中包括三个场景:

1. 从正常模式进无痕模式

     2. 从无痕模式退出到正常模式

     3. 再次进入无痕模式 (与之前无痕模式的关系)

以下是一份针对流行的浏览器进行的调查 (原文在这里, 时间大概在2011年)。 针对项目包括进入无痕模式前的信息是否会在无痕下使用(下表):

以及退出无痕模式后,是否可以在正常模式下使用。

在前一无痕模式下设置的项目,是否可以在下一次无痕模式下使用:

这是一份比较系统的梳理,很有指导意义。

BTW, 这篇文章也做了进入无痕浏览模式的主要浏览内容的占比, 还是很有代表性的。

二. Chrome的实现方式

Chrome的做法则完全将无痕浏览与正常浏览区分开来,没有共享这些资料。我大致过了一下Chrome的代码,其核是通过Profile的机制来完成的,无痕浏览下对应off the record profile (OffTheRecordProfileImpl in off_the_record_profile_impl.cc 以及OffTheRecordProfileIOData in off_the_record_profile_io_data.cc)。

每一个profile可以视为不同的帐号的session,彼此间从数据上隔离开来。很多类实现了ServiceIsCreatedWithProfile并且返回True, 用来表示在无痕模式下将共享profile。

比如在profile::GetSpecialStoragePolicy()指定一个存储策略,在其它需要的类(如StoragePartitionImpl)中必要的时机调用它进行处理。

下面是Google文档的描述:

 Profile should be a minimal reference, a sort of handle object that doesn't own the world.  There were separate versions of Profile for Normal, Incognito and Testing profiles.  In this world, the Profile was the center of all activity.

以下是Chrome无痕浏览模式涉及的Cookie和Storage的类图,其中CookieMonsterDOMStorageArea各有一个负责持久化的成员store_backing_ (directory_为空时,backing_不创建), 从OffTheRecordProfileIOData初始化开始,会指定不同的参数使得CookieMonsterDOMStorageArea没有持有一个可用的持久化对象,只能操作各自的map, 以此达到设计的目的。这样做的目的,可以有效区分内存操作和持久化的逻辑,方便上层的控制。

详细的代码还需要进一步学习,至少可以了解到关于无痕浏览这是一个需要系统加以组织实现的方式。

*参考:

Profile Architecture

http://www.cnblogs.com/kwliu/archive/2013/06/06/3116053.html

三. 安全问题

无痕模式面临的另一个问题是一些潜在的恶意软件的问题。比如下面这个链接就是作者展示进行无痕浏览时,可以从PageFile.sys和RAM中找到浏览记录:

http://www.magnetforensics.com/how-does-chromes-incognito-mode-affect-digital-forensics/

在上面提到的文章中,结尾处也提到了安全性的问题,可见这个问题的重要性。

基于以上对于无痕浏览的理解,下一步可以规划再深入理清问题,研究Firefox的实现方式,以方便评估改善计划。实现上未必需要以Chrome的profile方式,只要能够将用户数据有效的组织和分离就可以了。

转载请注明出处: http://blog.csdn.net/horkychen

Chrome的无痕浏览实现初探相关推荐

  1. Chrome浏览器无痕浏览真的无痕吗?

    当您启用无痕浏览后,设备的其他用户将不会看到您的历史记录. Chrome 不会保存您的浏览记录或您在表单中填写的信息.当您浏览时,Chrome 会记住相应的 Cookie 和网站数据,但当您退出无痕模 ...

  2. 说说谷歌Chrome浏览器无痕浏览器窗口

    当您启用无痕浏览后,设备的其他用户将不会看到您的历史记录. Chrome 不会保存您的浏览记录或您在表单中填写的信息.当您浏览时,Chrome 会记住相应的 Cookie 和网站数据,但当您退出无痕模 ...

  3. vue路由无痕浏览nodeJS环境搭建

    目录 一.vue路由&无痕浏览 1. SPA是什么 2. SPA实现思路和技术点 ①技术点 ②思路 3. 通过vue的路由可实现多视图的单页Web应用(基于html的SPA) 4. route ...

  4. Vue路由--无痕浏览 NodeJs环境搭建

                                                               文章目录 一.路由 二.SPA是什么 三.路由实现步骤 导入Vue.vue-rou ...

  5. vue路由无痕浏览nodeJS环境搭建ElementUI简介

    目录 一.vue路由&无痕浏览 1. SPA是什么 2. SPA实现思路和技术点 ①技术点 ②思路 3. 通过vue的路由可实现多视图的单页Web应用(基于html的SPA) 4. route ...

  6. vue路由、无痕浏览和nodeJS环境搭建、ElementUI简介

    目录 1.vue路由和无痕浏览 1.1.SPA是什么 1.2.SPA实现思路和技术特点 1.2.1.技术特点 1.2.2.思路 1.3.通过vue的路由可实现多视图的单页Web应用 1.4.route ...

  7. Vue路由无痕浏览 - nodeJs环境搭建

    目录 一.Vue路由 1.1 路由的使用步骤 1.2 无痕浏览 二.nodeJs环境搭建 2.1 Node.js是什么 2.2 配置NodeJS环境 2.3 下载github的Vue项目 一.Vue路 ...

  8. 浏览器无痕浏览还能查到记录吗,如何开启无痕模式

    一些朋友对浏览器的无痕浏览比较好奇,是不是用这个无痕模式浏览网站,就能瞒天过海了?使用浏览器的无痕浏览还能查到记录吗?今天针对这些问题我们来聊一聊,如何开启无痕模式,浏览器无痕模式是否真的" ...

  9. selenium打开chrome浏览器无痕模式

    from selenium import webdriver options = webdriver.ChromeOptions() #无痕模式 options.add_argument('--inc ...

最新文章

  1. R-error: 错误: nul character not allowed (line 1)
  2. MATLAB生成正态样本以及正态矩阵、从文件读入矩阵
  3. shiro的会话管理:介绍
  4. java list详解_Java 中 list 用法案例详解
  5. 12096 - The SetStack Computer
  6. 战队不显示名字了_年仅17岁的新人选手!峡谷之巅1200分!被16家战队哄抢
  7. pushpop指令的操作数必须是字操作数_MCS-51单片机指令系统(1)
  8. 数据结构与算法之 树
  9. 樽海鞘群算法原理详解
  10. google四件套之Dagger2。从入门到爱不释手,之:Dagger2进阶知识及在Android中使用
  11. linux中权限编号,linux体系常用指令-用户及权限管理.ppt
  12. 电脑怎么装linux系统
  13. 07-----给音视频文件添加字幕流
  14. [SPSS]因子分析和因子得分的SPSS实现——学生成绩因子构成和分科建议实例
  15. 卡巴斯基KAV/KIS 6.0.1.411正式版下载 附MP1版中文汉化+注册码
  16. macOS如何正确驱动集成显卡HDMI(包括视频和音频)
  17. 基于Matlab的开环Buck降压斩波电路Simulink仿真电路模型搭建
  18. xmuoj《C++与Python语法入门练习(By郭炜老师)》python参考代码
  19. 锂离子电池被动均衡深度理解
  20. (转载)libvirt 问题解决记录集

热门文章

  1. 2021威海高考成绩查询电话,2021威海高考成绩查询系统
  2. 黑白棋(Othello)
  3. 怎样做一个企业网站建设规划书?
  4. Javascript屏蔽右键的方法
  5. 80x86 汇编语言编程:判定数据序列的奇偶个数
  6. AWS-IAM学习笔记
  7. 温度变送器转换程序c语言,两线制智能温度变送器的设计
  8. E4G刷Linux,易视宝E4-G 全志A20 刷机 armlinux ubuntu server 教程
  9. nginx详细配置负载均衡全过程以及宕机情况处理
  10. 关于SaaS平台中应对多租户系统模式的权限设计