Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

100
Visualizações
¿Cómo guardo la autenticación con titiritero?

Necesito hablar con un bot de Telegram, con mi aplicación web. Así que decidí hacer un web scrapping, no sé si es la mejor estrategia.

Cuando intento acceder a la web de Telegram, necesito autenticarme y luego continuar con el chat, pero si vuelvo a ejecutar el servidor, necesito autenticarme manualmente nuevamente. Traté de guardar las cookies, el tiempo de espera de espera es de 200 segundos, por lo que puedo iniciar sesión manualmente, pero las cookies llegaron como una matriz vacía.

 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' }); const page = await browser.newPage(); await page.goto("https://web.telegram.org/k/"); console.log('before waiting'); await page.waitForTimeout(200000) console.log('after waiting'); const cookies = await page.cookies(); await fs.writeFile('./coockie.json', JSON.stringify(cookies, null, 2)); // await browser.close(); })();
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Es bastante difícil autenticarse en Telegram usando titiritero.

Parte 1 Recopilación de datos

En primer lugar, debemos recopilar localStorage (tal vez incluso solo localStorage). Si también queremos recopilar todas las cookies, tenemos que eliminar page.cookies(); y usa page._client.send('Network.getAllCookies'); en cambio.

Ejecute este código para recopilar los datos necesarios

 import puppeteer from 'puppeteer'; import { setTimeout as wait } from 'timers/promises'; import fs from 'fs'; (async () => { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); await page.goto('https://web.telegram.org/z/'); await wait(60000); //We need this in order to have time for qr-code authentication const localStorageData = await page.evaluate(() => { let json = {}; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); json[key] = localStorage.getItem(key); } return json; }); await fs.writeFile('localStorageData.json', JSON.stringify(localStorageData, null, 2), function(error, data){ if(error) throw error; console.log(data); }); const cookies = await page._client.send('Network.getAllCookies'); await fs.writeFile('cookies.json', JSON.stringify(cookies, null, 2), function(error, data){ if(error) throw error; console.log(data); }); await browser.close() })();

Parte 2 Uso de los datos recopilados para la unificación

Antes de comenzar, debemos abrir nuestro archivo cookies.json. Si se ve así:

 { "cookies": [ { //some data }, { //some data } ] }

entonces debe corregirse manualmente a este aspecto

 [ { //some data }, { //some data } ]

ok, el archivo ha sido corregido, adelante

Ejecute este código para autenticarse

 import puppeteer from 'puppeteer'; import { setTimeout as wait } from 'timers/promises'; import fs from 'fs'; (async () => { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); await page.goto('https://web.telegram.org');// here without /z/, with z for some reason it doesn't work await fs.readFile('./cookies.json', async (err, data) => { if (err){ console.log(err); } else { let json = JSON.parse(data); await page.setCookie(...json); console.log(json); //your code using json object } }); await fs.readFile('./localStorageData.json', async (err, data) => { if (err){ console.log(err); } else { let json = JSON.parse(data); await page.evaluate(localStorageData => { localStorage.clear(); for (let key in localStorageData) { console.log(key); localStorage.setItem(key, localStorageData[key]); } }, json); console.log(json); } }); await wait(50000); await browser.close() })();

Eso es todo. Te recomiendo que uses dramaturgo en lugar de titiritero. Mucho más fácil de usar y más comprensible

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda