Skip to main content

veilus

Launch Veilus browser profiles from Python and drive them with Playwright.

Each Veilus profile is a browser with its own fingerprint, proxy and cookies. This package talks to the Veilus app's local API, launches a profile, and connects Playwright to that profile's own browser — so your script runs with the profile's identity.

Works with

Tested with a real Veilus profile — see examples/TESTED.md for versions and date: Playwright · Puppeteer · browser-use · Stagehand · Crawl4AI · LangChain · Scrapling · Crawlee · playwright-mcp · agent-browser

pip install "veilus[playwright]"

Requires the Veilus desktop app 0.2.9 or newer, running, with the local API turned on (API & MCP page in the app sidebar, Pro plan or higher). Create a token on that page and put it in the environment:

export VEILUS_API_TOKEN=...
import asyncio
from veilus import Veilus


async def main():
    veilus = Veilus()
    profiles = await veilus.list_profiles()

    session = await veilus.connect(profiles[0]["id"])
    await session.page.goto("https://example.com")
    print(await session.page.title())
    await session.close()  # disconnects Playwright; the profile keeps running

    await veilus.stop(profiles[0]["id"])


asyncio.run(main())

connect() reuses the profile if it is already running, otherwise launches it. It returns the profile's own context and page — don't create a new context with your own user agent, viewport or locale, as those would override the profile's values for that context.

API

Veilus(token=None, port=None, app_dir=None) token defaults to $VEILUS_API_TOKEN; the port is read from the app's api-endpoint.json in app_dir ($VEILUS_APP_DIR or ~/.veilus)
await list_profiles() all profiles; a running one carries cdpUrl
await launch(id, diagnostic=False) starts the profile, returns {"pid", "cdpUrl"}
await stop(id) stops the profile
await connect(id, diagnostic=False) Playwright browser, context, page, cdp_url, close()

diagnostic=True (Veilus 0.2.10 or newer) opens the profile through its proxy but without its fingerprint, in a temporary browser directory deleted on stop: the page sees this machine's real values. Use it to tell whether a site blocks the fingerprint or the IP — never on an account you care about.

Security

The token is read only from your code or VEILUS_API_TOKEN. This package never reads the app's token store. The profile's CDP address (cdpUrl) has no password: any local program can use it while the profile runs, and it listens on 127.0.0.1 only.

License

MIT or Apache-2.0, at your option.

Metadata

Release files for veilus 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 veilus 0.1.1
File Size Uploaded
veilus-0.1.1.tar.gz 26.3 kB Details

Built distribution (wheel)

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

Total release size: 33.9 kB

Release files / veilus-0.1.1.tar.gz

Download URL veilus-0.1.1.tar.gz
Size 26.3 kB
Tags Source
SHA-256 checksum
How to use checksums
104f41fc617b2aadaeb8535009919153234da98eaf48199be38e09fbe895ce42
BLAKE2b-256 checksum
How to use checksums
0f299cc9c7b92fa045862c939cdd0fcc36b9c73e400f9ab960206d7ed6518012
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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

Download URL veilus-0.1.1-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
62c8eed3fdebdfd4e8516291c11b303eeb63ec6d9a04d17d8f5e8c5fd132fc36
BLAKE2b-256 checksum
How to use checksums
d375502000ddd63c1bb6afebefbdcfd92aa39ef8873b2f9e77a5271aebce00d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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