Problemas ao fazer login no Google com o Chrome sem cabeça / marionetista
Estou tentando automatizar certas tarefas para o trabalho. Temos um portal que exige que você faça login pelo Google. Criei uma instância do Puppeteer que navega para a página de autenticação do Google, digita meu email e senha e armazena os cookies para que eu possa navegar e manipular o portal.
Isso funciona perfeitamente no meu ambiente local, mas eu o implantei no Heroku e o Google adiciona um desafio de login. Depois de digitar a senha, recebo a página 'Verifique se você', que diz 'Este dispositivo não é reconhecido', solicita que eu conclua a autenticação 2-FA.
Sei que não consigo desativar o 2-FA, então qual seria a melhor maneira de contornar isso?
Como alternativa, existe uma maneira mais fácil de fazer login em um site protegido pela autenticação do Google e armazenar os cookies da sessão?
Aqui está o meu código de marionetista, qualquer ajuda seria muito 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
}