Problemas para iniciar sesión en Google con Chrome / Titiritero sin cabeza
Estoy tratando de automatizar ciertas tareas para el trabajo. Tenemos un portal que requiere que inicies sesión a través de Google. Creé una instancia de Puppeteer que navega a la página de autenticación de Google, escribe mi correo electrónico y contraseña, luego almacena las cookies para que pueda navegar y manipular el portal.
Esto funciona perfectamente en mi entorno local, pero lo he implementado en Heroku y Google agrega un desafío de inicio de sesión. Después de ingresar la contraseña, aparece la página "Verificar que eres tú" que dice "Este dispositivo no es reconocido" y me pide que complete la autenticación 2-FA.
Sé que no puedo desactivar 2-FA, entonces, ¿cuál sería la mejor manera de evitar esto?
Alternativamente, ¿hay una manera más fácil de iniciar sesión en un sitio web protegido por la autenticación de Google y almacenar las cookies de sesión?
Aquí está mi código de titiritero, cualquier ayuda sería muy apreciada:
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
}