На самом деле я могу использовать Twilio API в Puppeteer для программного получения кода SMS. Для этого вам нужно будет настроить специальную учетную запись Google для работы с номером Twilio в качестве мобильного телефона ИЛИ изменить текущий номер мобильного аккаунта Google для номера Twilio и использовать свой обычный номер в качестве дополнительного контакта в данных своей учетной записи Google.

аюсь автоматизировать определенные задачи для работы. У нас есть портал, который требует от вас войти через Google. Я создал экземпляр Puppeteer, который переходит на страницу авторизации Google, вводит мой адрес электронной почты и пароль, затем сохраняет куки, чтобы я мог перемещаться по порталу и манипулировать им.

Это отлично работает в моей локальной среде, но я развернул его в Heroku, и Google добавляет вызов для входа. После ввода пароля мне предоставляется страница «Проверьте, что это вы», на которой написано «Это устройство не распознано», и просит меня выполнить аутентификацию 2-FA.

Я знаю, что не могу выключить 2-FA, так что будет лучшим способом обойти это?

В качестве альтернативы, есть ли более простой способ войти на веб-сайт, защищенный Google auth, и сохранить куки сессии?

Вот мой код кукловода, любая помощь будет высоко ценится:

async function getCookies() {
    const browser = await puppeteer.launch({ 
      args: [
        '--no-sandbox', 
        '--disable-setuid-sandbox', 
        '--disable-gpu'
      ] 
    })
    const page = await browser.newPage()
    await page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36')
    await page.goto(process.env.URL)
    await page.waitForSelector('#identifierId')
    await page.type('#identifierId', process.env.EMAIL, { delay: 5 })
    await page.click('#identifierNext')
    await page.waitForSelector('#password input[type="password"]', { visible: true });
    await page.type('#password input[type="password"]', process.env.PASS, { delay: 5 })
    await page.click('#passwordNext')
    await page.waitFor(3000)
    const cookies = await page.cookies()
    await browser.close()
    return cookies
  }

Ответы на вопрос(4)

Ваш ответ на вопрос