我这样保存cookie:
auth_func()
# if successful auth
pickle.dump(driver.get_cookies(), open('cookies.pkl', 'wb'))
然后我尝试在相同的域上使用它们:
cookies = pickle.load(open('cookies.pkl', 'rb'))
for cookie in cookies:
driver.add_cookie(cookie)
但是我得到了错误:
文件“ test.py”,第115行,在 user_agent = auth()在auth中的文件“ test.py”,第50行 driver.add_cookie(cookie)文件“ C:\ Python37 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”, add_cookie中的第894行 self.execute(Command.ADD_COOKIE,{'cookie':cookie_dict})文件“ C:\ Python37 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”, 第321行,在执行中 self.error_handler.check_response(响应)文件“ C:\ Python37 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”, 第242行,在check_response中 引发exception_class(消息,屏幕,堆栈跟踪)selenium.common.exceptions.InvalidArgumentException:消息:无效 参数:无效的“过期”(会话信息:chrome = 78.0.3904.44)
Cookies结构:
>>> cookies = pickle.load(open('cookies.pkl', 'rb'))
>>> for c in cookies:
... c
...
{'domain': '.linkedin.com', 'expiry': 1633780372, 'httpOnly': False, 'name': '***********', 'path': '/', 'secure': False, 'value': '*************'}
...
答案 0 :(得分:0)
问题是由于某些原因,cookie的名称错误。这样解决:
cookies = driver.get_cookies()
for cookie in cookies:
if cookie.get('expiry', None) is not None:
cookie['expires'] = cookie.pop('expiry')
pickle.dump(cookies, open('cookies.pkl', 'wb'))