Как извлечь и войти с помощью куки на сайт с помощью Puppeteer?
Table Of Content
Puppeteer - это библиотека Node, которая предоставляет высокоуровневый API для управления Chrome или Chromium через протокол DevTools. По умолчанию Puppeteer работает в безголовом режиме, но может быть настроен для запуска полной (не безголовой) версии Chrome или Chromium. Узнайте больше о Puppeteer здесь. В этой статье мы напишем скрипт, который автоматически войдет в систему с помощью формы аутентификации Google и извлечет данные о куки с сайта. Проверьте Блог.
Ниже приведены варианты использования:
Давайте спарсим сайт, хорошо?
Создайте папку проекта и структурируйте ее следующим образом:
root------------ script.js----- cookies.json----- config.json
В файле cookie.json добавьте следующим образом:
{ }
В config.json добавьте адрес электронной почты и пароль следующим образом:
{
"mail":"ваша электронная почта","password":"ваш пароль"}
Теперь установим Puppeteer:
npm i puppeteer
Начнем писать скрипт в файле script.js. Скопируйте следующий код:
const puppeteer = require("puppeteer");
const fs = require("fs");const cookies = require("./cookies.json");const config = require("./config.json");(async () => { try { //* запускаем Puppeteer и создаем новую страницуlet browser = await puppeteer.launch({ headless: false }); let page = await browser.newPage(); //* проверяем наличие сохраненной сессииif (Object.keys(cookies).length) { //* устанавливаем сохраненные куки на страницеawait page.setCookie(...cookies); //* переходим на страницу Sentinalawait page.goto("https://sentinel.zerodha.com/", { waitUntil: "networkidle2", }); } else { await page.goto("https://sentinel.zerodha.com/login", { waitUntil: "networkidle0", }); //* переходим на страницу входаawait page.click('a[href="/api/accounts/google/login/"]', { delay: 30 }); //* вводим адрес электронной почтыawait page.waitForSelector('input[id="identifierId"]'); await page.type('input[id="identifierId"]', config.mail, { delay: 30, }); await page.click("#identifierNext"); //* вводим парольawait page.waitForSelector('input[type="password"]', { visible: true }); await page.type('input[type="password"]', config.password); await page.waitForSelector("#passwordNext", { visible: true }); await page.click("#passwordNext"); //* получаем текущую сессию браузераlet currentCookies = await page._client.send("Network.getAllCookies"); //* создаем файл cookie для сохранения сессии fs.writeFileSync("./cookies.json", JSON.stringify(currentCookies)); await browser.close(); } } catch (e) { console.log(e); }})();
Чтобы запустить скрипт:
node script.js
Проверьте файл cookie.json. В файле сохраняются куки с сайта.
Больше о парсинге здесь.
Счастливого кодирования...