diff --git a/.gitignore b/.gitignore index 0bba625..d1be04d 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,8 @@ debug publish-docker.sh captures 20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-*.txt + +# Beads / Dolt files (added by bd init) +.dolt/ +*.db +.beads-credential-key diff --git a/CHANGELOG.md b/CHANGELOG.md index ae8c071..f18e697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ Changes are tagged: **[wrapper]** for Python/JS wrapper, **[binary]** for Chromi --- +## [0.3.22] — 2026-04-09 + +- **[binary]** Upgrade Linux x64 build to Chromium 146.0.7680.177.1 — 49 source-level C++ patches (up from 48), rebased from 145.0.7632.x + ## [0.3.21] — 2026-04-07 - **[wrapper]** Remove dead `--disable-blink-features=AutomationControlled` flag -- binary patch 009 already handles `navigator.webdriver` at source level diff --git a/README.md b/README.md index 12e8296..2589615 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Drop-in Playwright/Puppeteer replacement for Python and JavaScript.
Same API, same code — just swap the import. 3 lines of code, 30 seconds to unblock.

-- **48 source-level C++ patches** — canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals, CDP input behavior +- **49 source-level C++ patches** — canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals, CDP input behavior - **`humanize=True`** — human-like mouse curves, keyboard timing, and scroll patterns. One flag, behavioral detection passes - **0.9 reCAPTCHA v3 score** — human-level, server-verified - **Passes Cloudflare Turnstile**, FingerprintJS, BrowserScan — tested against 30+ detection sites @@ -128,9 +128,10 @@ Open [http://localhost:8080](http://localhost:8080). Create a profile. Click **L --- -## Latest: v0.3.20 (Chromium 145.0.7632.159.9) +## Latest: v0.3.22 (Chromium 146.0.7680.177.1) -- **48 fingerprint patches** (Linux x64) — 6 new patches covering WebRTC IP spoofing, proxy signal removal, and network timing normalization +- **Chromium 146 upgrade** — rebased all patches from 145.0.7632.x to 146.0.7680.177 +- **49 fingerprint patches** (Linux x64) — 1 new patch, all existing patches carried forward - **WebRTC IP spoofing** — `--fingerprint-webrtc-ip=auto` resolves your proxy's exit IP and spoofs WebRTC ICE candidates. Auto-injected when using `geoip=True` (no extra network call) - **Proxy signal removal** — DNS/connect/SSL timing zeroed, proxy cache headers stripped, Proxy-Connection header leak removed - **`cloakserve` CDP multiplexer** — rewritten as a multi-connection CDP proxy with per-connection fingerprint seeds @@ -154,7 +155,7 @@ CloakBrowser doesn't solve CAPTCHAs — it prevents them from appearing. No CAPT ## Test Results -All tests verified against live detection services. Last tested: Mar 2026 (Chromium 145). +All tests verified against live detection services. Last tested: Apr 2026 (Chromium 146). | Detection Service | Stock Playwright | CloakBrowser | Notes | |---|---|---|---| @@ -169,7 +170,7 @@ All tests verified against live detection services. Last tested: Mar 2026 (Chrom | `navigator.webdriver` | `true` | **`false`** | Source-level patch | | `navigator.plugins.length` | 0 | **5** | Real plugin list | | `window.chrome` | `undefined` | **`object`** | Present like real Chrome | -| UA string | `HeadlessChrome` | **`Chrome/145.0.0.0`** | No headless leak | +| UA string | `HeadlessChrome` | **`Chrome/146.0.0.0`** | No headless leak | | CDP detection | Detected | **Not detected** | `isAutomatedWithCDP: false` | | TLS fingerprint | Mismatch | **Identical to Chrome** | ja3n/ja4/akamai match | | | | **Tested against 30+ detection sites** | | @@ -218,11 +219,11 @@ All tests verified against live detection services. Last tested: Mar 2026 (Chrom CloakBrowser is a thin wrapper (Python + JavaScript) around a custom-built Chromium binary: 1. **You install** → `pip install cloakbrowser` or `npm install cloakbrowser` -2. **First launch** → binary auto-downloads for your platform (Chromium 145) +2. **First launch** → binary auto-downloads for your platform (Chromium 146) 3. **Every launch** → Playwright or Puppeteer starts with our binary + stealth args 4. **You write code** → standard Playwright/Puppeteer API, nothing new to learn -The binary includes 48 source-level patches covering canvas, WebGL, audio, fonts, GPU, screen properties, WebRTC, network timing, hardware reporting, automation signal removal, and CDP input behavior mimicking. +The binary includes 49 source-level patches covering canvas, WebGL, audio, fonts, GPU, screen properties, WebRTC, network timing, hardware reporting, automation signal removal, and CDP input behavior mimicking. These are compiled into the Chromium binary — not injected via JavaScript, not set via flags. @@ -369,7 +370,7 @@ from cloakbrowser import binary_info, clear_cache, ensure_binary # Check binary installation status print(binary_info()) -# {'version': '145.0.7632.159.2', 'platform': 'linux-x64', 'installed': True, ...} +# {'version': '146.0.7680.177.1', 'platform': 'linux-x64', 'installed': True, ...} # Force re-download clear_cache() @@ -652,7 +653,7 @@ browser = await launch_async(args=["--remote-debugging-port=9242"]) | Platform | Chromium | Patches | Status | |---|---|---|---| -| Linux x86_64 | 145 | 48 | ✅ Latest | +| Linux x86_64 | 146 | 49 | ✅ Latest | | Linux arm64 (RPi, Graviton) | 145 | 48 | ✅ | | macOS arm64 (Apple Silicon) | 145 | 26 | ✅ | | macOS x86_64 (Intel) | 145 | 26 | ✅ | @@ -917,9 +918,9 @@ export CLOAKBROWSER_BINARY_PATH=/path/to/your/chrome Install a specific wrapper version to downgrade both the wrapper and the binary it downloads: ```bash -pip install cloakbrowser==0.3.11 # Python -npm install cloakbrowser@0.3.11 # JavaScript -docker pull cloakhq/cloakbrowser:0.3.11 # Docker +pip install cloakbrowser==0.3.21 # Python +npm install cloakbrowser@0.3.21 # JavaScript +docker pull cloakhq/cloakbrowser:0.3.21 # Docker ``` Each wrapper version pins its own binary version, so downgrading the wrapper automatically gets you the matching binary on next launch. @@ -1015,7 +1016,7 @@ A: Yes. Pass `proxy="http://user:pass@host:port"` to `launch()`. | Feature | Status | |---------|--------| -| Linux x64 — Chromium 145 (48 patches) | ✅ Released | +| Linux x64 — Chromium 146 (49 patches) | ✅ Released | | macOS arm64/x64 — Chromium 145 (26 patches) | ✅ Released | | Windows x64 — Chromium 145 (33 patches) | ✅ Released | | JavaScript/Puppeteer + Playwright support | ✅ Released | @@ -1039,7 +1040,7 @@ All releases are signed for supply chain verification. ```bash # Verify GPG signature (binary release tag) gpg --keyserver keyserver.ubuntu.com --recv-keys C60C0DDC9D0DE2DD -git verify-tag chromium-v145.0.7632.159.9 +git verify-tag chromium-v146.0.7680.177.1 # Verify GitHub binary attestation (Sigstore) gh attestation verify cloakbrowser-linux-x64.tar.gz --repo CloakHQ/cloakbrowser diff --git a/cloakbrowser/_version.py b/cloakbrowser/_version.py index 443462b..c3aa137 100644 --- a/cloakbrowser/_version.py +++ b/cloakbrowser/_version.py @@ -1 +1 @@ -__version__ = "0.3.21" +__version__ = "0.3.22" diff --git a/cloakbrowser/config.py b/cloakbrowser/config.py index d7bab9a..463994a 100644 --- a/cloakbrowser/config.py +++ b/cloakbrowser/config.py @@ -15,10 +15,10 @@ from ._version import __version__ # CHROMIUM_VERSION is the latest across all platforms (for display/reference). # Use get_chromium_version() for the current platform's actual version. # --------------------------------------------------------------------------- -CHROMIUM_VERSION = "145.0.7632.159.9" +CHROMIUM_VERSION = "146.0.7680.177.1" PLATFORM_CHROMIUM_VERSIONS: dict[str, str] = { - "linux-x64": "145.0.7632.159.9", + "linux-x64": "146.0.7680.177.1", "linux-arm64": "145.0.7632.159.7", "darwin-arm64": "145.0.7632.109.2", "darwin-x64": "145.0.7632.109.2", diff --git a/js/package.json b/js/package.json index 7e93c61..bd89b46 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "cloakbrowser", - "version": "0.3.21", + "version": "0.3.22", "description": "Stealth Chromium that passes every bot detection test. Drop-in Playwright/Puppeteer replacement with source-level fingerprint patches.", "type": "module", "main": "dist/index.js", diff --git a/js/src/config.ts b/js/src/config.ts index 627e4de..f433e88 100644 --- a/js/src/config.ts +++ b/js/src/config.ts @@ -27,10 +27,10 @@ export { WRAPPER_VERSION }; // CHROMIUM_VERSION is the latest across all platforms (for display/reference). // Use getChromiumVersion() for the current platform's actual version. // --------------------------------------------------------------------------- -export const CHROMIUM_VERSION = "145.0.7632.159.9"; +export const CHROMIUM_VERSION = "146.0.7680.177.1"; export const PLATFORM_CHROMIUM_VERSIONS: Record = { - "linux-x64": "145.0.7632.159.9", + "linux-x64": "146.0.7680.177.1", "linux-arm64": "145.0.7632.159.7", "darwin-arm64": "145.0.7632.109.2", "darwin-x64": "145.0.7632.109.2",