Files
CloakBrowser/pyproject.toml
T
lilos d4924d9575 fix(humanize): one engine for every action (Python, JS, .NET) + Puppeteer fixes (#578)
Humanized actions in the Playwright wrappers (Python, JS, .NET) now run through a
single shared engine built on Playwright's own selector engine: full locator support
(roles, chains, filters, frame locators, strict mode), Playwright options honoured,
value inputs operated with real input, persona-aware keys, and errors instead of
silent fallbacks. Puppeteer: frame-scoped actions, button/count, Shift on typos.

Follow-ups: macOS dropdowns via type-ahead, nested same-box element handles,
stale handles fail fast, CI fails on a missing test binary.
2026-10-08 18:58:10 +02:00

81 lines
2.3 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "cloakbrowser"
dynamic = ["version"]
description = "Stealth Chromium that passes every bot detection test. Drop-in Playwright replacement with source-level fingerprint patches."
readme = "README.md"
license = "MIT"
requires-python = ">=3.9"
authors = [
{ name = "CloakHQ", email = "cloakhq@pm.me" },
]
keywords = [
"stealth",
"browser",
"chromium",
"playwright",
"puppeteer",
"scraping",
"web-scraping",
"anti-detect",
"antidetect",
"undetected",
"bot-detection",
"fingerprint",
"recaptcha",
"cloudflare",
"turnstile",
"datadome",
"captcha",
"headless",
"automation",
"ai-agent",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Internet :: WWW/HTTP :: Browsers",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Testing",
]
dependencies = [
"playwright>=1.53",
"httpx>=0.24",
"cryptography>=41.0", # verify Ed25519 signature on SHA256SUMS before trusting it
]
[project.optional-dependencies]
geoip = ["geoip2>=4.0", "socksio>=1.0"] # socksio: SOCKS5 transport for httpx
serve = ["aiohttp>=3.9", "websockets>=12.0"]
dev = ["pytest>=7.0", "pytest-asyncio>=0.23", "pytest-timeout>=2.1"]
[project.scripts]
cloakbrowser = "cloakbrowser.__main__:main"
[project.urls]
Homepage = "https://github.com/CloakHQ/CloakBrowser"
Documentation = "https://github.com/CloakHQ/CloakBrowser#readme"
Repository = "https://github.com/CloakHQ/CloakBrowser"
Issues = "https://github.com/CloakHQ/CloakBrowser/issues"
[tool.hatch.version]
path = "cloakbrowser/_version.py"
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
markers = [
"slow: marks tests that hit live detection sites (deselect with '-m \"not slow\"')",
"real_browser: launches the real binary from the real ~/.cloakbrowser cache (not isolated)",
]