Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

175
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!