首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[1328]browser_cookie3从浏览器中提取Cookies

[1328]browser_cookie3从浏览器中提取Cookies

原创
作者头像
周小董
发布2025-08-22 16:35:04
发布2025-08-22 16:35:04
19700
代码可运行
举报
文章被收录于专栏:python前行者python前行者
运行总次数:0
代码可运行

github:https://github.com/borisbabic/browser_cookie3

Python的browser_cookie3库是一个用于从浏览器中提取Cookies的实用工具,它能够帮助开发者在编写网络爬虫或自动化脚本时,方便地获取和使用浏览器中已经保存的Cookies。以下是关于browser_cookie3库的详细介绍:

功能特点

  • 多浏览器支持:browser_cookie3支持从多种浏览器中提取Cookies,包括但不限于Chrome、Firefox、Opera、edge等。用户可以根据需要,指定从哪个浏览器中提取Cookies。
  • 简单易用:库的使用非常直观,通过简单的函数调用即可获取指定浏览器或指定域名下的Cookies。
  • 集成性强:提取出的Cookies可以无缝集成到各种HTTP请求库中,如requests,从而方便地进行网络请求。

使用方法

安装

代码语言:javascript
代码运行次数:0
运行
复制
pip install browser-cookie3

python2安装

代码语言:javascript
代码运行次数:0
运行
复制
pip install browser-cookie

提取Cookies

安装完成后,可以使用以下方式提取指定浏览器或指定域名下的Cookies:

代码语言:javascript
代码运行次数:0
运行
复制
import browser_cookie3  
  
# 提取Chrome浏览器的Cookies,针对特定域名  
cookiejar = browser_cookie3.chrome(domain_name='www.baidu.com')  
  
# 如果需要提取Firefox浏览器的Cookies,可以调用firefox()方法  
# cookiejar = browser_cookie3.firefox(domain_name='www.example.com')  
  
# 遍历Cookies  
for cookie in cookiejar:  
    print(cookie.name, cookie.value)

选一个最近浏览过的网站网址,比如百度,然后我们就能看到百度的cookie!

使用Cookies

提取出的Cookies可以作为一个参数传递给HTTP请求库,如requests,用于模拟登录或访问需要认证的网页:

代码语言:javascript
代码运行次数:0
运行
复制
import requests  
  
# 使用提取的Cookies进行网络请求  
response = requests.get('http://www.baidu.com/', cookies=cookiejar)  
print(response.text)

清除浏览器cookies

代码语言:javascript
代码运行次数:0
运行
复制
import time
import browser_cookie3

def clear_cookies():
    # 获取所有浏览器的cookies
    cookies = browser_cookie3.load()
    
    # 清除所有cookies
    for cookie in cookies:
        cookie.delete()
    
    print("Cookies cleared!")

def run_periodically(interval, function):
    while True:
        function()
        time.sleep(interval)

# 每隔60秒清除一次cookies
run_periodically(60, clear_cookies)

注意事项

  • 权限问题:在Windows和Mac系统上,可能需要以管理员身份运行程序才能成功读取浏览器的Cookies。在Linux系统上,可能需要sudo权限。 当然大部分只需要普通账户权限,这时候可能需要输入该账户的密码才能成功读取Cookies。
  • 浏览器版本和兼容性:不同版本的浏览器可能在存储Cookies的方式上存在差异,因此browser_cookie3库可能需要更新以支持新版本的浏览器。
  • 安全性:使用browser_cookie3库提取Cookies时,需要注意安全性问题,确保不会泄露敏感信息。

browser_cookie3的非常规用法

跨浏览器/设备同步 cookies

虽然 browser_cookie3 主要是设计为与单个浏览器交互的,但你可以通过编写脚本,将从一个浏览器中提取的 cookies 同步到其他浏览器或设备。这可以用于实现跨设备的无缝体验,比如自动登录到多个设备上的相同网站。

自动化测试中的会话管理

在自动化测试(如使用 Selenium)中,经常需要模拟用户登录。使用 browser_cookie3 可以从实际浏览器中获取已登录的会话 cookies,然后将其注入到测试环境中,以绕过登录过程,直接进行后续测试。

爬虫中绕过登录限制

对于需要登录才能访问的网页,爬虫通常会遇到障碍。通过 browser_cookie3 获取登录后的 cookies,并将其添加到爬虫请求中,可以绕过登录页面,直接访问需要登录才能查看的内容。这对于数据采集和数据挖掘任务非常有用。

调试和验证网站行为

在开发或测试网站时,了解网站如何处理 cookies 非常重要。使用 browser_cookie3 可以方便地查看和修改 cookies,以测试和验证网站在不同 cookie 状态下的行为。这有助于识别和解决与 cookies 相关的问题,如过期、跨域问题等。

GPT4Free中的代码示例

GPT4Free是一个非常好的chatgpt大模型应用软件,里面涉及到Cookies的应用部分:

代码语言:javascript
代码运行次数:0
运行
复制
def load_cookies_from_browsers(domain_name: str, raise_requirements_error: bool = True, single_browser: bool = False) -> dict:  
    """  
    从各种浏览器中加载指定域名的cookies。  
  
    参数:  
        domain_name (str): 要加载cookies的域名。  
        raise_requirements_error (bool): 如果缺少必要的库,是否抛出错误。默认为True。  
        single_browser (bool): 是否仅从第一个找到cookies的浏览器中读取并立即停止。默认为False。  
  
    返回:  
        dict: 包含cookie名称和值的字典。  
    """  
    # 检查是否已安装browser_cookie3库  
    if not hasattr(sys.modules[__name__], 'chrome'):  # 这里使用更通用的方式检查函数是否存在  
        if raise_requirements_error:  
            raise ImportError('请安装"browser_cookie3"包')  # 使用更标准的异常类型  
        return {}  
  
    cookies = {}  # 初始化一个空字典来存储cookies  
    # 定义一个包含多个浏览器cookie加载函数的列表  
    cookie_loaders = [_g4f, chrome, chromium, opera, opera_gx, brave, edge, vivaldi, firefox]  
  
    for cookie_fn in cookie_loaders:  
        try:  
            cookie_jar = cookie_fn(domain_name=domain_name)  # 尝试从指定浏览器加载cookies  
            if cookie_jar and debug.logging:  # 如果成功加载并且启用了日志记录  
                print(f"从{cookie_fn.__name__}读取了{domain_name}的cookies")  
            for cookie in cookie_jar:  # 遍历cookie罐中的所有cookie  
                if cookie.name not in cookies and (not cookie.expires or cookie.expires > time.time()):  
                    # 如果cookie尚未添加且未过期(或没有过期时间),则添加到字典中  
                    cookies[cookie.name] = cookie.value  
            if single_browser and cookie_jar:  
                break  # 如果设置了single_browser且找到了cookies,则停止循环  
        except BrowserCookieError:  # 假设这是browser_cookie3库定义的异常  
            pass  # 忽略这个异常,继续尝试其他浏览器  
        except Exception as e:  
            if debug.logging:  
                print(f"从{cookie_fn.__name__}读取{domain_name}的cookies时出错: {e}")  
  
    return cookies  # 返回包含所有找到的cookies的字典  

总结

browser_cookie3库是Python中一个非常实用的工具,它能够帮助开发者方便地获取浏览器中的Cookies,从而在网络爬虫或自动化脚本中模拟登录或访问需要认证的网页。然而,在使用时也需要注意权限、浏览器版本和安全性等问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能特点
  • 使用方法
    • 安装
    • 提取Cookies
    • 使用Cookies
    • 清除浏览器cookies
  • 注意事项
  • browser_cookie3的非常规用法
    • 跨浏览器/设备同步 cookies
    • 自动化测试中的会话管理
    • 爬虫中绕过登录限制
    • 调试和验证网站行为
  • GPT4Free中的代码示例
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档