본문 바로가기
javascript

Puppeteer는 쿠키를 저장하고 쿠키를 로드/읽습니다. #Puppetier로 페이지 로그인을 저장하는 방법.

by it-square 2022. 1. 19.
반응형

이 글은 세션 저장 및 로드 주제를 다루고 있습니다. 또는 로그인 후 쿠키를 저장하고 Puppeteer 세션이 종료된 후 쿠키를 다시 로드하는 것이 좋습니다. 이는 해당 문서에 다음 단계가 포함되어 있음을 의미합니다.

스크립트 알파:

  1. 페이지를 열고 웹 사이트에 로그인합니다.
  2. 쿠키를 json 파일에 저장하고 닫습니다.
 

스크립트 베타:

  1. 새 페이지를 엽니다.
  2. 이전 세션의 쿠키를 로드합니다.
  3. 로그인 후 원하는 페이지로 리디렉션합니다.

이 단계를 수행하려면 다음 스크립트를 따릅니다.

 

스크립트 알파의 코드:

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", 'test@gmail.com');
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();

이 스크립트를 실행한 후 페이지의 로그인이 트리거된 후 페이지의 저장된 쿠키를 포함하는 skookie.json 파일을 찾아야 합니다.

로그인 세션과 함께 페이지를 다시 로드하려면 다음을 사용하십시오.

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();
 

바로 그거야. 도움이 됐으면 좋겠네요 해피 코딩.

댓글