CoderCastrov logo
CoderCastrov
Парсер

Как извлечь и войти с помощью куки на сайт с помощью Puppeteer?

Как извлечь и войти с помощью куки на сайт с помощью Puppeteer?
просмотров
2 мин чтение
#Парсер
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. В файле сохраняются куки с сайта.

    Больше о парсинге здесь.

    Счастливого кодирования...