CloakBrowser가 10,000 스타를 넘기며 stealth Chromium의 표준이 된 지 약 두 달. 이제 그 위에 관리 레이어가 올라왔다. CloakBrowser Manager는 브라우저 프로필을 생성, 실행, 모니터링하는 웹 기반 GUI를 Docker 한 줄로 배포할 수 있게 만든다. MultiLogin의 유료 기능이던 것을 무료로, 셀프호스팅으로 제공한다.
1. 왜 지금 “프로필 관리”인가
AI 에이전트가 웹을 자동화할 때 가장 흔한 실패 패턴은 계정 연동 감지다. VPN으로 IP를 바꿔도, 쿠키를 지워도, 동일 하드웨어 핑거프린트가 남으면 플랫폼은 여러 세션을 같은 사용자로 인식한다.
| 해결책 | 변경 항목 | 계정 연동 여부 |
|---|---|---|
| VPN | IP 주소만 | ❌ — 같은 핑거프린트 |
| 시크릿모드 | 쿠키만 삭제 | ❌ — 같은 하드웨어 핑거프린트 |
| Chrome 프로필 | 북마크/쿠키 분리 | ❌ — 같은 하드웨어 핑거프린트 |
| CloakBrowser | 전체 디바이스 아이덴티티 | ✅ — 프로필마다 독립 ID |
CloakBrowser는 이 문제를 소스 레벨 C++ 패치 32개로 해결한다. Canvas, WebGL, Audio, GPU, 폰트, 화면 크기, 타임존 등 50개 이상의 시그널을 프로필마다 다르게 생성한다. Manager는 이 프로필들을 UI로 관리하는 작업대다.
2. 아키텍처: FastAPI + React + noVNC
Manager는 세 가지 레이어로 구성된다.
┌─────────────────────────────────────────────────┐
│ React + Tailwind CSS (Web UI) │
│ - 프로필 생성/편집/삭제 │
│ - 실행/중지 버튼 │
│ - 실시간 브라우저 미리보기 (noVNC) │
└─────────────────────────────────────────────────┘
↕ CDP (Chrome DevTools Protocol)
┌─────────────────────────────────────────────────┐
│ FastAPI (Python) — API 서버 │
│ - SQLite DB (프로필 메타데이터) │
│ - Docker 컨테이너 라이프사이클 관리 │
│ - CDP 프록시 (Playwright/Puppeteer 연결) │
└─────────────────────────────────────────────────┘
↕
┌─────────────────────────────────────────────────┐
│ CloakBrowser (Stealth Chromium Binary) │
│ - 프로필별 격리된 브라우저 인스턴스 │
│ - 고유 핑거프린트 생성 │
│ - Cloudflare Turnstile 통과, reCAPTCHA v3 0.9 │
└─────────────────────────────────────────────────┘
핵심은 CDP (Chrome DevTools Protocol) 인터페이스다. 각 실행 중인 프로필은 로컬 서버의 CDP 엔드포인트를 노출한다. 이를 통해 Playwright나 Puppeteer로 자동화 스크립트를 실행하면서, 동시에 브라우저 UI에서 작업 과정을 실시간 모니터링할 수 있다.
from playwright.async_api import async_playwright
async with async_playwright() as pw:
browser = await pw.chromium.connect_over_cdp(
"http://localhost:8080/api/profiles/<profile-id>/cdp"
)
page = browser.contexts[0].pages[0]
await page.goto("https://example.com")
이 패턴은 디버깅에서 운영까지 같은 스크립트를 재사용할 수 있게 한다. 자동화 스크립트를 작성할 때는 page.goto()와 page.click()만으로 코드를 짜고, 실행 중간중간 브라우저에서 직접 확인하고, 이상이 발견되면 CDP 연결로 직접 개입할 수 있다.
3. 프로필 설정: 어디까지 제어할 수 있는가
Manager의 웹 UI에서 설정할 수 있는 항목은 다음과 같다.
- 핑거프린트 시드 — 프로필마다 고유한 디바이스 ID 생성의 기준값
- 프록시 — IP당 프로필 1개 (1:1 매핑이 탐지 회피의 기본)
- 타임존 / 로케일 — 브라우저가 위치로 인식하는 값
- 유저 에이전트 — 직접 지정 또는 자동 생성
- 화면 크기 / 플랫폼 — OS 레벨 시그널
이 설정들은 각 프로필의 profiles/ 디렉토리에 persisted된다. Docker 볼륨으로 관리하면 docker stop 후 재시작해도 세션(쿠키, localStorage, 캐시)이 유지된다. CI/CD에서 일회성 브라우저가 필요한 경우와, 장기 세션 관리(로그인 상태 유지)가 필요한 경우를 모두 지원한다.
4. 에이전트 워크플로우에서의 위치
GitHub Trending에서 관찰한 AI 코딩 에이전트 생태계의 확장 방향은 이렇다:
skill 패키징 (agent-skills)
→ 라우팅 최적화 (9router)
→ 브라우저 우회 (CloakBrowser)
→ 자기 성장 (Hermes Agent)
→ 실행 환경 관리 ← 지금 여기가 CloakBrowser Manager
브라우저 자동화 프로젝트가 단순 실행 → 상태 관리 → 분산 협업 순서로 성숙하면, 반드시 마주하는 문제가 **“여러 프로필을 어떻게 동시에 관리하고 모니터링할 것인가”**다.
Manager는 그 문제에 대한 셀프호스티드 오픈소스 답안을 제공한다. 유료 MultiLogin 대신, 서버 한 대에 Docker로 올리고, API로 여러 프로필을 프로그래밍 방식으로 제어한다.
5. 배포 및 운영
Single command로 시작:
docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager
cloakprofiles 볼륨에 모든 프로필 데이터가 저장되므로, 이미지 업데이트 후에도 데이터는 유지된다. 인증이 필요한 환경에서는 AUTH_TOKEN 환경변수로 UI와 API를 보호할 수 있다.
현재 버전은 early alpha로, 버그 보고와 기능 요청은 GitHub Issues에서 받는다. CloakBrowser core (10K+ 스타)보다 Manager는 263 스타로 초기 단계지만, core의 안정성과 CLI의 유연성을 결합하는 아키텍처는 확장성이 높다.
마치며: 브라우저 자동화의 산업화 단계
CloakBrowser가 “막히지 않는 브라우저”를 만든 후, Manager는 “막히지 않는 브라우저를 조직적으로 운영하는 방법”을 제시한다. AI 에이전트가 웹 환경에서 지속적으로 실행되려면, 단일 브라우저 인스턴스 수준에서 탐지를 회피하는 것뿐 아니라, 여러 프로필의 라이프사이클을 관리하는 시스템이 필요하다.
유료 솔루션이 지배적이던 분야에서 오픈소스 셀프호스티드 대안이 나온다는 것 자체가, 에이전트 워크플로우의 표준화가 진행 중임을 보여준다.
🔗 관련 정보
- GitHub (Manager): https://github.com/CloakHQ/CloakBrowser-Manager
- GitHub (Core): https://github.com/CloakHQ/CloakBrowser
- Website: https://cloakbrowser.dev
- Docker Hub: https://hub.docker.com/r/cloakhq/cloakbrowser-manager