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();
})();
코드 설명
- Puppeteer 실행 및 새 페이지 열기:
const browser = await puppeteer.launch(); const page = await browser.newPage(); - 첫 번째 웹사이트로 이동하여 완전히 로드될 때까지 대기:
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
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();
이 단계를 따르면 Puppeteer를 사용하여 서로 다른 웹 페이지 간에 쿠키가 올바르게 저장되고 로드되는지 확인할 수 있습니다. 이 방법을 통해 웹 스크래핑 작업 중 세션 상태를 효과적으로 유지할 수 있습니다.
고급 웹 스크래핑 솔루션을 원한다면 Bright Data의 Puppeteer 브라우저를 고려해 보세요. 자동화된 차단 해제 인프라 처리, CAPTCHA 우회, 스크래핑 프로젝트의 손쉬운 확장성을 위한 올인원 솔루션을 제공합니다.