将Chrome导出的Cookies文件导入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
相关产品推荐
相关产品推荐

