python - 使 Selenium Chromedriver 控制的浏览器像普通浏览器一样保存基于 yubikey 的身份验证会话
问题描述
我正在使用Python 和 Selenium通过自动化从网页中提取一些数据。该网页通常需要每天进行一次基于 yubikey 的身份验证。
但是,当.get()
使用该页面时Chrome Webdriver
,它每次都要求进行身份验证,我需要wait()
在我的脚本中添加以便在到达目标页面之前先手动进行身份验证。
我认为 webdriver 控制的浏览器不会像普通浏览器那样保存身份验证会话。
是否可以让 webdriver 控制的浏览器正常保存身份验证会话,这样我就不必每次都手动进行身份验证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/")
推荐阅读
- extjs - GWT-GXT 3.0 图表
- sql - Postgres 有没有办法生成跳过周末的每日报告?
- angular - 使用按钮操作扩展路由器链接
- sql - 如何重复行n次
- php - Laravel,WAMP,无法在不同的电脑上访问路由
- scala - Scala 类型约束检查参数值
- ios - Firebase 未在 iOS 应用中触发推送通知
- typescript - BlinkID 插件错误 Ionic 4 - Native:尝试调用 BlinkId.BarcodeRecognizer,但未安装 BlinkId 插件
- javascript - RxJS:创建和订阅可观察的 onClick
- java - 查找具有最小最大点的两个边界框之间的距离