본문으로 건너뛰기
cccskills
무료GitHub에 공개

cloakbrowser

Stealth Chromium browser automation that bypasses bot detection. Use this skill whenever the user wants to scrape, screenshot, PDF, or automate a site that blocks normal headless browsers — Cloudflare Turnstile, reCAPTCHA v3, FingerprintJS, ShieldSquare, BrowserScan, "Access Denied" responses, suspicious 403/429s on plain `curl`, or any site where Playwright/Puppeteer get caught. Also use when the user mentions CloakBrowser, stealth Chromium, anti-bot bypass, "headless detection", "real Chrome fingerprint", or wants a one-off "what does this page actually render" check. Prefer this skill over raw `curl`/`fetch` for any site behind a CDN or bot-detection layer.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OctavianTocan/cloakbrowser-skill스타 14(GitHub 14 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(13)

  • SKILL.md6.9 KB
  • .gitignore69 B
  • install.sh2.4 KB
  • LICENSE1.0 KB
  • README.md5.1 KB
  • references/stealth-knobs.md2.8 KB
  • scripts/check-stealth.py1.3 KB
  • scripts/eval-js.py1.6 KB
  • scripts/fetch.py2.3 KB
  • scripts/pdf.py1.4 KB
  • scripts/screenshot.py2.1 KB
  • scripts/serve.py1.5 KB
  • scripts/serve.sh512 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

CloakBrowser

A patched-source Chromium plus a Playwright-shaped Python wrapper. Fingerprints are modified at the C++ level (canvas, WebGL, audio, fonts, WebRTC, TLS, CDP input, navigator.webdriver, plugin list, window.chrome, …) so detection services see a real browser because it is a real browser — no JS shim that breaks on the next Chrome upgrade.

Install state on this VPS

Already installed:

  • cloakbrowser CLI lives at /home/node/.local/bin/cloakbrowser in the stable OpenClaw container image.
  • Stealth Chromium binary lives at /home/node/.cloakbrowser/chromium-<version>/chrome.
  • Wrapper Python is exposed through /usr/local/bin/cloakbrowser-python; the bundled scripts use this stable wrapper so they work even when Codex sets HOME to an isolated session directory.

If a fresh checkout or a new machine needs setting up:

uv tool install cloakbrowser
cloakbrowser install        # downloads the ~206 MB Chromium binary

The cloakbrowser CLI only manages the binary (install, info, update, clear-cache). It is not a scraper — for that, use the scripts in this skill or write inline Python.

Decision tree — pick the right tool

TaskUse
Get the HTML or visible text of a pagescripts/fetch.py
Save a PNG of a page or elementscripts/screenshot.py
Render a page to PDFscripts/pdf.py
Run a JS expression against a page and get JSON backscripts/eval-js.py
Confirm stealth is workingscripts/check-stealth.py
Long-lived browser shared across many tool calls / skillsscripts/serve.sh + CDP
Multi-step interactive flow (login, click, type, conditional)Inline Python — see below

Always reach for a bundled script first. They use argparse, take --humanize, --proxy, --geoip, --wait, etc. — most needs are covered.

Bundled scripts

All scripts are executable (#! already points at the right Python). Invoke them by absolute path:

SK=/root/.openclaw/skills/cloakbrowser/scripts

$SK/fetch.py https://example.com                       # full HTML on stdout
$SK/fetch.py https://example.com --text                # visible text only
$SK/fetch.py https://example.com --selector "h1"       # scoped to a selector
$SK/fetch.py https://protected.example --humanize      # behavioural stealth
$SK/fetch.py https://geo.example --proxy socks5://u:p@host:1080 --geoip

$SK/screenshot.py https://example.com /tmp/out.png --full
$SK/screenshot.py https://example.com /tmp/hero.png --selector ".hero"
$SK/screenshot.py https://example.com /tmp/m.png --viewport 390x844

$SK/pdf.py https://example.com /tmp/page.pdf --format A4
$SK/pdf.py https://example.com /tmp/wide.pdf --landscape

$SK/eval-js.py https://news.example "Array.from(document.querySelectorAll('h2')).map(h=>h.innerText)"
$SK/eval-js.py https://example.com  "({ua: navigator.userAgent, w: innerWidth})"

$SK/check-stealth.py        # JSON report + exit 0 if all 4 stealth tells pass

$SK/serve.sh --port 9222    # starts cloakserve in background; logs /tmp/cloakserve.log

The pattern is consistent: positional URL (and OUTPUT where relevant), then optional flags --humanize, --proxy, --geoip, --wait, --timeout.

Inline Python — for everything the scripts don't cover

For multi-step flows (login, fill a form, click through, conditional waits), write a one-off script. Use the uv tool venv's interpreter:

CB_PY=/usr/local/bin/cloakbrowser-python

"$CB_PY" - <<'PY'
from cloakbrowser import launch
b = launch(headless=True, humanize=True)
p = b.new_page()
p.goto("https://example.com/login", wait_until="domcontentloaded")
p.fill("#email", "me@example.com")
p.fill("#password", "…")
p.click("button[type=submit]")
p.wait_for_url("**/dashboard**")
print(p.title())
b.close()
PY

The API is identical to Playwright's sync API — anything in the Playwright docs works here. The only differences:

  • from cloakbrowser import launch (not from playwright.sync_api)
  • Skip sync_playwright().start() — launch() is a top-level function
  • All stealth flags (humanize, proxy, geoip, auto_update) go on launch(), not the page

For persistent sessions, use launch_persistent_context(user_data_dir).

When to load references/stealth-knobs.md

Read it when:

  • A target blocks despite stealth (covers humanize / proxy / persistent profile escalation order).
  • The user asks about proxies, residential vs datacentre, geo matching.
  • You need to share one browser across many tool calls (CDP server mode).

For routine "fetch this URL" / "screenshot this page" work, the table and script examples above are enough — don't load the reference.

Anti-patterns

  • Don't pip install cloakbrowser system-wide. PEP 668 blocks it on this VPS. Use uv tool install cloakbrowser (already done).
  • Don't run playwright install — CloakBrowser ships its own Chromium and doesn't use Playwright's bundled binaries.
  • Don't import cloakbrowser from the system Python — it lives in the uv tool venv only. Use the venv's Python, or the bundled scripts.
  • Don't enable humanize=True for plain scraping of unprotected sites — it adds latency with no win.
  • Don't keep serve.sh running for a one-shot fetch. The CDP server is for shared, long-lived sessions; fetch.py is faster for one URL.

Troubleshooting

  • Binary not found / first-run hang → cloakbrowser install.
  • ModuleNotFoundError: cloakbrowser → you're on the wrong Python. Use /usr/local/bin/cloakbrowser-python or the bundled scripts (their shebang already points there).
  • Slow startup → the binary checks for updates on launch. Pass auto_update=False to launch() (or set CLOAKBROWSER_AUTO_UPDATE=0) to skip.
  • Still blocked → see references/stealth-knobs.md for the escalation order (humanize → residential proxy + geoip → persistent profile).

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

이 스킬의 문제 신고