是否可以使用Selenium登录使用双因素身份验证方法的站点(例如,银行的bankID )?
driver = webdriver.Firefox(executable_path=r"C:\Program Files (x86)\geckodriver.exe")
# driver.implicitly_wait(2)
driver.maximize_window()
driver.get("theBankID-page")
try:
personNumber = WebDriverWait(driver, 5).until(
EC.presence_of_element_located((By.NAME, "personNumber")))
personNumber.send_keys("personNumber")
personNumber.send_keys(Keys.RETURN)
except TimeoutException:
print("Failed to load BankID-page")上面的代码让你手动登录网站,例如使用你的手机作为你输入密码的第二个因素。
但是,如果我转到一个新站点,当我转到该站点上的一个新页面时,该站点请求使用BankID进行新的登录,是否可以在第一次将日志存储在会话中?因此,即使我转到站点上的新页面,它也是持久的。
发布于 2020-10-21 14:28:21
请查看他们的官方文档:https://www.selenium.dev/documentation/en/worst_practices/two_factor_authentication/
它建议您禁用它,或者如果您可以使用另一种应该工作的方法登录。
发布于 2020-11-15 11:23:02
我不知道什么是BankID 2因素身份验证。
如果你使用的是1password,你可以使用cli tool来获取代码。https://1password.community/discussion/102228/how-do-i-retrieve-an-otp-token-value-via-1password-cli
我相信其他密码管理器也提供类似的api来做。
您还可以使用https://github.com/pyauth/pyotp来获取动态口令,前提是您拥有共享的密钥。
你也许能够持久化登录的会话,但这完全取决于站点的实现。
例如,如果站点使用cookie。然后,您只需从登录的新会话获取并设置cookie即可。
https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/
https://stackoverflow.com/questions/64457646
复制相似问题