Puppeteer에서 쿠키 저장 및 불러오기 방법?

Puppeteer를 사용한 쿠키 저장 및 로딩은 여러 페이지에 걸쳐 세션 상태를 유지하는 강력한 방법입니다. 이는 세션 데이터를 잃지 않고 서로 다른 페이지 간을 이동해야 하는 웹 스크래핑 작업에 특히 유용합니다. page.cookies() 메서드를 사용해 웹페이지의 모든 쿠키를 가져올 수 있으며, page.setCookie() 메서드를 사용해 쿠키를 웹페이지에 로드할 수 있습니다. HTTP 쿠키가 무엇인지 자세히 알고 싶다면 이 블로그 게시물을 확인하세요.

Puppeteer로 쿠키를 저장하고 불러오는 방법에 대한 보다 포괄적인 예시는 다음과 같습니다:

      const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // 첫 번째 웹사이트 열기 및 로드 완료 대기
  await page.goto('https://example.com', { waitUntil: 'networkidle2' });

  // 첫 페이지의 모든 쿠키 저장
  const cookies = await page.cookies();
  console.log('example.com의 쿠키:', cookies);

  // 두 번째 웹사이트 열기 및 로드 완료 대기
  await page.goto('https://httpbin.org/cookies', { waitUntil: 'networkidle2' });

  // 이전에 저장된 쿠키를 두 번째 페이지에 로드
  await page.setCookie(...cookies);

  // 두 번째 페이지에서 쿠키를 가져와 설정되었는지 확인하기 위해 로그 출력
  const cookiesSet = await page.cookies();
  console.log('httpbin.org에 설정된 쿠키:', cookiesSet);

  await browser.close();
})();

    

코드 설명

  1. Puppeteer 실행 및 새 페이지 열기: const browser = await puppeteer.launch(); const page = await browser.newPage();
  2. 첫 번째 웹사이트로 이동하여 완전히 로드될 때까지 대기: await page.goto('https://example.com', { waitUntil: 'networkidle2' });
    waitUntil: 'networkidle2' 옵션은 페이지가 완전히 로드된 후 진행하도록 보장합니다.
  3. 첫 번째 웹사이트에서 쿠키 가져오기 및 로그 기록: const cookies = await page.cookies(); console.log('example.com의 쿠키:', cookies);
  4. 두 번째 웹사이트로 이동하여 완전히 로드될 때까지 대기: await page.goto('https://httpbin.org/cookies', { waitUntil: 'networkidle2' });
  5. 저장된 쿠키를 두 번째 웹사이트에 로드: await page.setCookie(...cookies);
  6. 두 번째 웹사이트에서 쿠키를 가져와 확인을 위해 기록: const cookiesSet = await page.cookies(); console.log('httpbin.org에 설정된 쿠키:', cookiesSet);
  7. 브라우저를 닫습니다: await browser.close();

이 단계를 따르면 Puppeteer를 사용하여 서로 다른 웹 페이지 간에 쿠키가 올바르게 저장되고 로드되는지 확인할 수 있습니다. 이 방법을 통해 웹 스크래핑 작업 중 세션 상태를 효과적으로 유지할 수 있습니다.

고급 웹 스크래핑 솔루션을 원한다면 Bright Data의 Puppeteer 브라우저를 고려해 보세요. 자동화된 차단 해제 인프라 처리, CAPTCHA 우회, 스크래핑 프로젝트의 손쉬운 확장성을 위한 올인원 솔루션을 제공합니다.

시작할 준비가 되셨나요?