A stealthy Chromium remote-control tool using DevTools Protocol with dynamic JS injection to evade bot detection.
Project description
Zealium
Zealium is a stealthy Chromium remote-control toolkit leveraging the Chrome DevTools Protocol with dynamic JavaScript injection to evade bot detection. It provides multi-layered anti-fingerprinting patches, human-like interaction simulation, and robust stealth capabilities for advanced browser automation.
Features
-
Stealth Browser Automation: Control Chromium-based browsers (Chrome, Edge) remotely with powerful stealth techniques to bypass modern bot detection systems and CAPTCHAs.
-
Dynamic JS Injection: Inject custom JavaScript patches at runtime to spoof browser fingerprints, including canvas, WebGL, audio, navigator properties, media devices, WebRTC, permissions, and more.
-
Human Behavior Simulation: Simulate natural mouse movements, clicks, scrolling, and typing with randomized, non-linear patterns, hesitations, and noise to mimic real user interactions.
-
Cross-Platform Support: Compatible with Windows, macOS, and Linux environments, detecting browser executables and managing user profiles seamlessly.
-
Customizable Stealth Levels: Choose from multiple preset stealth configurations (
low,normal,strict), or supply your own patch methods for tailored stealth strategies.
Installation
Requires Python 3.11+ and a Chromium-based browser installed.
pip install zealium
Or install dependencies manually with Poetry:
poetry install
Usage Example
from zealium import Zealium
# Launch browser with stealth
zealium = Zealium(browser="chrome", stealth_level="normal")
zealium.launch()
# Use human behavior simulator to type text
zealium.human.type_text("Hello, Zealium!")
# Interact stealthily via DevTools Protocol...
# Clean up
zealium.close()
Stealth Toolkit
Zealium includes a collection of JavaScript patches injected into the browser context to evade detection, such as:
- Spoofing
navigator.webdriverand other common bot signals - Canvas fingerprint noise and spoofing
- WebGL precision spoofing
- Overriding
Function.prototype.toString - Mocking
navigator.pluginsandnavigator.mimeTypes - Faking
chrome.runtime - Neutralizing WebRTC IP leaks
- Audio context fingerprint mitigation
- Mocking media devices and permissions queries
- Spoofing screen properties and Intl DateTime formatting
Stealth levels control which patches are applied:
low: Basic evasionnormal: Moderate stealthstrict: Comprehensive patching
JS Injection Scripts for Stealth Patching
The injections/ folder contains multiple JavaScript scripts injected dynamically to spoof and patch browser APIs, avoiding detection by anti-bot and fingerprinting systems.
| File | Purpose |
|---|---|
| audio_oscillator_patch.js | Patches AudioContext.createOscillator to add random jitter, avoiding audio fingerprinting. |
| canvas_noise.js | Adds subtle noise to canvas pixel data to avoid canvas fingerprint consistency. |
| intl_datetime_patch.js | Overrides Intl.DateTimeFormat.prototype.resolvedOptions to spoof locale and timezone data. |
| mock_audio_fingerprint.js | Adds small variations in audio frequency data to mask audio fingerprint patterns. |
| mock_chrome_runtime.js | Creates a fake chrome.runtime object to prevent detection errors in Chrome environment checks. |
| mock_media_devices.js | Mocks navigator.mediaDevices.enumerateDevices to simulate camera and microphone devices. |
| mock_navigator_connection.js | Spoofs navigator.connection properties like downlink, effectiveType, and rtt. |
| mock_navigator_plugins_and_mimetypes.js | Fakes navigator.plugins and navigator.mimeTypes to simulate common browser plugins. |
| mock_webrtc.js | Disables or spoofs WebRTC APIs like RTCPeerConnection to prevent IP leaks and fingerprinting. |
| navigator_properties.js | Spoofs multiple navigator properties (webdriver, plugins, languages, platform, etc.) |
| override_function_toString.js | Overrides Function.prototype.toString to return legitimate source code for spoofed functions. |
| permissions_query_patch.js | Patches navigator.permissions.query to avoid errors and spoof notification permission state. |
| rtc_peerconnection_patch.js | Intercepts WebRTC ICE candidates to hide local IP addresses and prevent leaks. |
| screen_properties.js | Spoofs screen and window size properties to mask headless or virtual environment detection. |
| spoof_canvas_fingerprint.js | Alters Canvas API methods to return noisy or altered pixel data to defeat canvas fingerprinting. |
| spoof_webgl_precision.js | Modifies WebGL precision parameters to match real hardware profiles. |
| webgl_spoof.js | Spoofs WebGL vendor and renderer strings to appear as common GPUs (e.g., NVIDIA). |
Injecting these scripts selectively or all together via the StealthToolkit module allows fine-grained control over stealth level and evasion techniques.
Human Behavior Simulation
The HumanBehaviorSimulator mimics real user input with:
- Natural mouse movement with Bezier curves and noise
- Randomized pauses and hesitations
- Realistic typing with variable delays and error simulation
- Scrolling with randomized deltas
These features reduce detection by behavior analysis systems.
Project Structure
zealium/
├── core.py # Main controller for browser launch, stealth, human simulation
├── human.py # Human input simulation (mouse, keyboard)
├── stealth.py # JS stealth injection toolkit
└── injections/ # JS patches for fingerprint spoofing
Future Improvements
Zealium will evolve into a fully independent project, removing the dependency on pychrome entirely. The future version will feature a native CDP client that communicates with Chromium via PIPE, enabling more robust, stealth-oriented automation. This transition will allow for finer orchestration of browser instances with improved isolation, performance, and undetectability—making Zealium a dedicated solution for secure and anonymous browser control.
Disclaimer
Zealium is intended for educational and ethical automation use only. Misuse to violate terms of service or conduct unauthorized scraping may be illegal. Use responsibly.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zealium-0.1.7.post2.tar.gz.
File metadata
- Download URL: zealium-0.1.7.post2.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.2 Linux/6.1.0-39-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36986cd159b2035877ee5ae37c45fc781899017da1c05e173605e1c62360ea0d
|
|
| MD5 |
0f9fe0b00af9bb8fa31d39ff6c4a7534
|
|
| BLAKE2b-256 |
cc1bef6676a951fe360fc865e497a9e66402374604eb6d6daa9b91e4681184f2
|
File details
Details for the file zealium-0.1.7.post2-py3-none-any.whl.
File metadata
- Download URL: zealium-0.1.7.post2-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.2 Linux/6.1.0-39-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f80a870da74d60996018194bccd04da492f3aa615fdb577e2bf1f092cd5895f
|
|
| MD5 |
abfc0876f7791e6e37ccf1fde98e1e42
|
|
| BLAKE2b-256 |
e66a53f1072470d8b4f7ebecd80587e1292b01d6c4a3fb123745b9cc891fc3ec
|