최근 수정 시각 : 2025-11-10 11:25:14

Puppeteer

<colcolor=#000,#000><bgcolor=#01d8a2,#01d8a2> Puppeteer
파일:pptr.png
<colbgcolor=#01d8a2,#01d8a2> 종류 웹 브라우저 자동화 라이브러리
개발 Chrome Browser Automation team#
출시 2017년
안정 버전 24.10.2
개발 언어 TypeScript
라이선스 아파치 라이선스 2.0#
링크 # 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg
1. 개요2. 특징3. 파생 소프트웨어4. 기타5. 관련 문서

1. 개요

CDP 프로토콜 기반의 Node.jsJavaScript용 헤드리스 Chrome 자동화 구현체 라이브러리.

이름의 뜻은 인형술사를 뜻하는 puppeteer. 로고에도 꼭두각시 인형을 조종하는 십자끈이 있다.

2. 특징

Chrome Devtool Protocol(CDP)를 사용하기 때문에 WebDriver 프로토콜을 사용하는 Selenium 등과 다르게 더 상세한 API를 가지고 있다. 때문의 chromedriver 등의 별도 wrapper를 설치해 줘야 하는 타 프레임워크와 다르게, 일반 chrome 또는 Chromium 인스턴스를 직접 컨트롤할 수 있다. npm으로 설치할 시 다운받는 기본 바이너리는 Chrome for Testing이나, 필요한 경우 환경변수 등으로 전역 설치된 Chrome 등을 사용할 수도 있다.

크롬 확장 프로그램의 디버깅 및 e2e 테스팅이 가능하다.#

네트워크 요청에 대한 접근이 가능하다.# 이로 인해 puppeteer-har 등을 구현할 수도 있다.

alert, confirm 등을 바로 처리하는 방법은 따로 없고, Page 클래스의 "dialog" 이벤트를 통해 감지할 수 있다. Node.js뿐만 아니라 브라우저에서 돌아갈 때를 위해 EventEmitter가 별도로 구현되어 있다.

-evaluate 식의 이름을 가진 메서드는 대부분 브라우저 컨텍스트로, 내부적으로 직렬화되어 넘겨져 브라우저에서 실행된다. 따라서 콜백이 속한 내부 lexical 스코프에서 간접 참조되는 변수를 넘기면 에러가 발생하며, 해당 메서드의 인자로 넘겨야 한다. 크롬 확장 프로그램 개발시 background와 page script를 구분하는 것과 비슷하다.

2023년 6월 v20.6.0 버전부터 Playwright 스타일의 Locator API를 지원한다.

v23.0.0 버전부터 WebDriver BiDi 프로토콜을 지원한다.[1] 현재 WebDriver BiDi 호환 레이어로 기존의 Chrome과 Firefox를 동시 지원한다.[2]

3. 파생 소프트웨어

4. 기타

npm에 릴리즈 될 때마다 특정 chrome 및 firefox 바이너리 버전이 하드코딩된다. Supported browsers 문서나 revisions.ts에서 이를 찾을 수 있다.

구글 rendertron에서 지원되기도 했으나 결국 검색엔진에서 deprecated되었다.

5. 관련 문서


[1] From Puppeteer v23.0.0 and up Puppeteer has production-ready support for WebDriver BiDi to automate both Chrome and Firefox. #[2] From Puppeteer v23.0.0 onwards Puppeteer provides support for both Chrome and Firefox. To automate Chrome Puppeteer uses the Chrome DevTools Protocol (CDP) by default, but it can also be automated using WebDriver BiDi which is the default for automating Firefox. #