Metadata-Version: 2.5
Name: invisible_puppeteer
Version: 0.1.0
Summary: pyppeteer's API for a patched Firefox with a deterministic stealth profile.
Project-URL: Homepage, https://github.com/feder-cr/invisible_puppeteer
Project-URL: Repository, https://github.com/feder-cr/invisible_puppeteer
Project-URL: Changelog, https://github.com/feder-cr/invisible_puppeteer/blob/main/CHANGELOG.md
Author-email: feder-cr <85809106+feder-cr@users.noreply.github.com>
License-Expression: MIT AND Apache-2.0
License-File: LICENSE
License-File: LICENSE-APACHE
Keywords: anti-detect,automation,firefox,puppeteer,pyppeteer,stealth
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Classifier: Topic :: Software Development :: Testing
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: invisible-core==34.31.0
Provides-Extra: dev
Requires-Dist: build>=1; extra == 'dev'
Requires-Dist: pytest-rerunfailures>=14; extra == 'dev'
Requires-Dist: pytest-timeout>=2; extra == 'dev'
Requires-Dist: pytest-xdist>=3; extra == 'dev'
Requires-Dist: pytest>=7; extra == 'dev'
Description-Content-Type: text/markdown

# invisible_puppeteer

pyppeteer's API on a patched Firefox with a deterministic stealth profile.
Change the import, keep the script.

```bash
uv venv
uv pip install invisible-puppeteer
uv run invisible-puppeteer fetch
```

Requires Python 3.11 or newer. Windows x86_64 and ARM64 (the x86_64 engine,
under Windows' own emulation), Linux x86_64 and arm64.

```python
import asyncio
from invisible_puppeteer import launch

async def main():
    browser = await launch(seed=42)
    page = await browser.newPage()
    await page.goto("https://example.com")
    await page.click("a")
    await browser.close()

asyncio.run(main())
```

```python
browser = await launch(
    seed=42,                        # same seed, same fingerprint
    proxy={"server": "socks5://host:1080", "username": "u", "password": "p"},
    headless=True,                  # hidden desktop, real rendering
    userDataDir="./profile",        # cookies and storage survive the run
)
```

```bash
git clone https://github.com/feder-cr/invisible_puppeteer && cd invisible_puppeteer
uv venv && uv pip install -e ".[dev]"
uv run pytest -q                      # unit
uv run pytest -q -m e2e               # against the real browser
```
