Как пройти аутентификацию с помощью сеанса повара ie у кукловода - PullRequest
1 голос
/ 18 марта 2020

Я хочу сохранить мой сеансовый повар ie и аутентифицировать свою учетную запись, используя puppeteer.

Сейчас я использую свое имя пользователя и пароль непосредственно для аутентификации.

const puppeteer = require('puppeteer');
(async ()=>{
  const browser= await puppeteer.launch({
     "headless": false,
     "slowMo":20    
  });
  const page= await browser.newPage();
  await page.goto("https://www.linkedin.com/login");
  await page.type('[id=username]','username');
  await page.type('[id=password]','password');
  await page.keyboard.press('Enter',{delay:2000});
  await browser.close();
})();

1 Ответ

1 голос
/ 18 марта 2020

Ниже приведен пример входа в веб-приложение с помощью Puppeteer. Вам необходимо установить apify (модуль npm).

const Apify = require('apify');

Apify.main(async () => {
    const input = await Apify.getValue('INPUT');

    const browser = await Apify.launchPuppeteer();
    const page = await browser.newPage();
    await page.goto('https://facebook.com');

    // Login
    await page.type('#email', input.username);
    await page.type('#pass', input.password);
    await page.click('#loginbutton input');
    await page.waitForNavigation();

    // Get cookies
    const cookies = await page.cookies();

    // Use cookies in other tab or browser
    const page2 = await browser.newPage();
    await page2.setCookie(...cookies);
    await page2.goto('https://facebook.com'); // Opens page as logged user

    await browser.close();

    console.log('Done.');
});

Чтобы сохранить сессионные куки в кукловоде.

const cookiesObject = await page.cookies()
// Write cookies to temp file to be used in other profile pages
jsonfile.writeFile(cookiesFilePath, cookiesObject, { spaces: 2 },
 function(err) { 
   if (err) {
    console.log('The file could not be written.', err)
   }
   console.log('Session has been successfully saved')
})

Затем на следующем итерации перед использованием page.goto() вы можете вызвать page.setCookie() для загрузки файлов cookie из файла по одному.

const previousSession = fileExistSync(cookiesFilePath)
if (previousSession) {
  // If file exist load the cookies
  const cookiesArr = require(`.${cookiesFilePath}`)
  if (cookiesArr.length !== 0) {
    for (let cookie of cookiesArr) {
      await page.setCookie(cookie)
    }
    console.log('Session has been loaded in the browser!')
    return true
  }
}

Экземпляры CDPSession используются для необработанного разговора Chrome Протокол Devtools:

  • Методы протокола можно вызывать с помощью метода session.send.
  • На события протокола можно подписаться методом session.on.

Вот официальные ссылки на них:

https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#pagecookiesurls https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#pagesetcookiecookies

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...