问题描述
我正在使用 带有Selenium的Python 通过自动化从网页中提取一些数据。该网页通常每天需要基于yubikey的一次性身份验证。
但是,当.get()
使用Chrome Webdriver
对该页面进行验证时,每次都要求进行身份验证,我需要在脚本中添加wait()
,以便在到达目标之前先进行手动身份验证页面。
我认为由网络驱动程序控制的浏览器不会像普通浏览器那样保存身份验证会话。
是否可以使由网络驱动程序控制的浏览器正常保存身份验证会话,以使我不必每次get()
时都进行手动身份验证?
解决方法
此示例将使用cookie登录并保存cookie后将您登录到stackoverflow.com。
from selenium import webdriver
import time
import pickle
driver = webdriver.Firefox(executable_path=r'C:\\Path\\To\\geckodriver.exe')
driver.get('https://stackoverflow.com/')
time.sleep(60)
#########################
#LOGIN TO STACKOVERFLOW
########################
pickle.dump(driver.get_cookies(),open("C:/Path/to/cookie/cookies.pkl","wb"))
driver.close()
time.sleep(5)
driver = webdriver.Firefox(executable_path=r'C:\\Path\\To\\geckodriver.exe')
driver.get("https://stackoverflow.com/")
cookies = pickle.load(open("C:/Path/to/cookie/cookies.pkl","rb"))
for cookie in cookies:
driver.add_cookie(cookie)
driver.get("https://stackoverflow.com/")
保存cookie后,您就可以使用cookie。
from selenium import webdriver
import time
import pickle
driver = webdriver.Firefox(executable_path=r'C:\\Path\\To\\geckodriver.exe')
driver.get("https://stackoverflow.com/")
cookies = pickle.load(open("C:/Path/to/cookie/cookies.pkl","rb"))
for cookie in cookies:
driver.add_cookie(cookie)
driver.get("https://stackoverflow.com/")