You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python获取Chrome/FireFox浏览器中保存的网站Cookie?

用Python提取Chrome/FireFox浏览器保存的Cookie

嘿,我来帮你搞定用Python脚本提取Chrome和FireFox里已保存的网站Cookie这件事!下面分浏览器给你一步步讲,都是亲测有效的方法~

一、提取Chrome浏览器的Cookie

Chrome把Cookie存在一个名为Cookies的SQLite数据库文件里,不过从Chrome 80版本开始,Cookie是加密存储的,所以得先解密才能拿到明文。

1. 找对数据库路径

不同系统的路径不一样:

  • Windows:C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data\Default\Cookies
  • macOS:~/Library/Application Support/Google/Chrome/Default/Cookies
  • Linux:~/.config/google-chrome/Default/Cookies

2. 安装必要依赖

  • Windows用户:安装pywin32,执行 pip install pywin32
  • macOS/Linux用户:安装cryptography,执行 pip install cryptography

3. 示例代码

import sqlite3
import os
from base64 import b64decode
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import win32crypt  # Windows用户保留,mac/Linux请注释该行

def get_chrome_cookies(domain):
    # 替换成你对应系统的Cookies路径
    cookie_path = os.path.expanduser('~') + "/Library/Application Support/Google/Chrome/Default/Cookies"  # macOS示例
    # Windows路径:cookie_path = f"C:\\Users\\{os.getlogin()}\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cookies"
    # Linux路径:cookie_path = os.path.expanduser('~') + "/.config/google-chrome/Default/Cookies"
    
    conn = sqlite3.connect(cookie_path)
    cursor = conn.cursor()
    
    # 查询目标域名的Cookie
    cursor.execute("SELECT name, value, encrypted_value FROM cookies WHERE host_key LIKE ?", ('%' + domain + '%',))
    
    cookies = {}
    for name, value, encrypted_value in cursor.fetchall():
        # 空value说明是加密存储的,需要解密
        if value == '':
            if os.name == 'nt':
                # Windows下用系统API解密
                decrypted_value = win32crypt.CryptUnprotectData(encrypted_value, None, None, None, 0)[1].decode('utf-8')
            else:
                # macOS/Linux下提取密钥并解密
                key_path = os.path.expanduser('~') + "/Library/Application Support/Google/Chrome/Local State"  # macOS
                # Linux密钥路径:key_path = os.path.expanduser('~') + "/.config/google-chrome/Local State"
                with open(key_path, 'r') as f:
                    local_state = f.read()
                    key = b64decode(local_state.split('"encrypted_key":"')[1].split('"')[0])[5:]  # 去除前缀标识
                
                iv = encrypted_value[3:15]
                ciphertext = encrypted_value[15:]
                cipher = Cipher(algorithms.AES(key), modes.GCM(iv), backend=default_backend())
                decryptor = cipher.decryptor()
                decrypted_value = decryptor.update(ciphertext) + decryptor.finalize()
                decrypted_value = decrypted_value.decode('utf-8')
            cookies[name] = decrypted_value
        else:
            cookies[name] = value
    conn.close()
    return cookies

# 调用示例:提取GitHub的Cookie
print(get_chrome_cookies('github.com'))

注意事项

  • 运行脚本前务必关闭Chrome浏览器,否则数据库会被锁定无法读取
  • 不同Chrome版本的加密逻辑可能微调,若解密失败,检查密钥提取代码是否需要调整
  • 仅能提取当前用户Chrome中的Cookie,涉及系统权限限制

二、提取FireFox浏览器的Cookie

FireFox的Cookie同样存在SQLite数据库里,从FireFox 58版本开始,Cookie也采用加密存储,需要找到对应的密钥文件解密。

1. 找到数据库和密钥路径

  • Cookie数据库路径:
    • Windows:C:\Users\<你的用户名>\AppData\Roaming\Mozilla\Firefox\Profiles\<你的配置文件夹>\cookies.sqlite
    • macOS:~/Library/Application Support/Firefox/Profiles/<你的配置文件夹>/cookies.sqlite
    • Linux:~/.mozilla/firefox/<你的配置文件夹>/cookies.sqlite
  • 密钥文件:和Cookie数据库同目录下的key4.db(旧版本为key3.db)

2. 安装必要依赖

安装cryptography,执行 pip install cryptography(sqlite3为Python内置库,无需额外安装)

3. 示例代码

import sqlite3
import os
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes

def get_firefox_cookies(domain):
    # 替换成你的FireFox配置文件夹路径
    profile_path = os.path.expanduser('~') + "/Library/Application Support/Firefox/Profiles/xxxxxx.default-release"  # macOS示例
    cookie_db = os.path.join(profile_path, 'cookies.sqlite')
    key_db = os.path.join(profile_path, 'key4.db')
    
    # 从key4.db提取解密密钥
    key_conn = sqlite3.connect(key_db)
    key_cursor = key_conn.cursor()
    key_cursor.execute("SELECT item1, item2 FROM moz_logins WHERE hostname = 'https://accounts.firefox.com'")
    row = key_cursor.fetchone()
    if not row:
        raise Exception("无法找到FireFox密钥,请检查配置文件夹是否正确")
    
    salt = b'.mozilla.org\x00'
    password = row[0]
    encrypted_key = row[1][1:]  # 去除开头的标识位
    
    # 生成AES解密密钥
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),
        length=32,
        salt=salt,
        iterations=1000,
        backend=default_backend()
    )
    key = kdf.derive(password)
    
    # 解密得到实际的Cookie密钥
    iv = encrypted_key[:16]
    ciphertext = encrypted_key[16:-16]
    cipher = Cipher(algorithms.AES(key), modes.GCM(iv), backend=default_backend())
    decryptor = cipher.decryptor()
    aes_key = decryptor.update(ciphertext) + decryptor.finalize()
    key_conn.close()
    
    # 读取并解密Cookie
    cookie_conn = sqlite3.connect(cookie_db)
    cookie_cursor = cookie_conn.cursor()
    cookie_cursor.execute("SELECT name, value, encrypted_value FROM moz_cookies WHERE host LIKE ?", ('%' + domain + '%',))
    
    cookies = {}
    for name, value, encrypted_value in cookie_cursor.fetchall():
        if value == '':
            iv = encrypted_value[:16]
            ciphertext = encrypted_value[16:-16]
            cipher = Cipher(algorithms.AES(aes_key), modes.GCM(iv), backend=default_backend())
            decryptor = cipher.decryptor()
            decrypted_value = decryptor.update(ciphertext) + decryptor.finalize()
            decrypted_value = decrypted_value.decode('utf-8')
            cookies[name] = decrypted_value
        else:
            cookies[name] = value
    cookie_conn.close()
    return cookies

# 调用示例:提取Stack Overflow的Cookie
print(get_firefox_cookies('stackoverflow.com'))

注意事项

  • 运行脚本前务必关闭FireFox浏览器,避免数据库锁定
  • 配置文件夹名称是随机生成的(比如abc123.default-release),需要自己在对应路径下找到
  • 旧版FireFox使用key3.db,解密逻辑与key4.db不同,需另行调整

最后提醒:以上方法仅可用于提取你本人浏览器中的Cookie,严禁用于获取他人Cookie,这会违反隐私法规和道德规范!

内容的提问来源于stack exchange,提问作者Srinivas Jayaram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:27:07