
在进行web自动化、数据抓取或特定测试场景时,获取浏览器中存储的cookie是一项常见需求。然而,由于浏览器种类繁多、cookie存储机制各异(如sqlite数据库、加密方式等),以及操作系统权限限制,直接获取这些信息可能面临挑战。本教程将介绍两种主要的python方法来有效应对这些挑战。
browser_cookie3 是一个强大的Python库,它能够读取并解密主流浏览器(如Chrome、Firefox、Edge、Brave等)本地存储的Cookie。该库的优势在于它抽象了不同浏览器之间存储机制的差异,并能处理常见的Cookie加密问题,从而简化了获取过程。
首先,你需要通过pip安装 browser_cookie3 库。由于其可能依赖于一些加密模块,建议一并安装。
pip install browser_cookie3
browser_cookie3 提供了针对不同浏览器的函数,例如 chrome()、firefox()、edge() 等。调用这些函数将返回一个 http.cookiejar.CookieJar 对象,其中包含了从对应浏览器中读取到的所有Cookie。
以下是一个示例代码,演示如何获取Chrome浏览器的Cookie并打印其名称、值和域名:
立即学习“Python免费学习笔记(深入)”;
import browser_cookie3
import http.cookiejar
def get_browser_cookies(browser_name="chrome"):
    """
    获取指定浏览器的本地Cookie。
    支持的浏览器名称: 'chrome', 'firefox', 'edge', 'brave', 'opera', 'chromium'
    """
    try:
        cj = None
        if browser_name == "chrome":
            cj = browser_cookie3.chrome()
        elif browser_name == "firefox":
            cj = browser_cookie3.firefox()
        elif browser_name == "edge":
            cj = browser_cookie3.edge()
        elif browser_name == "brave":
            cj = browser_cookie3.brave()
        elif browser_name == "opera":
            cj = browser_cookie3.opera()
        elif browser_name == "chromium":
            cj = browser_cookie3.chromium()
        else:
            print(f"不支持的浏览器类型: {browser_name}")
            return []
        if cj:
            cookies_list = []
            for cookie in cj:
                cookies_list.append({
                    'Name': cookie.name,
                    'Value': cookie.value,
                    'Domain': cookie.domain,
                    'Path': cookie.path,
                    'Expires': cookie.expires,
                    'Secure': cookie.secure,
                    'HttpOnly': cookie.has_nonstandard_attr('HttpOnly')
                })
            return cookies_list
        return []
    except Exception as e:
        print(f"获取 {browser_name} 浏览器Cookie时发生错误: {e}")
        print("请确保浏览器已关闭,或者检查权限。")
        return []
if __name__ == "__main__":
    print("--- 获取 Chrome 浏览器Cookie ---")
    chrome_cookies = get_browser_cookies("chrome")
    if chrome_cookies:
        for cookie in chrome_cookies[:5]: # 打印前5个Cookie作为示例
            print(f"  Name: {cookie['Name']}")
            print(f"  Value: {cookie['Value']}")
            print(f"  Domain: {cookie['Domain']}")
            print("-" * 20)
        print(f"共找到 {len(chrome_cookies)} 个Chrome Cookie。")
    else:
        print("未能获取Chrome Cookie。")
    print("\n--- 获取 Firefox 浏览器Cookie ---")
    firefox_cookies = get_browser_cookies("firefox")
    if firefox_cookies:
        for cookie in firefox_cookies[:5]: # 打印前5个Cookie作为示例
            print(f"  Name: {cookie['Name']}")
            print(f"  Value: {cookie['Value']}")
            print(f"  Domain: {cookie['Domain']}")
            print("-" * 20)
        print(f"共找到 {len(firefox_cookies)} 个Firefox Cookie。")
    else:
        print("未能获取Firefox Cookie。")注意事项:
与 browser_cookie3 不同,requests 库主要用于在Python脚本中进行HTTP请求,并在此过程中自动管理会话(Session)相关的Cookie。它不会直接读取浏览器本地的Cookie文件,而是处理在HTTP通信过程中服务器发送给客户端的Cookie,以及客户端发送给服务器的Cookie。这种方法更适用于模拟用户会话、进行API调用或进行Web自动化测试。
在 requests 库中,requests.Session() 对象允许你跨多个请求保持某些参数,其中就包括Cookie。当你使用一个 Session 对象发送请求时,它会自动处理Cookie的发送和接收,就像浏览器一样。
以下代码演示了如何使用 requests.Session() 来获取访问特定网站后服务器返回的Cookie:
import requests
import pprint
def get_session_cookies(url):
    """
    使用requests库获取特定URL的会话Cookie。
    """
    try:
        session = requests.Session()
        # 发送GET请求,session会自动存储服务器返回的Cookie
        response = session.get(url)
        # 获取session中当前所有的Cookie字典
        cookies_dict = session.cookies.get_dict()
        print(f"访问 {url} 后获取的会话Cookie:")
        pp = pprint.PrettyPrinter(indent=4)
        pp.pprint(cookies_dict)
        return cookies_dict
    except requests.exceptions.RequestException as e:
        print(f"请求 {url} 时发生错误: {e}")
        return {}
if __name__ == "__main__":
    # 示例:访问Google并获取其会话Cookie
    get_session_cookies("https://www.google.com")
    # 示例:访问一个需要登录的网站(这里只是模拟,实际需替换为可访问的URL)
    # get_session_cookies("https://www.example.com/login")注意事项:
browser_cookie3 库:
requests 库(会话模式):
在实际应用中,根据你的具体需求选择合适的方法至关重要。如果你需要利用用户已经登录的浏览器会话,browser_cookie3 是更合适的选择;如果你只是想在脚本中模拟一次干净的HTTP会话并管理其中的Cookie,那么 requests.Session() 则是标准且高效的方案。无论选择哪种方法,都请务必注意数据隐私和法律合规性,确保在合法合规的范围内使用这些技术。
以上就是使用Python获取主流浏览器Cookie的实用教程的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号