Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
¿Cómo administrar la sesión de inicio de sesión a través de Chrome sin cabeza?

Quiero crear un raspador que:

  1. abre un navegador sin cabeza,
  2. va a una url ,
  3. inicia sesión (hay oauth de vapor),
  4. llena algunas entradas,
  5. y hace clic en 2 botones.

Mi problema es que cada nueva instancia de navegador sin cabeza borra mi sesión de inicio de sesión, y luego necesito iniciar sesión una y otra vez...

¿Cómo guardarlo a través de instancias? (usando titiritero con cromo sin cabeza)

¿O cómo puedo abrir una instancia sin cabeza de Chrome ya registrada? (si ya he iniciado sesión en mi ventana principal de Chrome)

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Hay una opción para guardar los datos del usuario usando la opción userDataDir al iniciar titiritero. Esto almacena la sesión y otras cosas relacionadas con el lanzamiento de Chrome.

 puppeteer.launch({ userDataDir: "./user_data" });

No entra en gran detalle, pero aquí hay un enlace a los documentos: https://pptr.dev/#?product=Puppeteer&version=v1.6.1&show=api-puppeteerlaunchoptions

over 4 years ago · Santiago Trujillo Denunciar

0

En puppeter tienes acceso a las cookies de sesión a través page.cookies() .

Entonces, una vez que inicie sesión, puede obtener cada cookie y guardarla en un archivo json:

 const fs = require(fs); const cookiesFilePath = 'cookies.json'; // Save Session Cookies const cookiesObject = await page.cookies() // Write cookies to temp file to be used in other profile pages fs.writeFile(cookiesFilePath, JSON.stringify(cookiesObject), function(err) { if (err) { console.log('The file could not be written.', err) } console.log('Session has been successfully saved') })

Luego, en su próxima iteración, justo antes de usar page.goto() , puede llamar a page.setCookie() para cargar las cookies del archivo una por una:

 const previousSession = fs.existsSync(cookiesFilePath) if (previousSession) { // If file exist load the cookies const cookiesString = fs.readFileSync(cookiesFilePath); const parsedCookies = JSON.parse(cookiesString); if (parsedCookies.length !== 0) { for (let cookie of parsedCookies) { await page.setCookie(cookie) } console.log('Session has been loaded in the browser') } }

Consulte los documentos:

  • https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagecookiesurls
  • https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagesetcookiecookies
over 4 years ago · Santiago Trujillo Denunciar

0

Para obtener una versión de la solución anterior que realmente funciona y no depende de jsonfile (en lugar de usar el fs más estándar), consulte esto:

Configuración:

 const fs = require('fs'); const cookiesPath = "cookies.txt";

Leyendo las cookies (ponga este código primero):

 // If the cookies file exists, read the cookies. const previousSession = fs.existsSync(cookiesPath) if (previousSession) { const content = fs.readFileSync(cookiesPath); const cookiesArr = JSON.parse(content); if (cookiesArr.length !== 0) { for (let cookie of cookiesArr) { await page.setCookie(cookie) } console.log('Session has been loaded in the browser') } }

Escribiendo las cookies:

 // Write Cookies const cookiesObject = await page.cookies() fs.writeFileSync(cookiesPath, JSON.stringify(cookiesObject)); console.log('Session has been saved to ' + cookiesPath);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda