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

使用Selenium add_cookie跳过登录遇报错及CSV读取问题求助

问题:Selenium add_cookie跳过登录失败+CSV文件编码读取错误

初始问题

尝试通过Selenium WebDriver的add_cookie方法,利用本地cookies.csv文件(包含Name、Value、Domain三列)跳过目标网站登录,运行代码后既无法绕过登录,还抛出以下异常:

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: missing 'cookie'

使用的代码如下:

from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd

options = Options()
options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"

link = "https://**********"

browser = webdriver.Chrome(options=options, 
service=Service(ChromeDriverManager().install()))
browser.implicitly_wait(5)
browser.get(link)


def get_cookies_values(file):
    dict_reader = pd.read_csv(file, encoding='unicode_escape')
    list_of_dicts = list(dict_reader)
    return list_of_dicts


cookies = get_cookies_values('cookies.csv')

for i in cookies:
    browser.add_cookie(i)

time.sleep(5)
browser.quit()

更新后的问题

将编码从unicode_escape改为utf-8(或utf-8-sig)后,出现编码解码错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 2391: invalid start byte


解决方案

一、解决CSV文件编码读取错误

  1. 确认文件实际编码:用Notepad++打开cookies.csv,通过「编码」菜单查看当前文件的编码(比如GBK、Windows-1252、GB2312等)。
  2. 匹配编码读取:在pd.read_csv中指定正确的编码,例如:
    • 如果是GBK编码:pd.read_csv(file, encoding='gbk')
    • 如果是Windows-1252编码:pd.read_csv(file, encoding='cp1252')
  3. 若暂时无法确定编码,可临时用errors='replace'忽略错误(不推荐长期使用,可能导致Cookie值损坏):
    pd.read_csv(file, encoding='utf-8', errors='replace')
    

二、正确向Selenium Driver提供Cookie

导致missing 'cookie'异常和登录失败的核心原因是Cookie字典的键名不匹配Selenium要求,以及缺少必要的Cookie属性,修正步骤如下:

  1. 统一Cookie键名格式:Selenium的add_cookie要求键名为小写(name、value、domain),而你的CSV列名是大写(Name、Value、Domain),需要转换。
  2. 补充必要的Cookie属性:部分网站的Cookie需要path属性(默认设为'/'即可),否则无法生效。
  3. 添加Cookie后刷新页面:添加完成后刷新页面,才能让Cookie生效。

修正后的完整代码示例:

from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd

options = Options()
options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"

link = "https://**********"

browser = webdriver.Chrome(options=options, 
service=Service(ChromeDriverManager().install()))
browser.implicitly_wait(5)
browser.get(link)


def get_cookies_values(file):
    # 替换为你确认的CSV实际编码
    df = pd.read_csv(file, encoding='gbk')
    # 重命名列名以匹配Selenium要求的小写键名
    df = df.rename(columns={'Name': 'name', 'Value': 'value', 'Domain': 'domain'})
    # 转换为字典列表
    return df.to_dict('records')


cookies = get_cookies_values('cookies.csv')

for cookie in cookies:
    # 补充path属性,确保Cookie生效
    if 'path' not in cookie:
        cookie['path'] = '/'
    browser.add_cookie(cookie)

# 刷新页面使Cookie生效
browser.refresh()

time.sleep(5)
browser.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:24:33