mirror of
https://github.com/CloakHQ/CloakBrowser.git
synced 2026-06-23 11:41:46 +02:00
Spawns a separate Chrome process per unique fingerprint seed, all behind
a single port (9222). Clients specify seeds and fingerprint params via
query string on the CDP URL:
connect_over_cdp("http://host:9222?fingerprint=12345&timezone=Asia/Tokyo")
Supports all --fingerprint-* flags as query params, geoip=true for
auto timezone/locale from proxy IP, and proxy= for per-process proxies.
- Rewrite bin/cloakserve from 57-line wrapper to aiohttp CDP multiplexer
- Add ChromePool with per-seed process management and port allocation
- Bidirectional WebSocket proxy for CDP traffic
- URL rewriting for /json/version, /json/list, and WS paths
- Rename _build_args -> build_args, _maybe_resolve_geoip -> maybe_resolve_geoip
- Add aiohttp + websockets to serve optional deps
- Dockerfile installs .[serve] extras
- Add 20 unit tests for cloakserve (param parsing, CLI args, URL rewriting)
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""cloakbrowser — Stealth Chromium that passes every bot detection test.
|
|
|
|
Drop-in Playwright replacement with source-level fingerprint patches.
|
|
|
|
Usage:
|
|
from cloakbrowser import launch
|
|
|
|
browser = launch()
|
|
page = browser.new_page()
|
|
page.goto("https://protected-site.com")
|
|
browser.close()
|
|
"""
|
|
|
|
from .browser import launch, launch_async, launch_context, launch_persistent_context, launch_persistent_context_async, ProxySettings, build_args, maybe_resolve_geoip
|
|
from .config import CHROMIUM_VERSION, get_default_stealth_args
|
|
from .download import binary_info, check_for_update, clear_cache, ensure_binary
|
|
from ._version import __version__
|
|
|
|
# Human-like behavioral layer (optional)
|
|
def __getattr__(name):
|
|
if name == "HumanConfig":
|
|
from .human.config import HumanConfig
|
|
globals()["HumanConfig"] = HumanConfig
|
|
return HumanConfig
|
|
if name == "resolve_human_config":
|
|
from .human.config import resolve_config
|
|
globals()["resolve_human_config"] = resolve_config
|
|
return resolve_config
|
|
raise AttributeError(f"module 'cloakbrowser' has no attribute {name}")
|
|
|
|
__all__ = [
|
|
"launch",
|
|
"launch_async",
|
|
"launch_context",
|
|
"launch_persistent_context",
|
|
"launch_persistent_context_async",
|
|
"ensure_binary",
|
|
"clear_cache",
|
|
"binary_info",
|
|
"check_for_update",
|
|
"CHROMIUM_VERSION",
|
|
"get_default_stealth_args",
|
|
"build_args",
|
|
"maybe_resolve_geoip",
|
|
"ProxySettings",
|
|
"HumanConfig",
|
|
"resolve_human_config",
|
|
"__version__",
|
|
]
|
|
|