High-stealth WhatsApp Web automation plugin for CamouChat. WA-JS powered, async-first, multi-account with AES-256 encrypted storage.
Project description
CamouChat WhatsApp 🟢
High-stealth WhatsApp automation plugin for the CamouChat ecosystem. Built on top of camouchat-browser and WA-JS, providing a structured, API-driven pipeline for multi-account automation with end-to-end encrypted message storage.
[!IMPORTANT] This package requires a one-time binary fetch for the underlying Camoufox browser engine after installation. See Setup below.
Key Features
- WA-JS Integration: Uses the internal WhatsApp Web API via
wa-js— not fragile DOM selectors. - Multi-Account Isolation: Each account runs in a sandboxed profile with isolated cookies, storage, and fingerprints.
- E2E Encryption: All stored messages are encrypted at rest using AES-256-GCM.
- Async-First: Fully
asyncio-native for high-throughput multi-session workloads. - Humanized Behavior: Mouse movements, typing cadence, and delays mimic organic user behavior.
- Rate Limiting: Built-in configurable rate-limit support to prevent account bans.
Installation
Using uv (Recommended)
uv add camouchat-whatsapp "camoufox[geoip]"
Using pip
pip install camouchat-whatsapp "camoufox[geoip]"
Setup
[!WARNING]
uv sync/pip installalone are not enough. You must fetch the Camoufox browser binary separately.
With uv
uv run python -m camoufox fetch
With pip
python -m camoufox fetch
This downloads the latest hardened Firefox binary used internally by Camoufox.
Quick Start
import asyncio
from camouchat_browser import BrowserConfig, BrowserForge, CamoufoxBrowser, ProfileManager
from camouchat_core import Platform
from camouchat_whatsapp import (
Login,
WebSelectorConfig,
WapiSession,
InteractionController,
MessageModelAPI,
on_newMsg,
)
async def main():
# 1. Profile
pm = ProfileManager()
profile = pm.create_profile(platform=Platform.WHATSAPP, profile_id="my_account")
print("Location of saved DIR cookies : ", profile.cache_dir)
# 2. Browser
config = BrowserConfig.from_dict({
"platform": Platform.WHATSAPP,
"headless": False,
"locale": "en-US",
"fingerprint_obj": BrowserForge(),
})
browser = CamoufoxBrowser(config=config, profile=profile)
page = await browser.get_page()
# 3. Login (reuses saved session automatically)
ui = WebSelectorConfig(page=page)
login = Login(page=page, UIConfig=ui)
await login.login(method=0)
# 4. Message event hook
wapi = WapiSession(page=page)
interaction = InteractionController(page=page, ui_config=ui, wapi=wapi)
cm = wapi.chat_manager
@on_newMsg(wapi_session=wapi)
async def handle_message(msg: MessageModelAPI):
print(f"New message from {msg.jid_From}: {msg.body}")
# open chat & send msg .
print(f"Opening Chat... [{msg.author}]")
chat_id = msg.jid_From # jid is internal WhatsApp used ID system , and _from tells from which chat this came on, so jid_from -> msg came from which chat.
chat = await cm.get_chat_by_id(chat_id=chat_id)
await cm.open_chat(chat= chat)
if msg.body == "!ping":
await interaction.send_api_text(
chat_id=msg.jid_From,
text="🏓 Pong!",
quoted_msg_id=msg.id_serialized,
)
await handle_message() # start listening
await asyncio.sleep(3600) # keep alive
if __name__ == "__main__":
try :
asyncio.run(main())
except KeyboardInterrupt :
pass
except Exception :
import tracemalloc
tracemalloc.print_exc()
Anti-Ban Best Practices
- Use residential proxies and enable GeoIP matching.
- Run only one visible browser (others auto-switch to headless).
- Respect rate limits — avoid burst-sending messages.
- Use test accounts before deploying on real numbers.
Documentation
- WA-JS Integration
- API Models & Managers
- Controllers (Login, Interaction, Media)
- Storage & Filtering
- Core SDK
- Browser Plugin
⚖️ Security & Ethics
CamouChat's strict policy regarding acceptable automation, anti-spam, and stealth disclaimers can be found in our central ecosystem hub:
Acknowledgements & Third-Party Code
CamouChat WhatsApp uses portions of the wa-js library developed by the WPPConnect Team.
wa-js provides the internal WhatsApp Web JavaScript bridge that powers reliable, selector-free automation. It is distributed under the Apache License 2.0.
See the NOTICE file for full compliance details.
License
MIT License. See LICENSE for details.
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 camouchat_whatsapp-0.7.2.tar.gz.
File metadata
- Download URL: camouchat_whatsapp-0.7.2.tar.gz
- Upload date:
- Size: 174.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b7b20ecf7a66346ddcfa3ef0e6ce40ba24ee2de22ae715b88be0e9da219c50e
|
|
| MD5 |
67297361a722ba5780166e52bfa60d0b
|
|
| BLAKE2b-256 |
5b4aad67c9cb968594996bd55ce2121611694ca19676ef1220fdbe555ec89f04
|
File details
Details for the file camouchat_whatsapp-0.7.2-py3-none-any.whl.
File metadata
- Download URL: camouchat_whatsapp-0.7.2-py3-none-any.whl
- Upload date:
- Size: 186.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34ae74d9ac1620d95d034dbe641814f87e0efdc020807d426b652b04208d68b9
|
|
| MD5 |
d39ee74df337c594873c95b07cdb42b7
|
|
| BLAKE2b-256 |
9656acd3b71b784aebe9818c4943856a97634c1a9dc6b1808eae0990d1b84ba3
|