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

将Chrome导出的Cookies文件导入Selenium ChromeDriver实现站点登录

把Chrome导出的cookies.txt导入Selenium ChromeDriver实现自动登录

我之前也踩过这个需求的坑,用Chrome的cookies.txt导出插件拿到活跃会话的cookie后,要导入Selenium跳过登录步骤,下面是我验证过的可行方案:

步骤1:先解析Netscape格式的cookies.txt

Chrome扩展导出的cookies.txt是Netscape标准格式,而Selenium的add_cookie()方法需要特定的键值对结构(比如name、value、domain等),所以得先写个解析函数把txt内容转成Selenium能识别的字典格式。

完整代码实现

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

def parse_cookies(cookie_file):
    cookies = []
    with open(cookie_file, 'r', encoding='utf-8') as f:
        for line in f:
            # 跳过注释行和空行
            if line.startswith('#') or not line.strip():
                continue
            # Netscape格式字段顺序:domain, flag, path, secure, expiry, name, value
            parts = line.strip().split('\t')
            if len(parts) >= 7:
                cookie_dict = {
                    'domain': parts[0],
                    'secure': parts[3] == 'TRUE',
                    'expiry': int(float(parts[4])) if parts[4] != '0' else None,
                    'name': parts[5],
                    'value': parts[6],
                    'path': parts[2]
                }
                # 会话cookie的expiry为0,要删除这个键避免Selenium报错
                if cookie_dict['expiry'] is None:
                    del cookie_dict['expiry']
                cookies.append(cookie_dict)
    return cookies

if __name__ == '__main__':
    option = webdriver.ChromeOptions()
    # 可按需添加浏览器配置,比如无头模式、禁用弹窗等
    # option.add_argument('--headless=new')
    driver = webdriver.Chrome(options=option)
    
    target_url = "https://your-target-site.com"  # 替换为需要登录的站点URL
    cookies_path = "path/to/your/cookies.txt"  # 替换为你的cookies文件路径
    
    # 关键操作:必须先访问目标站点,Selenium只能给当前访问的域名添加cookie
    driver.get(target_url)
    
    # 解析并逐个添加cookie
    cookies = parse_cookies(cookies_path)
    for cookie in cookies:
        try:
            driver.add_cookie(cookie)
        except Exception as e:
            print(f"添加cookie失败[{cookie['name']}]:{str(e)}")
    
    # 刷新页面后即可看到已登录状态
    driver.refresh()
    
    # 后续可继续你的自动化操作,比如等待核心元素加载
    try:
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "your-target-element-id"))
        )
        print("登录成功,页面加载完成")
    except TimeoutException:
        print("页面加载超时,可能登录失败")
    
    # 操作完成后记得关闭浏览器
    # driver.quit()

重点注意事项

  • 先访问目标站点:Selenium的add_cookie()只能给当前浏览器正在访问的域名添加cookie,所以一定要先打开目标网站的任意页面(哪怕是首页),否则会报错。
  • 处理会话cookie:有些cookie的expiry字段为0(代表会话型cookie),这时候要删除这个键,不然Selenium会因为类型不匹配抛出异常。
  • 路径与权限:确保你的cookies.txt文件路径正确,并且Python有读取该文件的权限。
  • 域名匹配:如果导出的cookie域名是.example.com,它会自动匹配example.com及其所有子域名,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:05:05