Skip to main content

botmask

Containerized human-behavior browser automation toolkit. Installable as a plugin in other projects that need browser automation while evading anti-bot systems.

What is this?

A reusable, containerized browser-automation kit that simulates realistic human behavior (Bezier-curve mouse movement, inertia scrolling, natural delays, typo typing, warm-up sessions, reading simulation, auth-barrier detection) on top of Brave Browser + Patchright.

Extracted from the career-ops pipeline (~/Proyectos/ai/jobs) into an isolated, installable package so it can be dropped into any project that needs stealthy browser interaction.

Stack

Layer Tool
Runtime Docker / Docker Compose
Browser Brave (Chromium; ad-blocking, anti-fingerprinting)
Automation Patchright (undetectable Playwright fork, CDP)
Human behavior human_behavior module (this project)
Config config module, env-driven (inherited from jobs)
Hardening BrowserForge headers (planned), OS-level input fallback (planned)

Decision (Phase 0, docs/decision.md): Brave only. Firefox engines (camoufox, invisible_playwright) were evaluated and discarded. Hard targets are handled with OS-level input (Xvfb + xdotool/PyAutoGUI) + graceful challenge detection.

How the AI knows where to click

See docs/interaction-model.md. Short version: the AI picks elements from a numbered accessibility tree (never pixel coordinates); the script resolves element → bounding box → humanized mouse path. OS-level input maps viewport → screen coords via a one-time window offset calibration.

Container usage

Local (real display, like jobs) — develop target

Shares the host display into the container (Wayland socket + X11). compose.yaml builds the develop stage (no virtual display stack).

cp .env.example .env   # adjust DISPLAY, WAYLAND_DISPLAY for your host
docker compose up -d --build

Volumes: .:/app, /tmp/.X11-unix, /run/user/<UID>/wayland-0. CDP exposed at :9222.

Server (no monitor) — Xvfb + noVNC — deploy target

The server override lives in .gitlab/compose.yaml; a future GitLab CI step copies it to compose.override.yaml (which Docker Compose auto-loads), then:

docker compose up -d --build   # target=deploy via the override

Runs Brave headful on an Xvfb virtual display; watch it at http://<host>:6080 (noVNC) or VNC at :5900. Same element→box→input logic — only the display source differs.

start.sh auto-detects the mode from the environment: with DISPLAY/WAYLAND_DISPLAY present it runs the browser directly; with none (or VIRTUAL_DISPLAY=true) it boots the Xvfb stack first. On every start it also provisions Python packages + browser binaries at runtime (pip install . + patchright install chromium), cached in the cache volume (/root/.cache — pip wheels + browsers) so the image itself stays small.

Status

  • Phase 0 — Evaluation: COMPLETE → docs/decision.md
  • Phase 1 — Package extraction & container scaffold: IN PROGRESS
    • config.py migrated ✅ · Dockerfile (develop/deploy) + compose + start.sh scaffolded ✅
    • Fitts + overshoot mouse port ⏳ · human_behavior.py migration ⏳ (see TODO.md)

Docker targets (multistage)

Target For Display Build
develop (default via compose.yaml) local dev on host Wayland/X11 host display docker build --target develop -t botmask:develop .
deploy (default target of plain docker build) headless machine / CI Xvfb + noVNC docker build --target deploy -t botmask:deploy .

Base image is Debian python:slim — Brave requires glibc and cannot run on Alpine/musl.

Migrating from jobs

What can and cannot be reused from the jobs project: docs/migration-from-jobs.md.

Metadata

Release files for botmask 0.1.2

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

Source distribution (sdist)

Source distribution for botmask 0.1.2
File Size Uploaded
botmask-0.1.2.tar.gz 28.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for botmask 0.1.2
File Interpreter ABI Platform
botmask-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 55.6 kB

Release files / botmask-0.1.2.tar.gz

Download URL botmask-0.1.2.tar.gz
Size 28.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3a8581076b6bc43b2e85c7f85ff3fc56b54d64fc1f7497f1e04c9722ccf2d5b0
BLAKE2b-256 checksum
How to use checksums
aa78cc51b4b3136407bee81a58430fc38ff3aea6aaedc2b57d8889d31aa0d9e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 9, 2026.

Transparency log

Release files / botmask-0.1.2-py3-none-any.whl

Download URL botmask-0.1.2-py3-none-any.whl
Size 26.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d70508290693057882844c3f02ba4043e4df51d43712b1f5da9fe0232f28cb4
BLAKE2b-256 checksum
How to use checksums
22ddc21b41a49ef2904cb83a1e2e4a957cf00fb4d377d85069f8cf78449bf2c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 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