+
97
-

回答

在 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...

如果需要更具体的需求(例如筛选特定域名或保存到文件),可以告诉我,我会进一步调整代码!

网友回复

我知道答案,我要回答