0

0

C# Chrome用户数据文件 C#如何读取Chrome浏览器本地存储的Cookie或历史文件

星降

星降

发布时间:2026-03-12 01:43:31

|

102人浏览过

|

来源于php中文网

原创

chrome本地cookie经dpapi加密,需用cryptunprotectdata解密encrypted_value(跳过前3字节版本头),转utf-16字符串;history明文可直查但须复制文件防锁。

c# chrome用户数据文件 c#如何读取chrome浏览器本地存储的cookie或历史文件

Chrome本地Cookie文件被加密,直接读取会乱码

Chrome把Cookie存在SQLite数据库里(路径通常是%LOCALAPPDATA%GoogleChromeUser DataDefaultCookies),但里面encrypted_value字段是AES加密的,用SELECT * FROM cookies查出来全是二进制垃圾——不是没读到,是解不开。

关键点在于:Windows上Chrome用的是DPAPI加密,密钥绑定当前用户登录会话;macOS用Keychain;Linux基本明文(但新版也逐步加了加密)。所以跨平台硬读行不通,Windows下必须调用系统API解密。

  • 别试图用System.Security.Cryptography自己实现AES解密——密钥不固定,也不在文件里
  • 别用第三方SQLite工具直接打开Cookies文件后导出——encrypted_value列没法人工还原
  • 如果Chrome正在运行,直接访问Cookies文件会失败(数据库被锁),得先复制一份再操作

C#调用Windows DPAPI解密encrypted_value

Windows平台唯一靠谱路径:用CryptUnprotectData API解密encrypted_value字段。注意它只接受byte[]输入,且必须和Chrome写入时用的同个用户上下文(即不能用服务账户或不同Windows用户运行你的程序)。

示例核心逻辑:

移动端无限滚动加载瀑布流
移动端无限滚动加载瀑布流

里面有2个文件夹。其中这个文件名是:finishing,是我项目还没有请求后台的数据的模拟写法。请求后台数据之后,瀑布流的js有一点点变化,放在文件名是:finished。变化在于需要穿参数到后台,和填充的内容都用后台的数据填充。看自己项目需求来。由于chrome模拟器是不允许读取本地文件json的,所以如果你要进行测试,在hbuilder打开项目就可以看到效果啦,或者是火狐浏览器。

下载
var blob = Marshal.AllocHGlobal(data.Length);
Marshal.Copy(data, 0, blob, data.Length);
try
{
    if (CryptUnprotectData(blob, data.Length, out var decrypted))
        return decrypted;
}
finally
{
    Marshal.FreeHGlobal(blob);
}
  • CryptUnprotectData返回true才代表解密成功;失败通常因为用户不匹配、Chrome正在运行导致密钥未加载、或数据已损坏
  • encrypted_value前3字节是0x01 0x00 0x00(版本头),解密前要跳过,否则解出来开头多三个乱码字节
  • 解密后得到的是UTF-16小端字节数组,需用Encoding.Unicode.GetString()转成字符串,不是UTF8

读取历史记录比Cookie简单,但要注意数据库锁

History文件(路径:%LOCALAPPDATA%GoogleChromeUser DataDefaultHistory)里的urls表基本是明文,没有加密字段。只要Chrome没在写入,就能直接查。

常用查询:

SELECT url, title, last_visit_time FROM urls ORDER BY last_visit_time DESC LIMIT 10
  • last_visit_time是Windows FILETIME格式(微秒级时间戳,从1601年1月1日起),需转换:DateTime.FromFileTimeUtc(value)
  • Chrome运行时访问History文件大概率抛SQLiteException: database is locked,务必先复制文件再打开连接
  • 别忽略sqlite3.dll依赖——.NET 6+可用Microsoft.Data.Sqlite,但得确保运行时能找到原生库(尤其发布为单文件时)

权限、路径、运行时机三者缺一不可

即使代码全对,也会跪在这三处:

  • 你的C#程序必须以目标用户身份运行(比如不能用管理员权限起进程去读另一个普通用户的User Data目录)
  • 路径拼接别硬编码:Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\Google\Chrome\User Data\Default",否则Win11/旧版路径可能不同
  • Chrome关闭后仍可能有残留进程(chrome.exe --type=crashpad之类),用tasklist /fi "imagename eq chrome.exe"确认清空再读,不然还是锁

真正麻烦的从来不是“怎么写代码”,而是让代码在正确的时间、正确的权限、正确的环境下,拿到那个没被锁住的、属于当前用户的文件。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1057

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

837

2023.11.06

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6500

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

368

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

445

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 11.1万人学习

C 教程
C 教程

共75课时 | 5.3万人学习

C++教程
C++教程

共115课时 | 21.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号