Headed CloakBrowser sessions with proxy, geoip, FPJS recovery, and cookie warm paths.
Session hardening for publishing browsers.
Patched Chromium launch + humanize
Real headed browser on headless VPS
Timezone/locale match exit IP
Cookie warm · avoid incognito penalty
noise=false · windows font metrics
First-run --disable-http2 then reuse
#!/usr/bin/env python3
"""Stealth Session Agent
Hybrids: CloakBrowser + Xvfb DISPLAY + residential/geoip/humanize + persistent profiles
+ cookie warm HTTP/2 + FPJS args recovery
"""
from __future__ import annotations
import json, os, time
from dataclasses import dataclass, asdict
from pathlib import Path
from typing import Literal, Optional
Verdict = Literal["PASS", "FAIL", "INCONCLUSIVE"]
@dataclass
class Check:
name: str
verdict: Verdict
detail: str
evidence: dict
def launch_stealth(profile: Path, proxy: Optional[str], warm: bool = False) -> Check:
try:
from cloakbrowser import launch_persistent_context # type: ignore
except Exception as e:
return Check("import", "INCONCLUSIVE", str(e), {})
args = [
"--fingerprint-noise=false",
"--fingerprint-windows-font-metrics",
]
if warm:
args.append("--disable-http2") # first-run cookie warm only
kwargs = dict(
headless=False, # headed — pair with Xvfb on VPS
geoip=True,
humanize=True,
args=args,
)
if proxy:
kwargs["proxy"] = proxy # prefer socks5:// when available
try:
profile.mkdir(parents=True, exist_ok=True)
ctx = launch_persistent_context(str(profile), **kwargs)
page = ctx.new_page()
# reCAPTCHA tip: native sleep, not wait_for_timeout
page.goto("https://example.com", timeout=45000)
time.sleep(2)
title = page.title()
# optional type() demo for forms later
ctx.close()
return Check("stealth-launch", "PASS", title, {"profile": str(profile), "warm": warm, "proxy": bool(proxy)})
except Exception as e:
return Check("stealth-launch", "FAIL", str(e), {"hint": "fonts? proxy? headed? geoip?"})
def diagnose(proxy: Optional[str]) -> list[Check]:
out: list[Check] = []
if not proxy:
out.append(Check("proxy", "FAIL", "residential proxy missing — datacenter often blocked by reputation", {}))
else:
kind = "socks5" if proxy.startswith("socks5") else "http"
out.append(Check("proxy", "PASS", f"{kind} proxy configured", {"proxy_scheme": kind}))
display = os.environ.get("DISPLAY")
if not display:
out.append(Check("display", "INCONCLUSIVE", "DISPLAY unset — start Xvfb :99", {}))
else:
out.append(Check("display", "PASS", display, {}))
return out
def main():
profile = Path(os.environ.get("PROFILE_DIR", "./profiles/account_a"))
proxy = os.environ.get("PROXY")
warm = os.environ.get("WARM_HTTP2", "0") == "1"
checks = diagnose(proxy)
checks.append(launch_stealth(profile, proxy, warm=warm))
fails = [c for c in checks if c.verdict == "FAIL"]
inc = [c for c in checks if c.verdict == "INCONCLUSIVE"]
status = "FAIL" if fails else ("INCONCLUSIVE" if inc else "PASS")
report = {"status": status, "all_pass": status == "PASS", "checks": [asdict(c) for c in checks]}
print(json.dumps(report, indent=2))
Path(os.environ.get("REPORT", "stealth_report.json")).write_text(json.dumps(report, indent=2))
raise SystemExit(0 if report["all_pass"] else 2)
if __name__ == "__main__":
main()#!/usr/bin/env bash
set -euo pipefail
# Stealth Session Agent bootstrap
sudo apt-get install -y xvfb fonts-liberation fonts-dejavu 2>/dev/null || true
# Install Windows fonts if FPJS font metrics required (manual step on many VPS)
pip install -U cloakbrowser
playwright install-deps chromium || true
# Virtual display for headed mode (DataDome / Turnstile safer)
if ! pgrep -f "Xvfb :99" >/dev/null 2>&1; then
Xvfb :99 -screen 0 1920x1080x24 &
fi
export DISPLAY=:99
export PROFILE_DIR="${PROFILE_DIR:-$HOME/manager-workspace/profiles/account_a}"
# export PROXY="socks5://user:pass@residential:1080"
# export WARM_HTTP2=1 # first visit only
python3 /var/www/manager.addict.best/agents/stealth/stealth_agent.pyDiagnose and open a stealth persistent context for account_a. Checklist: PROXY residential, DISPLAY via Xvfb, geoip+humanize+headed, FPJS args, warm HTTP/2 only if first session. Emit three-state JSON.