stealth-browser-launch

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Stealth Browser Launch

隐身浏览器启动

Launch a patched Chromium binary with C++ source-level fingerprint modifications that bypass anti-bot detection. The binary spoofs canvas, WebGL, audio, GPU, screen, WebRTC, network timing, and automation signals at the binary level — not via JavaScript injection or config patches that break with Chrome updates. Passes Cloudflare Turnstile, reCAPTCHA v3 (0.9 score), FingerprintJS, BrowserScan, and 30+ detection sites.
启动经过C++源码级指纹修改的Chromium二进制文件,绕过反机器人检测。该二进制文件在二进制层面伪造canvas、WebGL、音频、GPU、屏幕、WebRTC、网络时序和自动化信号——而非通过JavaScript注入或会随Chrome更新失效的配置补丁。可通过Cloudflare Turnstile、reCAPTCHA v3(0.9分)、FingerprintJS、BrowserScan及30+个检测站点的验证。

When to Use

使用场景

  • Target blocks curl/httpx/nuclei with Cloudflare, Akamai, DataDome, or Kasada.
  • Need full browser JavaScript execution for form submission, login, or XSS testing.
  • Target returns 403 on all unauthenticated requests even with proper headers.
  • Need to access reCAPTCHA-protected endpoints without solving CAPTCHAs.
  • Running automated recon behind residential proxies — stealth browser prevents IP+UA correlation.
  • 目标站点使用Cloudflare、Akamai、DataDome或Kasada阻止curl/httpx/nuclei请求。
  • 需要完整的浏览器JavaScript执行环境来完成表单提交、登录或XSS测试。
  • 即使携带正确请求头,未认证请求仍返回403状态码。
  • 需要访问受reCAPTCHA保护的端点且无需手动解决验证码。
  • 通过住宅代理运行自动化侦察——隐身浏览器可防止IP+UA关联。

Prerequisites

前置条件

  • terminal
    with python3 and pip.
  • playwright
    installed:
    pip install playwright && playwright install-deps chromium
    .
  • Residential proxy (datacenter IPs are reputation-blocked regardless of browser fingerprint).
  • Optional:
    cloakbrowser[geoip]
    for automatic timezone/locale resolution from proxy exit IP.
  • 装有python3和pip的
    terminal
    。
  • 已安装
    playwright
    :
    pip install playwright && playwright install-deps chromium
    。
  • 住宅代理(数据中心IP无论浏览器指纹如何都会因信誉问题被拦截)。
  • 可选:
    cloakbrowser[geoip]
    用于从代理出口IP自动解析时区/区域设置。

Quick Start

快速开始

bash
pip install cloakbrowser
python3 -c "
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
page.goto('https://target.com')
print(page.title())
browser.close()
"
bash
pip install cloakbrowser
python3 -c "
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
page.goto('https://target.com')
print(page.title())
browser.close()
"

Procedure

操作步骤

Phase 1 — Basic Stealth Launch

阶段1 — 基础隐身启动

The binary auto-generates a random fingerprint seed per launch. No flags needed for basic stealth:
python
from cloakbrowser import launch

browser = launch(
    headless=True,
    proxy="http://user:pass@residential-proxy:port",
    geoip=True,    # auto-detect timezone/locale from proxy exit IP
)
page = browser.new_page()
page.goto("https://target.com")
每次启动时,二进制文件会自动生成随机指纹种子。基础隐身模式无需额外参数:
python
from cloakbrowser import launch

browser = launch(
    headless=True,
    proxy="http://user:pass@residential-proxy:port",
    geoip=True,    # 从代理出口IP自动检测时区/区域设置
)
page = browser.new_page()
page.goto("https://target.com")

Standard Playwright API from here

后续使用标准Playwright API

page.locator("input[name='username']").fill("test") page.locator("button[type='submit']").click() browser.close()
undefined
page.locator("input[name='username']").fill("test") page.locator("button[type='submit']").click() browser.close()
undefined

Phase 2 — Persistent Identity

阶段2 — 持久身份标识

Use a fixed fingerprint seed when revisiting the same target to appear as a returning visitor:
python
browser = launch(
    proxy="http://user:pass@residential-proxy:port",
    geoip=True,
    args=["--fingerprint=42069"],  # fixed seed = same fingerprint every launch
)
访问同一目标站点时,使用固定指纹种子以模拟回头访客:
python
browser = launch(
    proxy="http://user:pass@residential-proxy:port",
    geoip=True,
    args=["--fingerprint=42069"],  # 固定种子 = 每次启动使用相同指纹
)

Phase 3 — Headed Mode for Maximum Stealth

阶段3 — 带界面模式实现最高隐身性

Some sites detect headless even with C++ patches. Run headed with a virtual display:
bash
undefined
部分站点即使经过C++补丁仍能检测无头模式。使用虚拟显示器运行带界面模式:
bash
undefined

Start virtual display

启动虚拟显示器

Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99

```python
browser = launch(
    headless=False,  # real rendering
    proxy="http://residential-proxy:port",
    geoip=True,
    humanize=True,   # human-like mouse/keyboard/scroll
)
Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99

```python
browser = launch(
    headless=False,  # 真实渲染
    proxy="http://residential-proxy:port",
    geoip=True,
    humanize=True,   # 类人鼠标/键盘/滚动行为
)

Phase 4 — Fingerprint Customization

阶段4 — 指纹自定义

Override specific fingerprint values to match a target environment:
python
browser = launch(stealth_args=False, args=[
    "--fingerprint=42069",
    "--fingerprint-platform=windows",
    "--fingerprint-gpu-vendor=NVIDIA Corporation",
    "--fingerprint-gpu-renderer=NVIDIA GeForce RTX 3060/PCIe/SSE2",
    "--fingerprint-hardware-concurrency=16",
    "--fingerprint-device-memory=16",
    "--fingerprint-screen-width=2560",
    "--fingerprint-screen-height=1440",
    "--fingerprint-timezone=America/Sao_Paulo",
    "--fingerprint-locale=pt-BR",
    "--fingerprint-webrtc-ip=auto",
    "--fingerprint-noise=false",  # disable noise for FingerprintJS ML bypass
])
覆盖特定指纹值以匹配目标环境:
python
browser = launch(stealth_args=False, args=[
    "--fingerprint=42069",
    "--fingerprint-platform=windows",
    "--fingerprint-gpu-vendor=NVIDIA Corporation",
    "--fingerprint-gpu-renderer=NVIDIA GeForce RTX 3060/PCIe/SSE2",
    "--fingerprint-hardware-concurrency=16",
    "--fingerprint-device-memory=16",
    "--fingerprint-screen-width=2560",
    "--fingerprint-screen-height=1440",
    "--fingerprint-timezone=America/Sao_Paulo",
    "--fingerprint-locale=pt-BR",
    "--fingerprint-webrtc-ip=auto",
    "--fingerprint-noise=false",  # 禁用噪声以绕过FingerprintJS机器学习检测
])

Phase 5 — Persistent Profile

阶段5 — 持久化配置文件

Maintain cookies and localStorage across sessions to bypass "first-visit" challenges:
python
from cloakbrowser import launch_persistent_context

ctx = launch_persistent_context(
    "./target-profile",
    headless=False,
    proxy="http://residential-proxy:port",
    geoip=True,
)
page = ctx.new_page()
page.goto("https://target.com")
跨会话保留cookie和localStorage以绕过“首次访问”验证:
python
from cloakbrowser import launch_persistent_context

ctx = launch_persistent_context(
    "./target-profile",
    headless=False,
    proxy="http://residential-proxy:port",
    geoip=True,
)
page = ctx.new_page()
page.goto("https://target.com")

Session persists across restarts

会话在重启后仍保持

ctx.close()
undefined
ctx.close()
undefined

Phase 6 — Multi-Identity via CDP Multiplexer

阶段6 — 通过CDP多路复用器实现多身份标识

Run multiple browser identities from a single container using cloakserve:
bash
docker run -d --name cloak -p 127.0.0.1:9222:9222 cloakhq/cloakbrowser cloakserve
python
from playwright.sync_api import sync_playwright

pw = sync_playwright().start()
使用cloakserve在单个容器中运行多个浏览器身份:
bash
docker run -d --name cloak -p 127.0.0.1:9222:9222 cloakhq/cloakbrowser cloakserve
python
from playwright.sync_api import sync_playwright

pw = sync_playwright().start()

Each unique fingerprint seed spawns separate Chrome process with independent identity

每个唯一指纹种子都会启动独立身份的Chrome进程

b1 = pw.chromium.connect_over_cdp("http://localhost:9222?fingerprint=11111") b2 = pw.chromium.connect_over_cdp("http://localhost:9222?fingerprint=22222")
b1 = pw.chromium.connect_over_cdp("http://localhost:9222?fingerprint=11111") b2 = pw.chromium.connect_over_cdp("http://localhost:9222?fingerprint=22222")

Full identity control via query params

通过查询参数完全控制身份

b3 = pw.chromium.connect_over_cdp( "http://localhost:9222?fingerprint=33333" "&timezone=America/New_York&locale=en-US&platform=windows" "&hardware-concurrency=4&device-memory=8" )
b3 = pw.chromium.connect_over_cdp( "http://localhost:9222?fingerprint=33333" "&timezone=America/New_York&locale=en-US&platform=windows" "&hardware-concurrency=4&device-memory=8" )

Each browser has independent cookies, localStorage, canvas noise

每个浏览器拥有独立的cookie、localStorage和canvas噪声

undefined
undefined

Phase 7 — Anti-Bot Font Setup

阶段7 — 反机器人字体设置

For aggressive sites (Kasada, Akamai) that check canvas emoji rendering:
bash
apt install -y fonts-noto-color-emoji fonts-freefont-ttf fonts-unifont \
    fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf
For CreepJS font enumeration evasion, install Windows fonts:
bash
undefined
针对检查canvas emoji渲染的严格站点(Kasada、Akamai):
bash
apt install -y fonts-noto-color-emoji fonts-freefont-ttf fonts-unifont \
    fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf
为规避CreepJS字体枚举,安装Windows字体:
bash
undefined

Copy from Windows machine: C:\Windows\Fonts\

从Windows机器复制:C:\Windows\Fonts\

mkdir -p ~/.local/share/fonts/windows cp /path/to/windows/fonts/SegoeUI*.ttf ~/.local/share/fonts/windows/ fc-cache -f
mkdir -p ~/.local/share/fonts/windows cp /path/to/windows/fonts/SegoeUI*.ttf ~/.local/share/fonts/windows/ fc-cache -f

Then launch with:

然后启动浏览器:

browser = launch(args=["--fingerprint-fonts-dir=/home/user/.local/share/fonts/windows"])
undefined
browser = launch(args=["--fingerprint-fonts-dir=/home/user/.local/share/fonts/windows"])
undefined

Fingerprint Flag Reference

指纹参数参考

FlagDefaultWhat it controls
--fingerprint=SEED
Random 5-digitMaster seed for canvas/WebGL/audio/fonts
--fingerprint-platform
windows
/
macos
navigator.platform
, UA OS, GPU pool
--fingerprint-gpu-vendor
AutoWebGL UNMASKED_VENDOR_WEBGL
--fingerprint-gpu-renderer
AutoWebGL UNMASKED_RENDERER_WEBGL
--fingerprint-hardware-concurrency
8
navigator.hardwareConcurrency
--fingerprint-device-memory
8
navigator.deviceMemory
--fingerprint-screen-width
1920/1440Screen width
--fingerprint-screen-height
1080/900Screen height
--fingerprint-timezone
—IANA timezone
--fingerprint-locale
—BCP 47 locale
--fingerprint-webrtc-ip
—WebRTC ICE IP (
auto
for proxy exit IP)
--fingerprint-noise=false
trueDisable canvas/WebGL/audio noise
--fingerprint-fonts-dir
—Target platform fonts path
--fingerprint-windows-font-metrics
—Align font metrics to Windows (v148+)
--fingerprint-storage-quota
AutoStorage quota in MB
--fingerprint-taskbar-height
48/95/0Taskbar height spoofing
参数默认值控制内容
--fingerprint=SEED
随机5位数canvas/WebGL/音频/字体的主种子
--fingerprint-platform
windows
/
macos
navigator.platform
、UA操作系统、GPU池
--fingerprint-gpu-vendor
自动WebGL UNMASKED_VENDOR_WEBGL
--fingerprint-gpu-renderer
自动WebGL UNMASKED_RENDERER_WEBGL
--fingerprint-hardware-concurrency
8
navigator.hardwareConcurrency
--fingerprint-device-memory
8
navigator.deviceMemory
--fingerprint-screen-width
1920/1440屏幕宽度
--fingerprint-screen-height
1080/900屏幕高度
--fingerprint-timezone
—IANA时区
--fingerprint-locale
—BCP 47区域设置
--fingerprint-webrtc-ip
—WebRTC ICE IP(
auto
表示使用代理出口IP)
--fingerprint-noise=false
true禁用canvas/WebGL/音频噪声
--fingerprint-fonts-dir
—目标平台字体路径
--fingerprint-windows-font-metrics
—对齐字体指标至Windows(v148+)
--fingerprint-storage-quota
自动存储配额(MB)
--fingerprint-taskbar-height
48/95/0任务栏高度伪造

Pitfalls

注意事项

  • Datacenter IPs get blocked regardless of browser fingerprint. Always use residential proxies.
  • page.wait_for_timeout()
    leaks CDP traffic that reCAPTCHA detects.
    Use
    time.sleep()
    instead.
  • Puppeteer sends more CDP traffic than Playwright. Use Playwright for reCAPTCHA-heavy targets.
  • Missing fonts cause canvas hash mismatches on Kasada/Akamai. Install the font packages listed in Phase 7.
  • --fingerprint-noise=false
    can cause ML-based detection on FingerprintJS.
    Only disable noise when specifically blocked by it.
  • Headless mode can be detected even with C++ patches. Use headed mode (
    headless=False
    ) for maximum stealth on aggressive sites.
  • Binary auto-updates are cached ~24h. Pin with
    browser_version=
    if you need reproducibility.
  • 数据中心IP无论浏览器指纹如何都会被拦截。 始终使用住宅代理。
  • page.wait_for_timeout()
    会泄露reCAPTCHA可检测的CDP流量。
    改用
    time.sleep()
    。
  • Puppeteer发送的CDP流量比Playwright多。 针对大量使用reCAPTCHA的目标,使用Playwright。
  • 缺少字体会导致Kasada/Akamai上的canvas哈希不匹配。 安装阶段7中列出的字体包。
  • --fingerprint-noise=false
    可能会触发FingerprintJS的机器学习检测。
    仅在被该检测拦截时禁用噪声。
  • 即使经过C++补丁,无头模式仍可能被检测到。 针对严格站点,使用带界面模式(
    headless=False
    )以实现最高隐身性。
  • 二进制文件自动更新缓存约24小时。 如果需要可复现性,使用
    browser_version=
    固定版本。

Verification

验证方法

  1. Test against
    https://browserscan.net
    — all 4 bot checks should show NORMAL.
  2. Test against
    https://demo.fingerprint.com/playground
    — should not show "nodriver" or "bot" detection.
  3. Test against reCAPTCHA v3:
    https://antcpt.com/eng/information/demo-form/recaptcha-3-test-score.html
    — score should be ≥ 0.7.
  4. Test against
    https://deviceandbrowserinfo.com
    —
    isBot
    should be false with 0 true flags.
  5. Verify
    navigator.webdriver
    is
    false
    with
    page.evaluate("navigator.webdriver")
    .
  1. 在
    https://browserscan.net
    测试——所有4项机器人检测应显示NORMAL。
  2. 在
    https://demo.fingerprint.com/playground
    测试——不应显示“nodriver”或“bot”检测结果。
  3. 测试reCAPTCHA v3:
    https://antcpt.com/eng/information/demo-form/recaptcha-3-test-score.html
    ——分数应≥0.7。
  4. 在
    https://deviceandbrowserinfo.com
    测试——
    isBot
    应为false,且无true标记。
  5. 通过
    page.evaluate("navigator.webdriver")
    验证
    navigator.webdriver
    为
    false
    。

Related Skills

相关技能

  • humanize-automation
    — Human-like mouse/keyboard/scroll for behavioral bypass.
  • tls-fingerprint-impersonation
    — TLS/JA4 fingerprint spoofing at the HTTP client level.
  • http2-header-impersonation
    — Browser-specific HTTP/2 pseudo-header ordering and SETTINGS frames.
  • humanize-automation
    — 类人鼠标/键盘/滚动行为,用于行为绕过。
  • tls-fingerprint-impersonation
    — 在HTTP客户端层面伪造TLS/JA4指纹。
  • http2-header-impersonation
    — 浏览器特定的HTTP/2伪头排序和SETTINGS帧。