
reCAPTCHA 점수 0.9 달성! Chromium을 C++ 수준에서 개조한 「CloakBrowser」가 놀랍다
요약
CloakBrowser는 Chromium의 C++ 소스 코드를 직접 수정하여 봇 탐지를 우회하는 브라우저입니다. reCAPTCHA v3에서 0.9점이라는 인간 수준의 점수를 기록하며, 마우스와 키보드 동작을 인간처럼 에뮬레이션하는 기능을 제공합니다.
핵심 포인트
- Chromium C++ 소스 수준에서 58곳을 수정하여 탐지 우회
- reCAPTCHA v3 점수 0.9 달성 및 Cloudflare 통과
- 마우스 곡선, 키보드 입력 간격 등 인간 행동 패턴 에뮬레이션
- Playwright 및 Puppeteer의 드롭인 대체재로 활용 가능
브라우저 자동화 스크립트를 작성해 본 적이 있는 사람이라면 누구나 경험하는 악몽이 있습니다.
Cloudflare의 "로봇이 아닙니다" 체크. Google reCAPTCHA의 가차 없는 낮은 점수. 공들여 작성한 스크립트가 도중에 멈추고 데이터 수집에 실패합니다. playwright-stealth를 넣고, JS 오버라이드(JS override)를 추가하고, Chrome 업데이트로 인해 망가지지 않기를 기도하는 —— 그런 늪 같은 반복입니다.
최근 GitHub에서 22,000 스타를 획득한 CloakBrowser는 이 문제에 대한 접근 방식이 근본적으로 다릅니다.
Chromium의 C++ 소스 코드 수준에서 58곳의 수정을 가하여, 바이너리(binary)로서 컴파일한 "탐지되지 않는 브라우저"입니다.
통상적으로 Playwright나 Puppeteer로 조작되는 브라우저에는 navigator.webdriver = true라는 플래그가 설정됩니다. CloakBrowser는 이를 C++ 수준에서 false로 하드코드(hard-code) 했습니다. 그 외에도 57곳의 수정이 이루어졌습니다.
실제 테스트 데이터가 충격적입니다:
| 테스트 | 일반 Playwright | CloakBrowser |
|---|---|---|
| reCAPTCHA v3 점수 | 0.1 (봇 판정) | 0.9 (인간 수준) |
| Cloudflare Turnstile (비대화형) | 실패 | 통과 |
| Cloudflare Turnstile (관리형) | 실패 | 통과 |
| FingerprintJS | 탐지 | 통과 |
| BrowserScan | 탐지 | 정상 (4/4) |
| ShieldSquare | 차단 | 통과 |
reCAPTCHA v3 점수 0.9는 인간 수준입니다. 서버 사이드(server-side)에서 검증된 진짜 점수입니다. 동일한 코드에서 브라우저 바이너리만 교체했을 뿐인데 결과가 이 정도로 달라진다는 사실은 놀랍습니다.
| 시그널 | 일반 Playwright | CloakBrowser |
|---|---|---|
navigator.webdriver | true | false |
navigator.plugins.length | 0 | 5 |
window.chrome | undefined | object |
| UA 문자열 | HeadlessChrome | Chrome/146.0.0.0 |
| CDP 탐지 | 탐지 | 미탐지 |
| TLS 지문 (TLS fingerprint) | 불일치 | Chrome과 동일 |
| Canvas 지문 (Canvas fingerprint) | 이상 | 정상 |
| WebGL 렌더러 (WebGL renderer) | SwiftShader | 실제 GPU |
| AudioContext | 오실레이터 불일치 | 정상 |
58곳의 수정은 Canvas 지문, GPU 파라미터, 오디오 컨텍스트(audio context), 폰트, 화면 파라미터, 네트워크 타이밍 등 거의 모든 탐지 포인트를 커버하고 있습니다.
지문(fingerprint) 대책만으로는 불충분합니다. 행동 특성 또한 봇 탐지의 중요한 판단 자료입니다.
기계는 직선적으로 마우스를 움직이고 순식간에 글자를 입력합니다. 인간의 커서 이동에는 곡선과 미세한 떨림이 있으며, 타이핑에는 글자마다 사고 시간이 있습니다.
CloakBrowser의 humanize=True는 이것들을 완벽하게 에뮬레이트(emulate)합니다:
- 🖱️ 마우스 조작: 베지에 곡선 경로 + 자연스러운 지터(jitter) + 타겟 직전에서의 감속
- ⌨️ 키보드 입력: 한 글자씩, 인간다운 "생각 중"인 간격을 삽입
- 📜 스크롤: 가속 → 정속 → 감속의 리듬
모든 마우스, 키보드, 스크롤 API가 humanize 활성화 시 완전히 교체됩니다.
CloakBrowser는 **Playwright의 드롭인 대체재(drop-in replacement)**로 설계되었습니다:
# Python
pip install cloakbrowser
# Node.js
...
최초 실행 시 약 200MB의 Chromium 바이너리를 자동으로 다운로드하여 로컬에 캐시합니다. 두 번째 실행부터는 즉시 기동됩니다.
사용법은 Playwright와 완전히 동일합니다:
from cloakbrowser import sync_api
browser = sync_api.launch(humanize=True)
page = browser.new_page()
...
단 3줄입니다.
CloakBrowser는 주요 AI 에이전트 프레임워크와 호환됩니다:
| 프레임워크 | Stars | 지원 여부 |
|---|---|---|
| browser-use | 70K+ | ✅ |
| ... |
AI 에이전트가 실제 환경에서 작동함에 따라, 브라우저야말로 에이전트의 주요 접점이 되고 있습니다. 항공권 예약, 자동 테스트, 모델 훈련용 데이터 수집 —— 이 모든 것이 브라우저를 경유합니다.
하지만 대부분의 웹사이트는 AI 구동 브라우저를 봇(Bot)으로 간주하여 차단합니다. CloakBrowser는 이 "마지막 퍼즐 조각"을 채워주는 존재입니다.
CloakBrowser에는 **브라우저 프로필 매니저(Browser Profile Manager)**도 내장되어 있습니다. Multilogin, GoLogin, AdsPower와 같은 상용 안티 디텍션(Anti-detection) 브라우저의 셀프 호스팅 대체재로 기능하며, 프로필마다 독립된 지문 시드(Fingerprint Seed), 쿠키(Cookie), 스토리지(Storage)를 유지합니다.
바이너리 라이선스: Python/JS 래퍼(Wrapper)는 MIT 라이선스이지만, 바이너리 자체는 "무료 이용 가능·재배포 불가" -
최초 다운로드: ~200MB, 캐시 이후에는 불필요 -
완벽하지 않음: DataDome, Akamai, PerimeterX와 같은 고도화된 서비스는 계속 진화 중입니다. 현재 라운드는 CloakBrowser가 승리하고 있지만, 이는 군비 경쟁과 같습니다 -
Windows SmartScreen: 최초 실행 시 경고가 나타날 수 있음 (바이너리는 서명됨)
CloakBrowser는 브라우저 자동화의 개념을 근본적으로 바꾸었습니다.
"기존 브라우저 위에 JS 해킹을 덧씌우는" 것이 아니라, "처음부터 탐지되지 않는 브라우저를 소스 레벨에서 구축하는" 접근 방식입니다.
22K 스타라는 숫자는 커뮤니티가 이 방향성을 지지하고 있다는 증거입니다. AI 에이전트가 실제 웹과 상호작용하기 위한 필수적인 인프라가 되어가고 있습니다.
GitHub: github.com/CloakHQ/CloakBrowser
문서(Documentation): cloakbrowser.com
Docker: Docker Hub에서 프리빌드(Pre-built) 이미지 공개 중
대상 독자: 웹 스크레이핑(Web Scraping) 및 브라우저 자동화 관련 엔지니어, AI 에이전트 개발자, Playwright/Puppeteer 사용자
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기