CloakHQ/CloakBrowser
요약
CloakHQ의 CloakBrowser는 기존의 단순한 JS 인젝션 방식이 아닌, C++ 소스 레벨에서 지문(fingerprints)을 수정하여 실제 Chromium 바이너리 자체를 패치한 브라우저입니다. 이로 인해 Cloudflare Turnstile 및 reCAPTCHA v3와 같은 최신 안티봇 시스템을 통과하며, Playwright/Puppeteer 사용자들에게 동일 API를 유지하면서도 강력한 스텔스 기능을 제공하는 대체 솔루션을 제시합니다. 또한, 무료 오픈 소스로 제공되며, 프로필 관리자(CloakBrowser Manager)까지 포함하여 다중 계정 및 지속적인 세션 관리가 가능합니다.
핵심 포인트
- C++ 소스 레벨 패치: 단순한 JS 인젝션이 아닌 실제 Chromium 바이너리 수정으로 높은 스텔스 수준 달성.
- 최신 안티봇 시스템 통과: Cloudflare Turnstile, reCAPTCHA v3 등 주요 감지 시스템을 성공적으로 우회함.
- 쉬운 마이그레이션 및 사용성: Playwright/Puppeteer와 동일한 API를 제공하여 기존 코드베이스 수정 최소화 (Drop-in Replacement).
- 무료 오픈 소스 및 관리 기능: 구독 없이 사용할 수 있으며, CloakBrowser Manager를 통해 다중 프로필 및 지속 세션 관리가 용이함.
- 고급 지문 위변조 기술: 캔버스, WebGL, 오디오, GPU 등 광범위한 영역의 패치와 WebRTC IP 스푸핑 기능을 제공.
Patched config 아님. JS injection 아님. C++ 소스 레벨에서 지문 (fingerprints) 을 수정한 실제 Chromium binary. Antibot 시스템은 이를 정상적인 브라우저로 점수화합니다 — 왜냐하면 그것이 바로 정상적인 브라우저이기 때문입니다.
Cloudflare Turnstile — 3 개의 라이브 테스트 통과 (headed mode, macOS)
Python 과 JavaScript 를 위한 Drop-in Playwright/Puppeteer 대체.
동일한 API, 동일한 코드 — import 만 교체하세요. 3 줄의 코드, 30 초로 문제 해결.
49 개 소스 레벨 C++ 패치— canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals, CDP input behavior— 인간적인 마우스 곡선 (human-like mouse curves), 키보드 타이밍, 스크롤 패턴. 하나의 플래그로 행동 감지 통과 humanize=True
0.9 reCAPTCHA v3 점수— 인간 수준, 서버 검증.Cloudflare Turnstile 를 통과, FingerprintJS, BrowserScan — 30 개 이상의 감지 사이트와 테스트됨자동 업데이트 binary— 배경 업데이트 체크, 항상 최신 스티브 빌드 (stealth build) 또는 pip install cloakbrowser
— binary 자동 다운로드, 제로 설정 (zero config)npm install cloakbrowser
무료 및 오픈 소스— 구독 없음, 사용 제한 없음
지금 시도해 보세요 — 설치 필요 없음:
docker run --rm cloakhq/cloakbrowser cloaktest
Python:
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
...
JavaScript (Playwright):
import { launch } from 'cloakbrowser';
const browser = await launch();
const page = await browser.newPage();
...
또는 Puppeteer 와도 작동: import { launch } from 'cloakbrowser/puppeteer'
(상세 정보)
Python:
pip install cloakbrowser
JavaScript / Node.js:
# Playwright 사용 시
npm install cloakbrowser playwright-core
# Puppeteer 사용 시
...
첫 번째 실행 시 스티브 Chromium binary 가 자동으로 다운로드됩니다 (~200MB, 로컬에 캐시됨).
선택 사항: Proxy IP 에서 시간대/지역 (timezone/locale) 을 자동 감지:
pip install cloakbrowser[geoip]
Playwright 에서 마이그레이션? 한 줄 변경:
- from playwright.sync_api import sync_playwright
- pw = sync_playwright().start()
- browser = pw.chromium.launch()
...
⭐
지원 표시 — Watch releases 를 통해 새로운 빌드가 떨어질 때 알림 받기.
Multilogin, GoLogin, AdsPower 의 자체 호스팅 대안. 고유 지문 (fingerprints), proxy, 지속 세션으로 브라우저 프로필 생성. noVNC 를 통해 브라우저에서 실행하고 상호작용하세요.
docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager
http://localhost:8080 을 여세요. 프로필을 생성하세요. Launch 를 클릭하세요. 끝남.
→ CloakBrowser Manager — 무료 오픈소스 (MIT)
— launch_context_async() 의 비동기 대응체
launch_context()
. browser.new_context() 에 kwargs 를 전달함.
storage_state, permissions, extra_http_headers 는 지속 가능한 프로파일 폴더 없이도 사용 가능.JS — Playwright 의 newContext() 로 임의 옵션 (including contextOptions escape hatch storageState) 을 전달함.
launchContext() / launchPersistentContext() 에서.
Native SOCKS5 proxy — proxy="socks5://user:pass@host:port"
모든 launch 함수에서 직접 작동, Python + JS. QUIC/HTTP3 는 UDP ASSOCIATE 를 통해 SOCKS5 를 터널링.Chromium 146 업그레이드 — 145.0.7632.x 에서 146.0.7680.177 로 모든 패치 재베이스.57 fingerprint patches — 추가 검출 벡터 커버리지 (WebAuthn, AAC 오디오, 윈도우 위치) 와 WebGL/캔버스 일관성 수정.WebRTC IP 스푸핑 — --fingerprint-webrtc-ip=auto
프로кси의 종료 IP 를 해결하고 WebRTC ICE 후보를 스푸핑. geoip=True 를 사용할 때 자동 주입됨 (추가 네트워크 호출 없음).Proxy signal 제거 — DNS/연결/SSL 타이밍 제로, 프로кси 캐시 헤더 삭제, Proxy-Connection 헤더 누출 제거 — 연결당 fingerprint seeds 가 있는 멀티 연결 CDP 프로кси로 재작성.
cloakserve
CDP multiplexer
Humanize CDP 격리 — 키보드 이벤트는 이제 격리된 세계와 신뢰할 수 있는 디스패치를 사용하여 더 나은 행동 스퉴스. 하나의 플래그가 모든 마우스, 키보드, 스크롤 상호작용을 실제 사용자처럼 작동하게 함. Bézier 곡선, 문자당 타이핑, 현실적인 스크롤 패턴 humanize=True
Zero flags 로 스테이트리스 — 이진 파일이 시작 시 랜덤 fingerprint seed 를 자동 생성함. 설정 불필요.Timezone & locale from proxy IP — launch(proxy="...", geoip=True)
자동으로 시간대 및 지역 감지.
Persistent profiles — launch_persistent_context()
쿠키와 localStorage 를 세션 간 유지, 인코그니토 검출 우회.
상세 내용은 CHANGELOG.md 를 확인하세요.
Config-level patches break — playwright-stealth, undetected-chromedriver, 그리고 puppeteer-extra
JavaScript 주입 또는 플래그 수정. 모든 Chrome 업데이트가 이를 무효화합니다. 안티봇 시스템이 패치를 자체적으로 감지합니다.CloakBrowser 는 Chromium 소스 코드를 패치— C++ 레벨에서 지문 (fingerprints) 을 수정하여 바이너리로 컴파일됩니다. 감지 사이트는 실제 브라우저인 것을 볼 수 있습니다. 소스 레벨 스퉴스— C++ 패치가 바이너리 수준에서 지문 (GPU, 화면, UA, 하드웨어 보고) 을 처리합니다. JavaScript 주입이나 설정 수준의 해킹이 없습니다. 대부분의 스퉴스 도구는 표면만 패치합니다.모든 곳에서 동일한 동작— 로컬, Docker, VPS 에서 동일하게 작동합니다. 환경별 패치나 설정이 필요하지 않습니다.AI 에이전트 및 자동화 프레임워크와 호환— 브라우저 사용용 플러그인 스타일 스퉴스, Crawl4AI, Scrapling, Stagehand, LangChain, Selenium 등. 통합을 확인하세요.
CloakBrowser 는 CAPTCHA 를 해결하지 않습니다 — CAPTCHA 가 나타나지 않도록 방지합니다. CAPTCHA 해결 서비스나 내장된 프록시 회전은 없습니다. 자체 프록시를 가져오세요. 이미 알고 있는 Playwright API 를 사용하세요.
모든 테스트는 라이브 감지 서비스와 검증되었습니다. 마지막 테스트: 2026 년 4 월 (Chromium 146).
| 감지 서비스 | Stock Playwright | CloakBrowser | Notes |
|---|---|---|---|
| reCAPTCHA v3 | |||
| 0.1 (bot) | 0.9 (human) | ||
| 서버 측 검증 | |||
| Cloudflare Turnstile (비상호작용) | |||
| FAIL | PASS | ||
| 자동 해결 | |||
| Cloudflare Turnstile (관리형) | |||
| FAIL | PASS | ||
| 단일 클릭 | |||
| ShieldSquare | |||
| BLOCKED | PASS | ||
| 프로덕션 사이트 | |||
| FingerprintJS 봇 감지 | |||
| DETECTED | PASS | ||
| demo.fingerprint.com | |||
| BrowserScan 봇 감지 | |||
| DETECTED | NORMAL (4/4) | ||
| browserscan.net | |||
| bot.incolumitas.com | |||
| 13 fails | 1 fail | ||
| WEBDRIVER 스펙만 | |||
| deviceandbrowserinfo.com | |||
| 6 true flags | 0 true flags | ||
isBot: false | |||
navigator.webdriver | |||
true | |||
false | |||
| 소스 레벨 패치 | |||
navigator.plugins.length | |||
| 0 | 5 | ||
| 실제 플러그인 목록 | |||
window.chrome | |||
undefined | |||
object | |||
| 실제 Chrome 과 동일 | |||
| UA 문자열 | HeadlessChrome | ||
Chrome/146.0.0.0 | |||
| 헤드리스 누출 없음 | |||
| CDP 감지 | 감지됨 | ||
| 감지 안됨 | |||
isAutomatedWithCDP: false | |||
| TLS 지문 | 불일치 | ||
| Chrome 과 동일 | |||
| ja3n/ja4/akamai 매칭 | |||
| 30+ 감지 사이트와 테스트됨 |
reCAPTCHA v3 점수 0.9 — 서버 측 검증 (인간 수준)
Cloudflare Turnstile 비상호작용 도전 — 자동 해결
BrowserScan 봇 감지 — NORMAL (4/4 체크 통과)
FingerprintJS 웹 스크래핑 데모 — 데이터 제공됨, 차단 안됨
*deviceandbrowserinfo.com behavioral bot detection — "You are human!" with humanize=True (24/24 signals passed)
| Feature | Playwright | playwright-stealth | undetected-chromedriver | Camoufox | CloakBrowser |
|---|---|---|---|---|---|
| reCAPTCHA v3 score | 0.1 | 0.3-0.5 | 0.3-0.7 | 0.7-0.9 | 0.9 |
| ... |
CloakBrowser 은 커스텀 크롬 이너리 (Chromium binary) 를 감싸는 얇은 래퍼 (Python + JavaScript) 입니다:
설치 → pip install cloakbrowser
또는 npm install cloakbrowser
첫 번째 실행 → 플랫폼에 맞는 이너리 자동 다운로드 (Chromium 146)
각 실행 → Playwright 또는 Puppeteer 가 우리의 이너리 + 스티치 (stealth) 아크를 함께 시작합니다
코드 작성 → 표준 Playwright/Puppeteer API 사용, 배우는 것이 없습니다
이 이너리는 캔버스, WebGL, 오디오, 폰트, GPU, 화면 속성, WebRTC, 네트워크 타이밍, 하드웨어 리포팅, 자동화 신호 제거, CDP 입력 행동 모방을 포함하는 49 개의 소스 레벨 패치를 포함합니다.
이것들은 크롬 이너리에 컴파일되어 있습니다 — JavaScript 를 통해 주입되지 않으며, 플래그를 통해 설정되지 않습니다.
이너리 다운로드의 무결성을 보장하기 위해 SHA-256 체크섬으로 검증됩니다.
from cloakbrowser import launch
# 기본 — headless, 기본 스티치 설정
browser = launch()
...
표준 Playwright Browser 객체를 반환합니다. 모든 Playwright 메서드가 작동합니다: new_page(), new_context(), close(), etc.
import asyncio
from cloakbrowser import launch_async
async def main():
...
사용자 에이전트, 뷰포트, 로케일, 시간대 등을 한 번에 생성하는 편리함 함수입니다:
from cloakbrowser import launch_context
context = launch_context(
user_agent="Custom UA",
...
추가 kwargs 는 Playwright 의 browser.new_context() 에 전달됩니다 — persistent profile 폴더 없이 storage_state, permissions, extra_http_headers 등을 사용할 수 있습니다:
from cloakbrowser import launch_context
# JSON 파일에서 세션 (쿠키, localStorage) 을 복원합니다
context = launch_context(storage_state="state.json")
...
launch_context() 의 비동기 대응입니다. 동일한 서명 및 kwargs 전달:
import asyncio
from cloakbrowser import launch_context_async
async def main():
...
launch_context() 와 동일하지만 persistent user profile 을 사용합니다. 쿠키, localStorage, 캐시는 세션 간에 지속됩니다.
이것을 사용할 때 필요한 경우:
실행마다 로그인 유지 (쿠키/세션이 재시작 후에도 살아남음)
익명 모드 우회 (일부 사이트가 비어있는, 일시적인 프로필을 플래그함)
크롬 확장 프로그램 로드 (확장 프로그램은 실제 사용자 데이터 디렉토리에서만 작동함)
자연스러운 웹 검색 기록 생성 (캐시된 폰트, 서비스 워커, IndexedDB 가 시간이 지남에 따라 누적되어 프로필이 더 현실적으로 보임)
from cloakbrowser import launch_persistent_context
# 첫 번째 실행 — 프로필 생성
ctx = launch_persistent_context("./my-profile", headless=False)
...
launch_context() 와 동일한 모든 옵션을 지원합니다.
: proxy, user_agent, viewport, locale, timezone, color_scheme, geoip.
비동기 버전: launch_persistent_context_async()
저장 할당량과 감지 트레이드오프: 바이너리는 기본적으로 FingerprintJS 를 통과하도록 저장 할당량을 정규화합니다. 이는 비익명 모드가 아닌 저장 할당량을 보고하는 지속적 컨텍스트를 차단합니다. BrowserScan 의 notPrivate 체크, -10 점 등 익명 모드를 페널티하는 감지 서비스는 여전히 플래그를 걸 것입니다. 만약 타겟 사이트가 익명 모드를 페널티하지만 FingerprintJS 를 사용하지 않는다면, 일반적인 프로필처럼 보이기 위해 더 높은 할당량을 설정하세요:
ctx = launch_persistent_context("./my-profile", args=["--fingerprint-storage-quota=5000"])
| 저장 할당량 설정 | FingerprintJS | BrowserScan notPrivate |
|---|---|---|
| 기본값 (자동, ~500MB) | PASS | -10 (익명 모드로 플래그됨) |
--fingerprint-storage-quota=5000 | 감지 트리거 가능 | PASS (익명 모드가 아닌 것처럼 보임) |
바이너리를 미리 다운로드하거나 명령줄에서 설치 상태를 확인하세요:
python -m cloakbrowser install # 바이너리 다운로드 및 진행 출력
python -m cloakbrowser info # 버전, 경로, 플랫폼 표시
python -m cloakbrowser update # 새 바이너리 확인 및 다운로드
...
from cloakbrowser import binary_info, clear_cache, ensure_binary
# 바이너리 설치 상태 확인
print(binary_info())
...
CloakBrowser 는 완전한 타입 정의가 포함된 TypeScript 패키지를 제공합니다. Playwright 또는 Puppeteer 를 선택하세요 — 그 아래에는 동일한 스티브트 바이너리가 있습니다.
import { launch, launchContext, launchPersistentContext } from 'cloakbrowser';
// 기본 설정
const browser = await launch();
...
참고: 위 각 예제는 독립적입니다 — 하나의 블록으로 실행하기 위한 것이 아닙니다.
모든 Python 옵션은 JS 에서도 작동합니다: stealthArgs: false 를 기본값을 비활성화하고, geoip: true 를 프록시 IP 에서 자동으로 시간대/지역 설정 감지합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기