2026년 퍼피티어 리얼 브라우저 완전 가이드

2026년 웹 스크래핑을 위해 펑펑티어 리얼 브라우저가 어떻게 안티봇 시스템을 우회하고 CAPTCHA를 해결하는지, 주요 대안 및 한계점을 살펴보세요.
3 분 읽기
Guide to Puppeteer Real Browser blog image

이 가이드에서는 다음을 배울 수 있습니다:

  • Puppeteer Real Browser란 무엇인가
  • 봇 탐지 회피 및 CAPTCHA 해결 방식
  • 기본 Puppeteer와의 비교
  • 실제 봇 탐지 시스템에 대항하여 사용하는 방법
  • 주요 대안들
  • 주요 한계점
  • 봇 방지 브라우저 자동화를 위한 더 나은 접근법

자, 시작해 보겠습니다!

Puppeteer Real Browser란 무엇인가요?

퍼피티어 리얼 브라우저는 퍼피티어가 제어하는 브라우저가 실제 사용자처럼 행동하도록 만드는 자바스크립트 라이브러리입니다. 이를 통해 클라우드플레어(Cloudflare) 및 유사한 WAF 서비스에서의 봇 탐지를 줄일 수 있습니다. 또한 클라우드플레어 턴스타일(Cloudflare Turnstile)을 포함한 자동 CAPTCHA 해결을 지원합니다.

이 라이브러리는 프록시 및 기본 Puppeteer의 모든 기능을 지원하면서 사용자 정의 구성으로 Puppeteer를 확장합니다. 오픈소스로 GitHub에서 1,000개 이상의 스타를 받았으며, npm에서 puppeteer-real-browser로 이용 가능하고 배포를 위한 Docker를 지원합니다.

참고: 2026년 2월, 라이브러리 작성자 mdervisaygan은 프로젝트 업데이트를 중단한다고 발표했습니다. 이는 Puppeteer Real Browser가 반드시 종료된다는 의미는 아니며, 커뮤니티 구성원들이 포크를 통해 개발을 이어갈 수 있습니다.

Puppeteer Real Browser는 어떻게 작동하나요?

Puppeteer, Playwright, Selenium과 같은 브라우저 자동화 도구를 사용해 본 적이 있다면, 이러한 도구로 제어되는 브라우저가 안티봇 시스템에 탐지될 수 있다는 사실을 알고 있을 것입니다. 특히 헤드리스 모드에서 작동할 때, 최고의 헤드리스 브라우저를 사용하더라도 더욱 그렇습니다.

차단 현상은 자동화 라이브러리가 브라우저를 제어하기 쉽게 구성하기 때문에 발생합니다. 안티봇 솔루션은 이러한 구성과 “누출”을 탐지하여 요청이 일반 브라우저를 사용하는 실제 인간인지 자동화된 봇인지 판단합니다.

Puppeteer Real Browser는 자동화 탐지를 방지하도록 설계된 Puppeteer 및 Playwright용 패치 모음인 Rebrowser를 사용하여 이 문제를 해결합니다.

Rebrowser는 puppeteer-core를 직접 수정하여 브라우저 런타임을 패치함으로써 Puppeteer가 남기는 봇 같은 흔적을 제거합니다. 이러한 변경으로 브라우저가 실제 사용자 세션처럼 보이게 되어 안티봇 시스템에 차단될 가능성을 줄입니다.

그러나 Cloudflare와 같은 WAF는 여전히 원클릭 CAPTCHA를 표시할 수 있습니다:

The Cloudflare one-click CAPTCHA

이 경우 Puppeteer Real Browser는 실제 사용자와 동일하게 CAPTCHA와 상호작용하기 위해 ghost-cursor를 활용합니다. 이는 Puppeteer 또는 모든 2D 평면에서 인간과 유사한 마우스 움직임을 생성하는 자바스크립트 라이브러리입니다.

문제는 Puppeteer 마우스 이벤트가 비정상적인 커서 동작으로 인해 종종 합성된 것으로 탐지된다는 점입니다. Puppeteer Real Browser는 .screenX 및 .screenY 값 처리 방식을 개선하여 마우스 움직임을 더 자연스럽게 보이게 함으로써 이 문제를 해결합니다. 이는 Cloudflare Turnstile, reCAPTCHA 및 기타 원클릭 CAPTCHA가 상호작용이 실제 인간 사용자로부터 비롯된 것이라고 생각하도록 속이는 데 도움이 됩니다.

이 라이브러리에는 다음도 포함됩니다:

  • Puppeteer Extra: 플러그인을 통한 확장 기능 활성화
  • Xvfb: 가상 브라우저 디스플레이 처리, 헤드리스 환경에 이상적

요약하자면, Puppeteer Real Browser는 다양한 개선 사항을 결합하여 탐지를 피하면서 인간 사용자를 모방하는 은밀하고 고성능의 자동화 도구를 구현합니다.

Puppeteer Real Browser vs Puppeteer

다음은 두 기술을 비교한 요약표 입니다:

퍼피티어 퍼피티어 리얼 브라우저
GitHub 스타 1k 스타 89.7k 스타
npm 라이브러리 puppeteer puppeteer-real-browser
npm 다운로드 ~360만 주간 다운로드 ~10k 주간 다운로드
puppeteer-core 버전 표준 puppeteer-core 자동화 흔적을 제거하기 위해 rebrowser-puppeteer-core 패치
안티봇 탐지 고급 봇 보호 기능에 의해 쉽게 탐지됨 봇 탐지 시스템(Cloudflare, Akamai 등)을 회피하도록 설계됨
API 기본값 추가 확장 기능이 포함된 동일한 Puppeteer API
프록시 지원 프록시 지원 프록시 지원
CAPTCHA 처리 내장형 CAPTCHA 해결 기능 없음 원클릭 CAPTCHA 해결 지원 (예: Cloudflare Turnstile, reCAPTCHA)
플러그인 지원 기본 플러그인 지원 없음 플러그인 지원을 위해 puppeteer-extra 와 통합
유지 관리 및 업데이트 Google에서 적극적으로 유지 관리 저자에 의해 중단됨(2026년 2월), 하지만 커뮤니티를 통해 계속될 수 있음

Puppeteer Real Browser를 사용하여 CAPTCHA 우회하는 방법

Puppeteer Real Browser의 기능을 보여주기 위해 Scraping Course의 Anti-Bot Challenge 페이지에서 테스트해 보겠습니다:

The target page with Cloudflare protection

이 Cloudflare로 보호된 페이지에는 Turnstile 원클릭 CAPTCHA가 적용되어 있습니다. 이 단계별 섹션에서는 Puppeteer Real Browser를 사용하여 이를 해결하는 방법을 보여드리겠습니다.

대안 접근법은 Puppeteer에서 CAPTCHA 우회 가이드를 참고하세요. 핵심은 표준 Puppeteer 스크립트가 해당 페이지에 접근하면 항상 Turnstile CAPTCHA에 걸려 차단된다는 점입니다.

곧 보시게 될 것처럼, Puppeteer Real Browser는 Cloudflare 및 유사한 봇 방지 보호 기능을 우회하는 효과적인 솔루션입니다!

1단계: puppeteer-real-browser 설치

Node.js 프로젝트가 이미 설정되어 있다고 가정합니다. 설정되지 않았다면 npm init을 사용하여 생성할 수 있습니다.

이제 프로젝트 폴더로 이동하여 다음 명령어로 puppeteer-real-browser를 설치하세요:

npm install puppeteer-real-browser

리눅스에서는 시스템 수준 종속성으로 xvfb도 설치해야 합니다. 데비안 기반 시스템의 경우 다음 명령어로 설치하세요:

sudo apt-get install xvfb

자, 이제 Puppeteer Real Browser를 사용해 CAPTCHA를 우회할 준비가 되었습니다.

2단계: 초기 설정

자바스크립트 스크립트에서 Puppeteer Real Browser의 connect를 임포트하세요:

const { connect } = require("puppeteer-real-browser");

connect() 함수를 사용하면 비동기 함수 내에서 수정된 브라우저 엔진에 연결할 수 있습니다:

(async () => {
  const { browser, page } = await connect({
    headless: false,
    turnstile: true,
  });

  // 스크래핑 로직...

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

기본 Puppeteer와 마찬가지로 리소스를 해제하려면 browser.close() 를 호출해야 합니다.

Puppeteer Real Browser의 connect() 함수는 다음 매개변수를 받습니다:

  • headless: 기본값은 false입니다. "new", true, "shell" 등의 다른 값도 사용할 수 있지만, false가 가장 안정적입니다.
  • args: 추가 크로미움 플래그를 문자열 배열로 전달할 수 있습니다. 지원되는 플래그를 참조하세요.
  • customConfig: Puppeteer Real Browser는 chrome-launcher를 사용하여 초기화됩니다. 여기에 전달하는 모든 옵션은 직접 초기화 인수로 추가됩니다. userDataDir 또는 사용자 지정 Chrome 경로(chromePath)를 설정하는 데 사용할 수 있습니다.
  • turnstile: true인 경우, Puppeteer Real Browser가 Cloudflare Turnstile CAPTCHA를 자동으로 클릭합니다.
  • connectOption: puppeteer.connect()를 사용하여 Chromium에 연결할 때 전송되는 옵션입니다.
  • disableXvfb: Linux에서 headless: false일 때 가상 디스플레이(xvfb)를 사용하여 브라우저를 실행합니다. true로 설정하면 이 기능을 비활성화하고 실제 브라우저 창을 볼 수 있습니다.
  • ignoreAllFlags: true인 경우, 첫 로드 시 나타나는 “시작하기” 페이지를 포함한 모든 기본 초기화 인수가 재정의됩니다.
  • plugins: Puppeteer Extra 플러그인의 배열입니다. 자세한 내용은 공식 문서를 참조하세요.

위 함수가 지원하는 다른 모든 옵션은 Puppeteer connect() 메서드에서 가져옵니다.

Cloudflare를 우회하기 위해 이 예제에서 핵심 설정은 turnstile을 true로 설정하는 것입니다.

3단계: 대상 페이지에 연결

Puppeteer API의 goto() 함수를 사용하여 대상 페이지로 이동합니다:

await page.goto("https://www.scrapingcourse.com/antibot-challenge");

turnstile이 true로 설정되어 있으므로, Puppeteer Real Browser는 Cloudflare Turnstile CAPTCHA가 로드될 때까지 자동으로 대기한 후 이를 해결하려고 시도합니다.

단계 #4: CAPTCHA 해결 대기

시크릿 모드에서 대상 페이지를 열고 CAPTCHA를 수동으로 해결하면 다음과 같은 결과를 얻을 수 있습니다:

The target page after solving the CAPTCHA

개발자 도구(DevTools)로 메시지를 확인하면 다음과 같이 표시됩니다:

The DevTools window on the message element

#challenge-info CSS 선택자를 사용하여 메시지 요소를 선택할 수 있음을 확인하세요.

이제 페이지 DOM 변경을 기다리는 사용자 정의 함수를 정의합니다:

function delay(timeout) {
  return new Promise((resolve) => {
    setTimeout(resolve, timeout);
  });
}

이 함수는 puppeteer-real-browser가 CAPTCHA 해결을 위한 내장 콜백을 제공하지 않기 때문에 필요합니다. Puppeteer Real Browser가 CAPTCHA를 성공적으로 우회할 것으로 예상되므로 페이지 DOM이 그에 따라 업데이트되며, 이러한 변경 사항을 기다려야 합니다.

따라서 아래와 같이 delay()를 사용하여 페이지가 완전히 업데이트될 때까지 설정된 시간 동안 대기할 수 있습니다:

await delay(10000);

그런 다음 대상 메시지 요소가 페이지에 표시될 때까지 기다립니다:

await page.waitForSelector("#challenge-info", { timeout: 5000 });

그런 다음 해당 콘텐츠를 가져와 출력합니다:

const challengeInfo = await page.$eval(
  "#challenge-info",
  (el) => el.textContent.trim()
);
console.log(`페이지 메시지: "${challengeInfo}"`);

모든 것이 예상대로 작동한다면 스크립트는 다음과 같이 출력해야 합니다:

Page message: "You bypassed the Antibot challenge! :D"

5단계: 모든 것을 통합하기

아래는 최종 Puppeteer 실제 브라우저 스크립트입니다:

const { connect } = require("puppeteer-real-browser");

// 하드 웨이팅 구현을 위한 커스텀 함수
function delay(timeout) {
  return new Promise((resolve) => {
    setTimeout(resolve, timeout);
  });
}

(async () => {
  // 제어되는 브라우저에 연결
  const { browser, page } = await connect({
    headless: false,
    turnstile: true, // Turnstile CAPTCHA 처리 활성화
    connectOption: {
      defaultViewport: null, // 뷰포트 크기를 브라우저 창 전체로 설정
    },
    args: ["--start-maximized"], // 최대화 창으로 브라우저 시작
  });

  // 챌린지 페이지로 이동
  await page.goto("https://www.scrapingcourse.com/antibot-challenge", {
    waitUntil: "networkidle2", // 페이지가 완전히 로드되고 유휴 상태가 될 때까지 대기
  });

  // CAPTCHA가 해결될 때까지 최대 10초 대기
  await delay(10000);

  // 챌린지 정보 요소가 나타날 때까지 최대 5초 대기
  await page.waitForSelector("#challenge-info", { timeout: 5000 });

  // 챌린지 정보 텍스트 가져와 출력
  const challengeInfo = await page.$eval(
    "#challenge-info",
    (el) => el.textContent.trim()
  );
  console.log(`페이지 메시지: "${challengeInfo}"`);

  // 브라우저 닫기 및 리소스 해제
  await browser.close();
})();

위 코드를 실행하면 다음과 같이 동작하는 브라우저가 열립니다:

Automatic CAPTCHA solving

스크립트는 Cloudflare로 보호된 페이지를 방문하여 자동으로 CAPTCHA를 해결한 후, 대상 페이지에 도달하여 데이터를 추출합니다.

원하는 대로 스크립트는 터미널에 다음과 같은 결과를 출력합니다:

페이지 메시지: "당신은 Antibot 도전을 우회했습니다! :D"

훌륭합니다! Cloudflare CAPTCHA가 자동으로 해결되었습니다.

puppeteer-real-browser의 대안

puppeteer-real-browser는 더 이상 유지보수되지 않으므로, 다음과 같이 유사한 기능을 제공하는 대안을 살펴볼 가치가 있습니다:

  • Puppeteer Stealth: Puppeteer Extra용 플러그인으로, 자동화 탐지를 회피하기 위한 다양한 기술을 적용합니다. 브라우저 지문 정보를 수정하고, WebRTC 유출을 차단하며, 인간과 유사한 행동을 모방하여 봇 방지 조치를 우회합니다.
  • Playwright Stealth: Puppeteer Stealth와 유사한 은닉 기술을 통합한 Playwright Extra 플러그인입니다. 브라우저 API를 패치하여 지문 유출을 방지합니다.
  • SeleniumBase: 내장형 봇 탐지 방지 기능을 갖춘 완전한 Selenium 기반 자동화 프레임워크입니다. 봇 회피 기술, 사용자 에이전트 스푸핑, CAPTCHA 처리 및 기타 도구를 포함하여 Selenium 스크립트가 봇 보호를 우회하도록 지원합니다.
  • undetected-chromedriver: Selenium 스크립트가 봇 탐지를 우회하도록 돕는 수정된 ChromeDriver 버전입니다. 자동화 플래그를 제거하고, WebDriver 속성을 난독화하며, 브라우저가 사람에 의해 조작된 세션처럼 행동하도록 보장합니다.

Puppeteer Real Browser의 한계

Puppeteer Real Browser는 강력한 안티봇 브라우저 자동화 도구이지만 몇 가지 단점이 존재합니다. 개발자는 이러한 제약 사항을 투명하게 공개하며 명확한 한계점을 제시합니다.

주요 제한 사항은 다음과 같습니다:

  • 더 이상 유지 관리되지 않음: 2026년 2월 기준으로, 원작자는 이 라이브러리가 더 이상 업데이트되지 않을 것이라고 발표했습니다. 향후 개선 사항은 적극적인 개발보다는 커뮤니티 기여에 의존할 것입니다.
  • 100% 탐지 불가 아님: 봇 탐지를 줄이기는 하지만, 고급 봇 방지 시스템은 여전히 자동화된 트래픽을 감지할 수 있습니다.
  • 추가 설정 필요: 최적의 은폐성과 기능성을 위해 프록시, 헤더 및 기타 설정을 미세 조정해야 할 수 있습니다.
  • window 객체의함수 접근 불가: Rebrowser가 브라우저 런타임을 차단하기 때문에 발생합니다. 해결책으로는 puppeteer-intercept-and-modify-requests를 사용해 페이지에 자바스크립트를 주입하거나 Chrome 플러그인을 사용하는 방법이 있습니다.
  • 외부 라이브러리에 의존: 이 라이브러리는 Rebrowser, Puppeteer Extra, ghost-cursor와 같은 타사 프로젝트에 의존하며, 이들은 변경되거나 중단될 수 있습니다.
  • reCAPTCHA 관련 문제: reCAPTCHA v3는 활성 Google 세션이 전달되어야 합니다. 탐지 불가능한 브라우저를 사용하더라도 유효한 세션 없이 자동화를 시도하면 차단될 가능성이 높습니다.

원활한 안티봇 브라우저 자동화

위에서 언급한 단점들로 인해 Puppeteer Real Browser 자체를 고려하지 않을 수도 있습니다. 대안을 시도해 볼 수는 있지만, 유사한 문제에 직면할 가능성이 높습니다.

중요한 점은 대부분의 안티봇 브라우저 자동화 라이브러리가 브라우저 자체보다 브라우저 패치에 집중한다는 것입니다. 해당 라이브러리의 핵심에 약간의 수정이 필요할 수 있지만, 대부분의 노력은 탐지 유출을 피하기 위해 브라우저 엔진을 패치하는 데 투입됩니다.

이제 Playwright, Puppeteer, Selenium과 같은 기본 브라우저 자동화 라이브러리를 활용하여 웹 스크래핑을 위해 특별히 설계된 클라우드 기반 확장형 브라우저를 제어할 수 있다고 상상해 보십시오. 바로 Bright Data의 Scraping Browser가 제공하는 경험입니다!

스크래핑 브라우저는 차단 처리를 자동으로 처리하는 내장형 웹사이트 잠금 해제 기능을 제공합니다. 400M+ monthly개의 IP로 구성된 프록시 네트워크와 원활하게 통합되며, 클라우드에서 효율적으로 작동하고 통합된 CAPTCHA 해결 기능을 포함합니다.

스크래핑에 최적화된 브라우저야말로 봇 방지 브라우저 자동화를 실현하는 진정한 해결책입니다!

결론

이 글에서는 Puppeteer Real Browser를 사용해 Puppeteer의 봇 탐지 문제를 해결하는 방법을 알아보았습니다. 이 라이브러리는 차단 없이 웹 스크래핑을 수행할 수 있도록 수정된 버전의 puppeteer-core를 제공합니다.

문제는 puppeteer-real-browser가 더 이상 유지 관리되지 않는다는 점입니다. 따라서 오늘은 작동할 수 있지만, 봇 방지 솔루션이 계속 진화함에 따라 내일은 작동하지 않을 수도 있습니다.

문제는 브라우저 제어용 Puppeteer API가 아니라 브라우저 자체에 있습니다. 해결책은 Scraping Browser와 같이 내장된 안티봇 우회 기능을 갖춘 클라우드 기반의 항상 업데이트되고 확장 가능한 브라우저입니다!

Bright Data의 Scraping Browser는 Puppeteer, Selenium, Playwright 등과 호환되는 고도로 확장 가능한 클라우드 브라우저입니다. 브라우저 지문 인식, CAPTCHA 해결, 자동 재시도를 처리해 줍니다.

또한 글로벌 프록시 네트워크를 통해 요청마다 출구 IP를 자동으로 회전시킵니다. 이 네트워크는 다음과 같습니다:

지금 바로 무료 Bright Data 계정을 생성하여 스크래핑 브라우저를 사용해 보거나 프록시를 테스트해 보세요.