在 Python 中读取本地 Windows 电脑上 Chrome 或 Edge 浏览器的 cookies 信息,需要理解这些浏览器如何存储 cookies。Chrome 和 Edge(基于 Chromium)将 cookies 存储在 SQLite 数据库文件中,路径通常位于用户目录下。要读取这些信息,可以使用 Python 的 sqlite3 模块结合一些文件操作。以下是一个实现步骤和示例代码:
步骤找到 cookies 文件路径:
Chrome: C:\Users\<用户名>\AppData\Local\Google\Chrome\User Data\Default\Network\CookiesEdge: C:\Users\<用户名>\AppData\Local\Microsoft\Edge\User Data\Default\Network\Cookies注意:路径中的 <用户名> 需要替换为实际的 Windows 用户名。此外,浏览器运行时会锁定该文件,因此需要关闭浏览器或复制文件到其他位置进行操作。处理加密:
从 Chrome 80 和 Edge 对应的版本开始,cookies 的值(encrypted_value 字段)是加密存储的。Windows 上使用 DPAPI(Data Protection API)加密,密钥存储在用户配置文件中。需要使用 Python 的 win32crypt 模块(通过 pywin32 库)来解密。读取 SQLite 数据库:
使用 sqlite3 连接到 Cookies 文件,查询 cookies 表。提取信息:
提取域名(host_key)、cookie 名称(name)、加密值(encrypted_value)等字段,并解密。示例代码以下是一个读取 Chrome cookies 的 Python 示例代码(Edge 类似,只需调整路径):
import os import sqlite3 import win32crypt from shutil import copyfile # 获取当前用户的用户名 username = os.getlogin() # Chrome cookies 文件路径 chrome_cookies_path = f"C:/Users/{username}/AppData/Local/Google/Chrome/User Data/Default/Network/Cookies" # 临时文件路径(避免浏览器锁定问题) temp_cookies_path = "temp_cookies.db" # 如果浏览器正在运行,复制 Cookies 文件到临时位置 copyfile(chrome_cookies_path, temp_cookies_path) try: # 连接 SQLite 数据库 conn = sqlite3.connect(temp_cookies_path) cursor = conn.cursor() # 查询 cookies 表 cursor.execute("SELECT host_key, name, encrypted_value FROM cookies") cookies = cursor.fetchall() # 遍历并解密 cookies for host_key, name, encrypted_value in cookies: try: # 解密 encrypted_value(Windows DPAPI) decrypted_value = win32crypt.CryptUnprotectData(encrypted_value, None, None, None, 0)[1].decode('utf-8') print(f"域名: {host_key}, Cookie名称: {name}, Cookie值: {decrypted_value}") except Exception as e: print(f"解密失败: {host_key}, {name}, 错误: {e}") # 关闭数据库连接 conn.close() except sqlite3.Error as e: print(f"数据库错误: {e}") finally: # 删除临时文件 if os.path.exists(temp_cookies_path): os.remove(temp_cookies_path)依赖安装
运行代码前需要安装以下 Python 库:
pip install pywin32注意事项
浏览器运行状态:
如果 Chrome 或 Edge 正在运行,Cookies 文件可能被锁定。代码中通过复制文件到临时位置规避此问题,但建议关闭浏览器以确保数据一致性。权限问题:
运行脚本可能需要管理员权限,尤其是访问用户目录时。字段说明:
host_key: 域名(如 .google.com)。name: Cookie 的名称(如 NID)。encrypted_value: 加密后的 Cookie 值。Edge 适配:
将 chrome_cookies_path 替换为 Edge 的路径即可:edge_cookies_path = f"C:/Users/{username}/AppData/Local/Microsoft/Edge/User Data/Default/Network/Cookies"
安全性:
此代码涉及敏感数据(如 cookies),请确保在安全环境下使用,避免泄露。输出示例运行后可能得到类似以下输出:
域名: .google.com, Cookie名称: NID, Cookie值: 12345abcde... 域名: .example.com, Cookie名称: session_id, Cookie值: xyz789...
如果需要更具体的需求(例如筛选特定域名或保存到文件),可以告诉我,我会进一步调整代码!
网友回复
腾讯混元模型广场里都是混元模型的垂直小模型,如何api调用?
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?