首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Puppeteer自动执行google双因素身份验证

如何使用Puppeteer自动执行google双因素身份验证
EN

Stack Overflow用户
提问于 2018-03-18 15:42:32
回答 2查看 2K关注 0票数 1

(我想自动从Adwords下载报告。此报告不是他们的API的一部分。所以我想用浏览器自动化来下载它。我正在使用Puppeteer来实现浏览器自动化。

但问题是我的帐户启用了双因素身份验证(由于安全策略,我无法禁用)。因此,每次我都必须输入OTP或备份代码。我尝试将备份代码添加到数组中,并在每次需要时从数组中提取一个。但是Google一次只提供10个代码,因此它不会完全自动化。

有没有办法让整个工作流程完全自动化?

EN

回答 2

Stack Overflow用户

发布于 2018-03-19 18:25:03

工作流程不能像答案中那样共享。这里有一些替代资源,它们将帮助您实现预期的结果。

你正在寻找谷歌开发人员提供的Reporting API,它可以让你随心所欲地下载报告。该接口设置了一个rate limit。您还需要阅读有关OAuth refresh token的更多信息。

否则,如果您希望使用Puppeteer自动执行整个工作流程。我建议将动态口令/备份代码的生成自动化作为工作流的一部分。这样你就可以有无限的OTP码可用了。尽管感觉使用他们的API将是最好的选择。

如果你有任何相关的代码,请将它们添加到你的问题中,我将很乐意相应地更新我的答案。

票数 0
EN

Stack Overflow用户

发布于 2020-03-06 07:45:38

不确定是否仍然需要它,但作为替代解决方案,您可以将python与selenium和pyotp(双因素身份验证)一起使用。在这里,我发布了示例login +2 factor auth。它也能够针对api进行修改。

代码语言:javascript
复制
import pyotp
from pyotp import TOTP
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('./chromedriver_v80.exe') 
driver.get("https://www.example.com/")

wait = WebDriverWait(driver, 20)

login_username = driver.find_element_by_name("username")
login_username.clear()
login_username.send_keys(username)

login_passoword = driver.find_element_by_name("password")
login_passoword.clear()
login_passoword.send_keys(password)

driver.find_element_by_name("login").click()

# wait for the 2FA field to display
authField = wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id='token']")))

# get the token from google authenticate
ga_secret = "4ythgotj3d784rjy6jw94o2xczpjgnta"   #your GA 32 character hash
totp = TOTP(ga_secret)
token = totp.now()
print(token)

# enter the token in the UI
authField.send_keys(token)
# click on the button to complete 2FA
driver.find_element_by_xpath("//*[@id='token_login']").click()

driver.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49345594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档