Actualmente estoy teniendo el problema (titiritero) en un proyecto que creo que las cookies no están activadas. Pero tampoco sé cómo activarlos si no están ya activados desde el principio.
Dado que todos los sitios web hoy en día tienen Captcha, podemos omitir la parte de inicio de sesión automático. Yo también soy nuevo, saqué una idea de aquí para esto.
En primer lugar, verifique si hay un archivo cookies.json guardado, si no, inicie sesión manualmente, haga clic en el botón Enviar usted mismo y resuelva el rompecabezas de captcha (en modo sin cabeza), la página debe redirigirse a la página de destino.
Una vez que se cargue la página de destino, guarde las cookies en un archivo Json para la próxima vez.
Ejemplo:
const puppeteer = require('puppeteer'); const fs = require('fs'); (async () => { const browser = await puppeteer.launch({ headless: false, //launch in non-headless mode so you can see graphics defaultViewport: null }); let [page] = await browser.pages(); await page.setRequestInterception(true); const getCookies = async (page) => { // Get page cookies const cookies = await page.cookies() // Save cookies to file fs.writeFile('./cookies.json', JSON.stringify(cookies, null, 4), (err) => { if (err) console.log(err); return }); } const setCookies = async (page) => { // Get cookies from file as a string let cookiesString = fs.readFileSync('./cookies.json', 'utf8'); // Parse string let cookies = JSON.parse(cookiesString) // Set page cookies await page.setCookie.apply(page, cookies); return } page.on('request', async (req) => { // If URL is already loaded in to system if (req.url() === 'https://example.com/LoggedUserCP') { console.log('logged in, get the cookies'); await getCookies(page); // if it's being in login page, try to set existed cookie } else if (req.url() === 'https://example.com/Login?next=LoggedUserCP') { await setCookies(page); console.log('set the saved cookies'); } // otherwise go to login page and login yourself req.continue(); }); await page.goto('https://example.com/Login?next=LoggedUserCP'); })();