【问题标题】:How to automate google 2-factor authentication using Puppeteer如何使用 Puppeteer 自动化谷歌 2 因素身份验证
【发布时间】:2018-08-26 23:42:17
【问题描述】:

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

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

有什么方法可以让整个工作流程完全自动化?

【问题讨论】:

    标签: node.js browser-automation puppeteer


    【解决方案1】:

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

    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()
    

    【讨论】:

      【解决方案2】:

      不能像在答案中那样共享工作流程。这里有一些替代资源可以帮助您达到预期的效果。

      您正在寻找谷歌开发者提供的Reporting API,它可以让您随意下载报告。这个 api 有一个 rate limit 集。您还需要阅读有关OAuth refresh token 的更多信息。

      否则,如果您想使用 Puppeteer 自动化整个工作流程。我建议将OTP/备份代码的生成自动化作为工作流程的一部分。这样,您就可以拥有无​​限的 OTP 代码。虽然感觉使用他们的 API 是最好的选择。

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

      【讨论】:

      • 我要的报告无法通过api获得
      • 那么请添加更多有关报告等的详细信息。没有更多数据,解决问题并不容易。
      • 所以我需要自动下载更改历史报告。但据我所知,它现在还不是 API 的一部分。知道如何实现吗?
      猜你喜欢
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2018-07-23
      • 2021-10-03
      • 2021-09-08
      相关资源
      最近更新 更多