Chrome的无痕浏览实现初探

一. 功能定义

首先要从功能上明确无痕浏览的作用和目的。涉及的功能包括: 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



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69351.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PC - Chrome 浏览器如何开启无痕模式?

工具 / 原料 Chrome 浏览器 方法 / 步骤 这里是用谷歌浏览器操作演示的 。其他浏览器的方法,略有不同,需要具体问题具体分析。 浏览器起投成功之后,找到界面右上角的小三点。 在弹出的界面当中呢,找到第三个。新建无痕窗口。 瞬…

终于定了,小海豚再度牵手数据湖三剑客之一 Apache Hudi社区!

王昱翔,活动组织者 社区 Contributor 读完需要 10 分钟 🌟 随着大数据技术的快速发展,数据调度、数据湖的构建和数据存储变得越来越重要。数据处理的复杂性、分布式环境下的数据调度问题、PB级别数据入湖的实践、记录级索引的应用等&#xff…

PDF文档工具箱Stirling-PDF

什么是 Stirling-PDF ? Stirling-PDF 是一个本地托管的 Web 应用程序,允许您对 PDF 文件执行各种操作,例如拆分和添加图像。 软件的功能特点: 将 PDF 拆分为指定页码的多个文件,或将所有页面提取为单个文件;将多个 PDF 合并为一…

Qt常用的按钮控件编程(三)-- QRadioButton 按钮

文章目录 前言5、QRadioButton 按钮5.1 例程功能和程序执行效果5.1.1 例程功能5.1.2 程序执行效果 5.2 生成项目5.3 添加资源文件5.3.1 添加图片资源5.3.2 添加 qss 文件 5.4 完成代码编辑5.4.1 修改项目文件 _radiobutton.pro5.4.2 修改 main.cpp5.4.3 修改 widget.h5.4.4 修改…

第五届“泰迪杯”数据分析技能赛

为推广我国高校数据分析实践教学,培养学生数据分析的应用和创新能力,增加校企交流合作和信息共享,提升我国高校的教学质量和企业的竞争能力,“泰迪杯”数据分析技能赛(以下简称竞赛)于2022年9月开始报名。竞…

【2月比赛合集】55场可报名的数据挖掘奖金赛,任君挑选!

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注! 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考,以比赛官网为准 目录 Kaggle&…

【1月比赛合集】41场可报名的数据挖掘奖金赛,任君挑选!

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注! 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考,以比赛官网为准 目录 Kaggle&…

【3月比赛合集】45场可报名的数据挖掘奖金赛,任君挑选!

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注! 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考,以比赛官网为准 目录 Kaggle&…

第五届“泰迪杯”数据分析技能赛 经验代码分享

第五届“泰迪杯”数据分析技能赛 经验/代码分享 品牌:“泰迪杯”数据分析技能赛 组织单位:泰迪杯数据分析技能赛组织委员会、广东泰迪智能科技股份有限公司、广东省工业与应用数学学会、人民邮电出版社、北京泰迪云智信息技术研究院、网宿科技股份有限…

奥运会数据分析

本项目将会从以下角度来呈现奥运会历史: 1、🏆各国累计奖牌数; 2、⚽️各项运动产生金牌数 3、⛳️运动员层面 参赛人数趋势 女性参赛比例趋势 获得金牌最多的运动员 获得奖牌/金牌比例 各项目运动员平均体质数据 4、主要国家表现 &am…

数据分析案例-往届世界杯数据可视化

目录 1.引言 2.项目简介 2.1数据集介绍 2.2技术工具 3.数据可视化 3.1往届世界杯获奖国家TOP5 3.2往届世界杯比赛数据情况 3.3往届世界杯观众人数情况 3.4往届世界杯主办方情况 3.5往届世界杯冠军队情况 1.引言 足球是世界上非常受欢迎的运动之一,在全球…

还在开发短信验证码登录?试试(本机号码一键登录)

点击上方蓝字关注我们 技术总监面试,提问:Redis热点key解决方案 一、 关于秒验(一键登录)基本原理 秒验(一键登录)产品整合了三大运营商特有的数据网关认证能力,升级短信验证码体验,…

模拟验证码发送

目录 一.模拟验证码发送 1.输入手机号,点击发送随机生成6位数字码, 2.两分钟内有效,把验证码放入Redis里面,设置过期时间为120秒 3.判断验证码是否符合一致,从Redis获取验证码和输入的验证码进行比较 4…

打造抖音爆款脚本文案,让你分分钟钟上热门涨粉。

要想在抖音里面占据一席之地,运营者必须具备基本的短视频脚本创作能力。 有的人,为了一个创意能想上一天;而有的人,通过一些技巧,延伸出无数个好的想法。 那么优质的短视频脚本的创意又是从何而来的呢?猫哥告诉你短视频脚本文案要怎么写。 如果你本身是做文案工作的,…

1062 Talent and Virtue (25 分)排序(水题)

题目 About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about people’s talent and virtue. According to his theory, a man being outstanding in both talent and virtue must be a “sage(圣人)”…

PAT甲级 1011 World Cup Betting (20 分) 题解

\quad 这个题难在题意理解上面,说白了就是给你九个数,三个一组,找出一组中最大的数字并记录下这个数所属类别(W,T,L)。一行是一组。最后把每个组最大的数乘起来,乘0.65,再减去1,最后将所得结果乘2输出。即 …

day8 足球运动员分析

足球运动员分析 背景信息 当前,足球运动是最受欢迎的运动之一(也可以说没有之一)。 任务说明 我们的任务,就是在众多的足球运动员中,发现统计一些关于足球运动员的共性,或某些潜在的规律。 数据集描述…

The Most Common Habits from more than 200 English Papers written by Graduate Chinese Students

目录 定冠词/不定冠词的使用 a an the句子不要太长在段落开始直接陈述中心思想不要在段落开头直接使用时间状语从句将重要的主语放在最最开始以表示强调which/that所引导的定语从句的指代不明Respectively的使用有关in this paper/study数字‘Figure’ and ‘Table’‘such as’…

GPT系列的数据集之谜

文|Alan D. Thompson 源|OneFlow 译|杨婷、徐佳渝、贾川 半个月以来,ChatGPT这把火越烧越旺。国内很多大厂相继声称要做中文版ChatGPT,还公布了上线时间表,不少科技圈已功成名就的大佬也按捺不住&#xf…

Claude 2 解读 ChatGPT 4 的技术秘密:细节:参数数量、架构、基础设施、训练数据集、成本...

“ 解密 ChatGPT 4的模型架构、训练基础设施、推理基础设施、参数计数、训练数据集组成、令牌计数、层数、并行策略、多模态视觉适应、不同工程权衡背后的思维过程、独特的实施技术。” ‍‍‍‍ 01 — 最近偶然看到一份文档《GPT-4 Architecture, Infrastructure, Training Da…