В этой статье рассматривается тема сохранения и загрузки сеанса. Или лучше сохранить файлы cookie после входа в систему и перезагрузить файлы cookie после закрытия сеанса кукловода. Это означает, что статья содержит следующие шаги.
Скрипт альфа:
1. Откройте страницу и войдите на сайт
2. Сохраните файлы cookie в файл json и закройте его.
Скрипт бета:
3. Откройте новую страницу
4. Загрузите файлы cookie предыдущего сеанса.
5. Перенаправление на нужную страницу после входа в систему.
Чтобы выполнить этот шаг, следуйте следующему сценарию:
Код для альфа-скрипта:
const puppeteer = require(‘puppeteer’); let browser = await puppeteer.launch({ headless: this.head, args: [ ‘ — no-sandbox’, ‘ — disable-setuid-sandbox’, ‘ — use-fake-ui-for-media-stream’, ‘ — disable-audio-output’, ‘ — disable-features=IsolateOrigins’, ‘ — disable-site-isolation-trials’, ], }); let page = await browser.newPage(); await page.goto("https://www.ebay.com", {timeout: 500000}); // login procedure await page.type("input#username", '[email protected]'); await page.type("input#password", 'thisIsThePass0Wrd'); await page.click("div#loginButton"); await this.page.waitForTimeout(2000) // save cookise: const cookies = await page.cookies() console.log("The cookies: ", cookies); fs.writeFile( 'cookies.json', JSON.stringify(cookies, null, 2), function(err) { if (err) throw err; console.log('Write cookies complet'); } ); browser.close();
После выполнения этого скрипта вы должны найти файл cookie.json, содержащий сохраненные файлы cookie страницы после того, как был запущен вход на страницу.
Если вы хотите перезагрузить страницу с сеансом входа в систему, вы можете просто использовать следующее:
const puppeteer = require(‘puppeteer’); let browser = await puppeteer.launch({ headless: this.head, args: [ ‘ — no-sandbox’, ‘ — disable-setuid-sandbox’, ‘ — use-fake-ui-for-media-stream’, ‘ — disable-audio-output’, ‘ — disable-features=IsolateOrigins’, ‘ — disable-site-isolation-trials’, ], }); let page = await browser.newPage(); // load the cookies from the file const cookiesString = fs.readFileSync('./cookies.json', 'utf8'); const cookies = JSON.parse(cookiesString); console.info("Google - Setting cookies") await page.setCookie.apply(page, cookies); // load the page you want to go to after the login await page.goto("https://ebay.com/dashboard",{waitUntil: ['networkidle2']}); // here you can do what ever you want with the session the page will use the login sesseion ... // When you are done just close the browser again. await browser.close();
Вот и все. Я надеюсь, что это помогло. Удачного кодирования.