From ee346a6a5764bb4d5e92d4991151b1c60d435383 Mon Sep 17 00:00:00 2001 From: CloakHQ Date: Tue, 28 Apr 2026 05:12:37 +0200 Subject: [PATCH] =?UTF-8?q?release:=20v0.3.26=20=E2=80=94=20Windows=20x64?= =?UTF-8?q?=20upgraded=20to=20Chromium=20146,=20SOCKS5=20credential=20enco?= =?UTF-8?q?ding,=20Lambda=20integration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 ++++++++++ README.md | 12 ++++++------ cloakbrowser/_version.py | 2 +- cloakbrowser/config.py | 2 +- js/package.json | 2 +- js/src/config.ts | 2 +- js/tests/launch.test.ts | 20 +++++++++++++------- js/tests/update.test.ts | 10 ++++++++-- 8 files changed, 41 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ce200..ab93a48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,16 @@ Changes are tagged: **[wrapper]** for Python/JS wrapper, **[binary]** for Chromi ## [Unreleased] +## [0.3.26] — 2026-04-28 + +- **[binary]** Windows x64 upgraded to Chromium 146.0.7680.177.4 — 57 source-level fingerprint patches (up from 33 on 145.0.7632.159.7), now matches Linux. Includes all binary improvements from 0.3.18–0.3.25: native SOCKS5 proxy with UDP ASSOCIATE (QUIC/HTTP3), WebRTC IP spoofing, proxy signal removal, CDP input stealth, storage quota normalization, WebAuthn/AAC/window position patches, WebGL and canvas consistency fixes, expanded GPU model database +- **[wrapper]** Auto URL-encode SOCKS5 credentials containing special characters in string URLs (#157) +- **[wrapper]** AWS Lambda integration example with cold-start hardening and handler-side retry orchestration (#177, thanks [@AlexTech314](https://github.com/AlexTech314)) +- **[docker]** Add emoji and extended font packages to resolve Kasada/Akamai canvas fingerprint blocks (#179) +- **[docs]** Add Font Setup on Linux section to README (#179) +- **[docs]** Add Deployment Integrations section to README (#177) +- **[meta]** Bump GitHub Actions dependencies (#178) + ## [0.3.25] — 2026-04-16 - **[wrapper]** Python: add `launch_context_async()` — async counterpart to `launch_context()`. Returns a BrowserContext with all kwargs forwarded to `browser.new_context()`, enabling `storage_state`, `permissions`, `extra_http_headers`, etc. without a persistent profile folder. Closes #141. diff --git a/README.md b/README.md index 39a882a..30073cc 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ Open [http://localhost:8080](http://localhost:8080). Create a profile. Click **L --- -## Latest: v0.3.25 (Chromium 146.0.7680.177.3) +## Latest: v0.3.26 (Chromium 146.0.7680.177.4) - **`launch_context_async()`** — async counterpart to `launch_context()`. Forwards kwargs to `browser.new_context()` for `storage_state`, `permissions`, `extra_http_headers` without a persistent profile folder. - **JS `contextOptions` escape hatch** — forward arbitrary options (including `storageState`) to Playwright's `newContext()` from `launchContext()` / `launchPersistentContext()`. @@ -739,11 +739,11 @@ browser = await launch_async(args=["--remote-debugging-port=9242"]) | Platform | Chromium | Patches | Status | |---|---|---|---| -| Linux x86_64 | 146 | 49 | ✅ Latest | -| Linux arm64 (RPi, Graviton) | 146 | 49 | ✅ Latest | +| Linux x86_64 | 146 | 57 | ✅ Latest | +| Linux arm64 (RPi, Graviton) | 146 | 57 | ✅ Latest | | macOS arm64 (Apple Silicon) | 145 | 26 | ✅ | | macOS x86_64 (Intel) | 145 | 26 | ✅ | -| Windows x86_64 | 145 | 48 | ✅ | +| Windows x86_64 | 146 | 57 | ✅ Latest | The wrapper auto-downloads the correct binary for your platform. @@ -1142,9 +1142,9 @@ A: Yes. Pass `proxy="http://user:pass@host:port"` or `proxy="socks5://user:pass@ | Feature | Status | |---------|--------| -| Linux x64 — Chromium 146 (49 patches) | ✅ Released | +| Linux x64 — Chromium 146 (57 patches) | ✅ Released | | macOS arm64/x64 — Chromium 145 (26 patches) | ✅ Released | -| Windows x64 — Chromium 145 (33 patches) | ✅ Released | +| Windows x64 — Chromium 146 (57 patches) | ✅ Released | | JavaScript/Puppeteer + Playwright support | ✅ Released | | Fingerprint rotation per session | ✅ Released | | Built-in proxy rotation | 📋 Planned | diff --git a/cloakbrowser/_version.py b/cloakbrowser/_version.py index 0af2a4a..90c13ab 100644 --- a/cloakbrowser/_version.py +++ b/cloakbrowser/_version.py @@ -1 +1 @@ -__version__ = "0.3.25" +__version__ = "0.3.26" diff --git a/cloakbrowser/config.py b/cloakbrowser/config.py index 527c816..7158e52 100644 --- a/cloakbrowser/config.py +++ b/cloakbrowser/config.py @@ -22,7 +22,7 @@ PLATFORM_CHROMIUM_VERSIONS: dict[str, str] = { "linux-arm64": "146.0.7680.177.3", "darwin-arm64": "145.0.7632.109.2", "darwin-x64": "145.0.7632.109.2", - "windows-x64": "145.0.7632.159.7", + "windows-x64": "146.0.7680.177.4", } # --------------------------------------------------------------------------- diff --git a/js/package.json b/js/package.json index 801af88..161bf1d 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "cloakbrowser", - "version": "0.3.25", + "version": "0.3.26", "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 f50d0ca..beb5151 100644 --- a/js/src/config.ts +++ b/js/src/config.ts @@ -34,7 +34,7 @@ export const PLATFORM_CHROMIUM_VERSIONS: Record = { "linux-arm64": "146.0.7680.177.3", "darwin-arm64": "145.0.7632.109.2", "darwin-x64": "145.0.7632.109.2", - "windows-x64": "145.0.7632.159.7", + "windows-x64": "146.0.7680.177.4", }; // --------------------------------------------------------------------------- diff --git a/js/tests/launch.test.ts b/js/tests/launch.test.ts index 0980ddf..43a8fde 100644 --- a/js/tests/launch.test.ts +++ b/js/tests/launch.test.ts @@ -4,14 +4,20 @@ import { DEFAULT_VIEWPORT, getChromiumVersion } from "../src/config.js"; describe("binaryInfo", () => { it("returns correct structure", () => { - const info = binaryInfo(); + const orig = process.env.CLOAKBROWSER_CACHE_DIR; + process.env.CLOAKBROWSER_CACHE_DIR = `/tmp/cloakbrowser-test-${Date.now()}`; + try { + const info = binaryInfo(); - expect(info.version).toBe(getChromiumVersion()); - expect(info.platform).toMatch(/^(linux|darwin|windows)-(x64|arm64)$/); - expect(info.binaryPath).toBeTruthy(); - expect(typeof info.installed).toBe("boolean"); - expect(info.cacheDir).toContain("cloakbrowser"); - expect(info.downloadUrl).toContain(".tar.gz"); + expect(info.version).toBe(getChromiumVersion()); + expect(info.platform).toMatch(/^(linux|darwin|windows)-(x64|arm64)$/); + expect(info.binaryPath).toBeTruthy(); + expect(typeof info.installed).toBe("boolean"); + expect(info.cacheDir).toContain("cloakbrowser"); + } finally { + if (orig) process.env.CLOAKBROWSER_CACHE_DIR = orig; + else delete process.env.CLOAKBROWSER_CACHE_DIR; + } }); }); diff --git a/js/tests/update.test.ts b/js/tests/update.test.ts index 3cdec95..702de28 100644 --- a/js/tests/update.test.ts +++ b/js/tests/update.test.ts @@ -320,8 +320,14 @@ describe("download fallback", () => { describe("effective version", () => { it("returns platform version when no marker exists", () => { - // Default behavior — no marker file in test environment - expect(getEffectiveVersion()).toBe(getChromiumVersion()); + const orig = process.env.CLOAKBROWSER_CACHE_DIR; + process.env.CLOAKBROWSER_CACHE_DIR = `/tmp/cloakbrowser-test-${Date.now()}`; + try { + expect(getEffectiveVersion()).toBe(getChromiumVersion()); + } finally { + if (orig) process.env.CLOAKBROWSER_CACHE_DIR = orig; + else delete process.env.CLOAKBROWSER_CACHE_DIR; + } }); });