Skip to main content

changedetection.io-cloak-browser

Stealth browser fetcher plugin for changedetection.io powered by CloakBrowser.

  • ✅ Bypasses Cloudflare Turnstile, reCAPTCHA v3, FingerprintJS, BrowserScan and more
  • ✅ 33 source-level C++ patches compiled into Chromium — no JS injection tricks
  • ✅ Full browser steps support (same Playwright page API)
  • ✅ Full screenshot and visual selector support
  • ✅ Drop-in replacement — select "CloakBrowser" per-watch in the UI
  • ✅ Proxy support with optional geo-IP auto-detection
  • ✅ Human-like behaviour mode to avoid timing-based detection

Requirements

  • changedetection.io >= 0.54.5
  • Python 3.10+
  • ~200 MB disk space for the CloakBrowser Chromium binary (downloaded automatically on first run)

NOTE: - The biggest red-flag is still your IP address "quality", always use a high quality 'residential IP address' through a SOCKS style proxy - When you sign up using https://brightdata.grsm.io/n0r16zf7eivq BrightData will match any first deposit up to $150 .

Cloak Browser works by downloading a pre-compiled binary chrome-browser from CloakHQ, remember, you are running a black-box piece of software that you do not know what's inside of it.

Quick Start

1. Install the plugin

Docker (docker-compose.yml):

services:
  changedetection:
    environment:
      - EXTRA_PACKAGES=changedetection.io-cloak-browser

Local install:

pip install changedetection.io-cloak-browser
# Download the Chromium binary
python -m cloakbrowser install

2. Select CloakBrowser for a watch

In the changedetection.io UI, open any watch → Edit → Fetch tab → choose "CloakBrowser - Stealth Chromium (anti-bot bypass)" from the fetcher dropdown.

3. (Optional) Configure via environment variables

Variable Default Description
CLOAKBROWSER_HUMANIZE true Enable human-like mouse/keyboard/scroll behaviour
playwright_proxy_server (none) Proxy URL, e.g. http://proxy:8080
playwright_proxy_username (none) Proxy username
playwright_proxy_password (none) Proxy password
PLAYWRIGHT_SERVICE_WORKERS allow allow or block service workers
WEBDRIVER_DELAY_BEFORE_CONTENT_READY 5 Seconds to wait after page load
SCREENSHOT_MAX_HEIGHT 20000 Maximum screenshot height in pixels

Docker Compose Example

version: '3'

services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io:latest
    container_name: changedetection
    volumes:
      - ./datastore:/datastore
    environment:
      - EXTRA_PACKAGES=changedetection.io-cloak-browser
      - CLOAKBROWSER_HUMANIZE=true
      # Optional proxy
      # - playwright_proxy_server=http://proxy.example.com:8080
      # - playwright_proxy_username=user
      # - playwright_proxy_password=pass
    ports:
      - "5000:5000"
    restart: unless-stopped

How It Works

CloakBrowser is a patched Chromium binary with 33 source-level C++ modifications that make it indistinguishable from a real user's Chrome browser. Unlike JavaScript-injection approaches (which detection services can identify), these patches operate at the binary level.

The Python cloakbrowser package wraps the Playwright Python library but connects to the patched binary instead of stock Chromium. This means the page API is 100% identical to Playwright — browser steps, screenshots, visual selectors, and JS execution all work unchanged.

Detection bypass results

Service Stock Playwright CloakBrowser
reCAPTCHA v3 score 0.1 (bot) 0.9 (human)
Cloudflare Turnstile FAIL PASS
FingerprintJS DETECTED PASS
BrowserScan DETECTED NORMAL
navigator.webdriver true false
TLS fingerprint Mismatch Identical to Chrome

Browser Steps

CloakBrowser fully supports all changedetection.io browser steps:

  • Click element / Click element if exists
  • Enter text in field
  • Execute JS
  • Wait for text / Wait for seconds
  • Scroll down
  • Check/uncheck checkbox
  • Select by label
  • Remove elements
  • … and all others

This works because CloakBrowser pages are standard Playwright page objects — the browser steps engine requires no modification.

Troubleshooting

Plugin not loading?

from changedetectionio.pluggy_interface import plugin_manager
print([name for name, _ in plugin_manager.list_name_plugin()])
# Should include: cloak_browser

Binary not downloaded?

python -m cloakbrowser install
python -m cloakbrowser info

Test that the fetcher registers:

from changedetectionio.content_fetchers import available_fetchers
print(available_fetchers())
# Should include: ('html_cloakbrowser', 'CloakBrowser - Stealth Chromium (anti-bot bypass)')

Check for CloakBrowser updates:

python -m cloakbrowser update

License

MIT License — see LICENSE.

CloakBrowser binary: free-to-use, no redistribution. See CloakBrowser BINARY-LICENSE.

Metadata

Release files for changedetection.io-cloak-browser 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for changedetection.io-cloak-browser 0.1.1
File Size Uploaded
changedetection_io_cloak_browser-0.1.1.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for changedetection.io-cloak-browser 0.1.1
File Interpreter ABI Platform
changedetection_io_cloak_browser-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 18.3 kB

Release files / changedetection_io_cloak_browser-0.1.1.tar.gz

Download URL changedetection_io_cloak_browser-0.1.1.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
41300fc8cf6dfeb56eca6a50a5c12242ef4fbab05d67c6962bf4359f8dfac367
BLAKE2b-256 checksum
How to use checksums
11e8507eb348d2fd2df9f28c1aae2e62e4334ad1952e9b091614a6aefc65ebdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.

Transparency log

Release files / changedetection_io_cloak_browser-0.1.1-py3-none-any.whl

Download URL changedetection_io_cloak_browser-0.1.1-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a99bc086794c1e9b44c24c8a6bf01e88cce3cae6b38f3b7e20097cc24fbb21f8
BLAKE2b-256 checksum
How to use checksums
2d56c3ba2eb6dd78ae64df338016b22dbd129f7a7c86b955d7f3b5906abc1548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page