Estoy tratando de insertar TODAS las cookies del navegador en una variable y luego usarlas nuevamente más tarde.
Mi intento:
const puppeteer = require('puppeteer') const fs = require('fs').promises; (async () => { const browser = await puppeteer.launch({ headless: false, executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', const page = await browser.newPage(); await page.goto('https://www.google.com/');A continuación, está mi código para obtener cookies y funciona, pero ahora muestra un mensaje de error.
const client = await page.target().createCDPSession(); const all_browser_cookies = (await client.send('Network.getAllCookies')).cookies; const current_url_cookies = await page.cookies(); var third_party_cookies = all_browser_cookies.filter(cookie => cookie.domain !== current_url_cookies[0].domain);y debajo está la segunda página (que usará cookies)
(async () => { const browser2 = await puppeteer.launch({ }); const url = 'https://www.google.com/'; const page2 = await browser2.newPage(); try{ await page2.setCookie(...third_party_cookies); await page2.goto(url); }catch(e){ console.log(e); } await browser2.close() })(); })();hasta ayer funciona, pero hoy me esta apareciendo este mensaje de error:
Error: Protocol error (Network.setCookies): Invalid parameters Failed to deserialize params.cookies.expires - BINDINGS: double value expected at position 662891¿Alguien sabe qué es?
Ok, la solución está aquí: https://github.com/puppeteer/puppeteer/issues/7029
Está guardando una serie de cookies y page.setCookie solo funciona con una cookie. Tienes que iterar a través de tu matriz así:
for (let i = 0; i < third_party_cookies.length; i++) { await page2.setCookie(third_party_cookies[i]); }La sugerencia de @julio-codesal está bien, pero de acuerdo con la documentación del titiritero, está bien usar page.setCookie con una matriz, siempre que la desestructura, por ejemplo:
await page.setCookie(...arr)fuente: https://devdocs.io/puppeteer/index#pagesetcookiecookies
No estoy exactamente seguro de qué es, pero el error que tiene el OP es otra cosa.