Chrome浏览器的Profile数据内容简介

前文简介了Chrome存储的账密/Cookie数据:一段代码读取Chrome存储的所有账号密码和Cookie

本文再扩展介绍一下Chrome存储的其它一些隐私数据。
注:因为业务需要,简单调研了一些基本内容和存储路径,没有深入去研究,有啥问题可以一起探讨。

Profile介绍

对于Chromium内核的浏览器,在使用过程中,会产生很多用户数据,比如浏览器配置、比如浏览过程中生成的缓存文件等等,都会存储在电脑的某个目录里。
这个目录以及里面的文件,就被称之为该用户的Profile。

Profile目录在哪里

对于不同的用户(匿名用户也算一个用户),每个用户都会有自己的独立的缓存目录,该用户产生的数据,也是存储在这个独立的用户缓存目录中,那如何找到这个目录呢?
以Chrome为例,在浏览器地址栏输入 chrome://version/ 可以看到页面上有个Profile Path(中文叫:个人资料路径),这个就是你的Profile数据存储所在的个人目录了,从这个英文名称,大家也就知道Profile这个命名的由来了:
在这里插入图片描述

Profile生成规则

  • 操作系统不同账号登录,Profile也在不同的目录下,所以不同系统用户,肯定是各自独立的Profile;
  • 同一个Windows用户,首次启动Chrome,该用户的Profile是在%LocalAppData%\Google\Chrome\User Data\Default
    然后登录Google账号后,会自动使用该Defalut目录,作为该Google账号的Profile目录
  • 如果在Chrome里登录第2个Google账号,会为该Google账号,创建一个新的Profile,下图是在我电脑上登录第2个Google账号,生成的新的Profile目录:
    在这里插入图片描述
  • 如果在同一台电脑上登录了多个谷歌账号,每次启动Chrome时,都会出现profile的选择窗口,让你选择使用哪一份Profile数据:
    在这里插入图片描述

Profile数据项介绍

每个Profile里,存储的主要数据有如下这些:

  • 浏览器的设置信息
  • 浏览器书签,你记录在浏览器里的快捷链接
  • 账号密码,比如twitter网站的账号密码
  • cookie,每个网站都会生成的一些个人相关的数据
  • 浏览器的历史访问记录
  • 浏览器下载历史记录
  • 浏览器自动填充的表单数据
  • 浏览器扩展,含扩展的程序文件和扩展写入的数据(如LocalStorage、IndexDB)
  • 浏览器访问的网页代码写入的数据,如LocalStorage、IndexDB
  • 浏览器访问过的网页缓存,如图片、css、js等
  • 浏览器关闭时,还未关闭的标签页列表
    注:以上并不是全部,这些个人隐私信息,需要关注和避免泄露。

下面的介绍,以Chrome为准,并假设Profile目录为:
%LocalAppData%\Google\Chrome\User Data\Default\

浏览器设置

存储文件路径:%LocalAppData%\Google\Chrome\User Data\Default\Preferences
这是一个json格式的文件,浏览器设置修改后都会存储在这里,包括登录后的账号信息也会在这里。
所以这里肯定会有我们的隐私内容。
你可以先备份,再尝试修改一些浏览器设置,再对比前后2个文件,就知道设置对应的json项了,文件内容参考:
在这里插入图片描述
注:还有另一个文件:%LocalAppData%\Google\Chrome\User Data\Default\Secure Preferences 里面也存储了一些安全相关的设置,不过内容比较少,我也没有深入去研究内容。

浏览器书签

存储文件路径:%LocalAppData%\Google\Chrome\User Data\Default\Bookmarks
这也是一个json格式的文件,就是你在Chrome里收藏的那些网址,可以通过快捷键Ctrl+Shift+B进行显示和隐藏,
这个当然也是个人隐私了。
该文件内容大致如下:
在这里插入图片描述

账号密码

存储文件路径:%LocalAppData%\Google\Chrome\User Data\Default\Login Data
这是一个sqlite数据库文件,账号密码存储在logins这张表里,该表的密码字段进行了加密,其它都是明文。
具体内容和读取方式,可以参考前文:一段代码读取Chrome存储的所有账号密码和Cookie

Cookie

存储文件路径:%LocalAppData%\Google\Chrome\User Data\Default\Network\Cookies
这也是一个sqlite数据库文件,数据存储在cookies这张表里,cookie的值在encrypted_value里,进行了加密,其它都是明文。
具体内容和读取方式,可以参考前文:一段代码读取Chrome存储的所有账号密码和Cookie

历史访问记录

存储文件路径:%LocalAppData%\Google\Chrome\User Data\Default\History
这还是一个sqlite数据库文件,所有历史访问记录存储在urls这张表里:
在这里插入图片描述

下载历史记录

下载历史记录也在上面这个History文件里,是在downloads这张表里:
在这里插入图片描述

自动表单数据

存储文件路径:%LocalAppData%\Google\Chrome\User Data\Default\Web Data
这也是一个sqlite数据库文件,所有自动表单填充记录存储在autofill这张表里。
在这里插入图片描述
注:这个数据库里还会存储你在Chrome里使用过的信用卡之类的数据。

扩展

存储目录路径:

  • 扩展的代码文件存储在这个目录下:
    %LocalAppData%\Google\Chrome\User Data\Default\Extensions\
  • 不会进行同步的扩展数据,存储在这个目录下:
    %LocalAppData%\Google\Chrome\User Data\Default\Local Extension Settings\
    比如使用js代码chrome.storage.local.set写入LocalStorage,就会存储在这个目录下
  • 会通过Google账号进行同步的扩展数据,存储在这个目录下:
    %LocalAppData%\Google\Chrome\User Data\Default\Sync Extension Settings\
    目录下有n个子目录,每个子目录是一个扩展
    比如使用js代码chrome.storage.sync.set写入LocalStorage,就会存储在这个目录下

网页写入数据

存储目录路径:

  • 网页代码写入的LocalStorage数据存储在这个目录下:
    %LocalAppData%\Google\Chrome\User Data\Default\Local Storage\
  • 网页代码写入的IndexedDB数据存储在这个目录下:
    %LocalAppData%\Google\Chrome\User Data\Default\IndexedDB\
    该目录下有n个子目录,每个域名或扩展一个,也是leveldb文件
  • 注:这2份数据,都是leveldb文件,我没去深入研究和解读

网页缓存

存储目录路径:%LocalAppData%\Google\Chrome\User Data\Default\Cache\Cache_Data\
这是一个目录,所有缓存都经过特殊处理后写入这里,这些文件无法正常访问,不过网上有人写了工具:
chromecacheview
你可以搜索并下载一下,通过这个工具,可以查看这些缓存里的内容:
在这里插入图片描述

网页缓存的延伸知识:
这些缓存会在本地存多久:(访问时间 - 该文件的最后修改时间) ÷ 10
参考:https://youbl.blog.csdn.net/article/details/84879670

未关闭的标签页

存储目录路径:%LocalAppData%\Google\Chrome\User Data\Default\Sessions
里面有2个Session开头的文件,还有2个Tabs开头的文件.
都是ssns格式的文件,参考解析说明,我没去进一步解析:
https://github.com/JRBANCEL/Chromagnon/wiki/Reverse-Engineering-SSNS-Format

其它知识

数据通用性

所有基于Chromium内核的浏览器,Profile数据项都是通用的,
以Chrome和Edge为例,验证方案:
关闭Chrome和Edge,再把Chrome的任意一项数据,复制到Edge的对应Profile目录下,再启动Edge,会发现Edge自动拥有了Chrome的数据。
注:尽量基于同一内核版本测试,因为不同的内核版本,一些字段会有差异,可能会有问题。

Profile里的时间格式

上述数据项里,都会有一些长整型格式的时间数据,这些不是标准的时间戳,而是表示自1601年1月1日以来经过的纳秒数,
下面是使用Javascript,把Chrome时间,转换为标准时间戳的示例代码:

const chromeTs = 13276168466314428;
const dt = new Date(1601,1,1);
dt.setMilliseconds(dt.getMilliseconds() + chromeTs/1000);
console.log(dt.getTime());

SSLKEYLOGFILE说明

ietf出的一个草案,这里有介绍及输出文件的格式说明:
https://www.ietf.org/archive/id/draft-thomson-tls-keylogfile-00.html

简单说,就是标准的浏览器,如 Chrome或Firefox、Safari、Edge、Elctron、curl等等,支持使用一个环境变量,把ssl通讯过程中生成的密钥记录下来,可以用于ssl流量的解密。
在系统环境变量里,设置一个环境变量,例如key为SSLKEYLOGFILE 值为 d:\sslkey.txt
确定保存后,重启Chrome,你就会在D盘看到记录密钥的sslkey.txt文件了

这个文件,可以搭配Wireshark抓包工具自动解密https的请求响应数据,
步骤参考:https://my.f5.com/manage/s/article/K50557518

filter展示:tcp.port==443 and (http or http2)

游戏

URL地址: chrome://dino/
这是Chrome内置的一个小恐龙游戏,进入后,通过按空格,来控制小恐龙躲避障碍。
如果处于断网状态,启动Chrome会自动提示这个游戏。联网里,可以通过输入上面的url来进入。
据说该游戏的长度,设置为17000年,所以你再厉害,也是无法通关的。

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

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

相关文章

新160个crackme - 002-abexcm5

运行分析 猜测需要输入正确序列号 PE分析 32位,ASM程序,无壳 静态分析 ida shift F12 ,发现字符串定位主函数 分析主函数 lstrcat:拼接字符串 lstrcmpiA:比较字符串 动态调试 serial输入123456调试 发现序列号…

Codeforces Round 957 (Div. 3)(A~D题)

A. Only Pluses 思路: 优先增加最小的数&#xff0c;它们的乘积会是最优,假如只有两个数a和b&#xff0c;b>a&#xff0c;那么a 1&#xff0c;就增加一份b。如果b 1&#xff0c;只能增加1份a。因为 b > a&#xff0c;所以增加小的数是最优的。 代码: #include<bi…

Spring Boot集成groovy快速入门Demo

1.什么是groovy&#xff1f; Groovy 是构建在 JVM 上的一个轻量级却强大的动态语言&#xff0c;它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。 Groovy 就是用 Java 写的&#xff0c;Groovy 语法与 Java 语法类似&#xff0c;Groovy 代码能够与 Java 代码很好地结合&…

SunnyUI中UIAnalogMeter的使用

在 SunnyUI 控件库中&#xff0c;UIAnalogMeter 是一个模拟仪表盘控件&#xff0c;用于显示数值数据&#xff0c;如温度、压力、速度或其他需要模拟表盘形式显示的量。下面是如何在你的应用程序中使用 UIAnalogMeter 的步骤&#xff1a; 1. 引入 SunnyUI 控件库 确保你的项目…

STM32MP135裸机编程:定时器内核时钟频率计算方法

0 工具准备 STM32MP13xx参考手册 1 定时器内核时钟频率计算方法 1.1 定时器分组 STM32MP135的定时器按照时钟源不同分成了三组&#xff0c;如下&#xff1a; APB1: APB2: APB6&#xff1a; 1.2 定时器内核时钟频率计算方法 APB1DIV是APB1的分频系数&#xff0c;APB2DIV、…

python双下划线怎么打

连续按键盘上的“shift_”键两次即可&#xff0c;不同编辑器可能显示会不太一样。像图1中那样没连起来也是对的&#xff0c;没有语法错误。

基于python豆瓣电影爬虫数据可视化分析推荐系统(完整系统源码+数据库+详细文档+论文+详细部署教程)

文章目录 基于python豆瓣电影爬虫数据可视化分析推荐系统&#xff08;完整系统源码数据库详细文档论文详细部署教程&#xff09;一、 选题背景二、研究目的三、开发技术介绍1、Django框架2、LDA3、机器学习推荐算法4、大数据爬虫5、大数据Echarts可视化 四、系统设计思想五、部…

C++ | Leetcode C++题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {TreeNode* ancestor root;while (true) {if (p->val < ancestor->val && q->val < ancestor->val) {anc…

贪心算法案例

1.买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…

代码随想录算法训练营第31天|LeetCode 56. 合并区间、738.单调递增的数字、968.监控二叉树

1. LeetCode 56. 合并区间 题目链接&#xff1a;https://leetcode.cn/problems/merge-intervals/description/ 文章链接&#xff1a;https://programmercarl.com/0056.合并区间.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1wx4y157nD 思路&#xff1a; 本题关…

SpringBoot新手快速入门系列教程十一:自动生成API文档,Springboot3.x集成SpringDoc

本次项目我们用Maven来做&#xff0c;最近发现gradle其实很多项目的支持比较差&#xff0c;所以项目还是用Maven来新建项目。对比了市面上的几种API生成第三方库&#xff0c;只有springdoc 是能够按照文档就能部署出来的。 官网&#xff1a; OpenAPI 3 Library for spring-bo…

北京航空航天大学学报

《北京航空航天大学学报》是由中华人民共和国工业和信息化部主管&#xff0c;北京航空航天大学主办的中文核心期刊&#xff0c;中国精品科技期刊。1956年创刊&#xff0c;现为月刊&#xff0c;主要刊登有关航空航天及相关学科的优秀学术论文&#xff0c;面向国内外发行。 《北…

链接追踪系列-04.linux服务器docker安装elk

[rootVM-24-17-centos ~]# cat /proc/sys/vm/max_map_count 65530 [rootVM-24-17-centos ~]# sysctl -w vm.max_map_count262144 vm.max_map_count 262144 #先创建出相应目录&#xff1a;/opt/dockerV/es/…docker run -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d -p 92…

渗透测试入门指南:关键术语一览

引言 在信息安全领域&#xff0c;渗透测试&#xff08;Penetration Testing&#xff09;是一项重要的技能。对于初学者而言&#xff0c;理解一些常用的专业术语是迈向渗透测试的第一步。本文将为基础小白详细介绍渗透测试中的关键术语&#xff0c;帮助你快速上手。 1. POC、EX…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法&#xff0c;但通过CPU软解码的方式不仅延时高且十分占用资源&#xff0c;本文提供了一种从网络摄像头RTSP硬解码的拉流的方法&#xff0c;并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

2024-07-15 Unity插件 Odin Inspector3 —— Button Attributes

文章目录 1 说明2 Button 特性2.1 Button2.2 ButtonGroup2.3 EnumPaging2.4 EnumToggleButtons2.5 InlineButton2.6 ResponsiveButtonGroup 1 说明 ​ 本章介绍 Odin Inspector 插件中有关 Button 特性的使用方法。 2 Button 特性 2.1 Button 依据方法&#xff0c;在 Inspec…

QT控件篇三

一、微调框 微调框&#xff08;QSpinBox&#xff09;是一个常用的Qt控件&#xff0c;允许用户通过增加或减少值来输入数字。分为两种, 整型-QSpinBox 浮点 QDoubleSpinBoxQSpinBox&#xff08;微调框&#xff09;的 setSingleStep 函数可以用来设置每次调整的步长&#xff08;…

【人工智能】人工智能与传统美工结合,AI美工的详细解析。

AI美工是一个结合了人工智能技术与美工设计的岗位&#xff0c;它利用AI工具和技术来辅助或完成美工设计的各项工作。以下是对AI美工的详细解析&#xff1a; 一、定义与职责 AI美工是指能够熟练使用AI工具和技术&#xff0c;如Midjourney、StableDiffusion等AIGC&#xff08;人…

QT 没有与参数列表匹配的函数模板qMin”实例参数类型为:(<error-type>,quint16)

quint16 numberOfEntries qMin (ui–>readSize->currentText (). toUShort (), quint16 (10 - startAddress)) ;template<class T> constexpr const T &qMin(const T &a, const T &b)quint16 numberOfEntries qM联机搜索return QModbusDataUnit (tab…

Spring Boot与Apache Pulsar的集成

Spring Boot与Apache Pulsar的集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、引言 Apache Pulsar作为一款高性能、持久化的分布式消息系统&#xf…