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.
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.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| veilus-0.1.0.tar.gz | 26.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| veilus-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.5 kB
Release files / veilus-0.1.0.tar.gz
| Download URL | veilus-0.1.0.tar.gz |
|---|---|
| Size | 26.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40aa75b44d91d876bc279c5c3b98b71def6077ee365fd496e46974062443c06c
|
|
BLAKE2b-256 checksum How to use checksums |
d8bdefe5d253f87d242bf357e916beed54e2da9ff1e253184979a87dce73c3ba
|
| 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.0-py3-none-any.whl
| Download URL | veilus-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fef86f75f9d66715f8693b6d93c4dc60752bf4ab254888b197a24f23bd7b0f8e
|
|
BLAKE2b-256 checksum How to use checksums |
589ea381c855b68bbbc7f7b5244eaa9d698f9eed7ff491cc7654023be2f32b7a
|
| 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}
|