Pessoal, tenho um scrapper Puppeteer rodando no Google Cloud Functions para automatizar processo em um site. Esse scrapper roda a cerca de 1 ano e nessa semana começou a dar pau sem termos mexido nele. Nos logs de erros do GPC aparece:
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r818858 is guaranteed to work.
O que estou achando muito estranho é que no ambiente de desenvolvimento está rodando e só em produção que parou. O erro não acontece se eu mudar a URL para a requisição do scrapper em produção, mesmo sendo uma outra página do mesmo domínio. Mas, novamente, no teste continua funcionando.
Estava utilizando o Puppeteer 2.1.1 e já fiz o upgrade para 5.5.0
Aqui eu isolei parte do código para poder replicar o probema. Está rodando no Google Cloud Funcions sendo o trigger uma requisição https
const puppeteer = require('puppeteer');
const onRequest = async (req, res) => {
function run() {
return new Promise(async (resolve, reject) => {
try {
browser = await puppeteer.launch({
headless: true,
ignoreHTTPSErrors: true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
],
});
const context = await browser.createIncognitoBrowserContext();
page = await context.newPage();
const DARF_URL = "http://www31.receita.fazenda.gov.br/SicalcWeb/UF.asp?AP=P&Person=N&TipTributo=1&FormaPagto=1";
await page.goto(DARF_URL);
const element = await page.$("body > form > table > tbody > tr > td > div > strong > a > font > small > small > strong");
const text = await page.evaluate(element => element.textContent, element);
const response = {
status: 'ok',
text: text,
}
browser.close();
resolve(JSON.stringify(response))
} catch (error) {
const response = {
status: 'error',
error: error,
}
reject(response);
}
})
}
run().then((response) => {
res.send(response);
return
}).catch(error => {
res.send(error);
})
}
module.exports = {
onRequest
}