Browser pool built around a simple idea:
if you’re going to run real browsers, you need control — not just concurrency.
I built this because most Cloudflare bypass tools I found either:
- don’t scale,
- spawn browsers per request,
- or completely fall apart under concurrent load.
PhantomPool focuses on orchestrating browsers, not abusing them.
- Keeps a persistent pool of real Chromium instances
- Uses leases to guarantee exclusive browser access
- Applies hard cancellation on timeouts and disconnects
- Uses a bounded queue to apply backpressure
That’s it. No magic.
- No fingerprint spoofing
- No TLS / JA3 tricks
- No exploit-based bypasses
If the browser can’t load the page, PhantomPool won’t pretend it can.
HTTP request
→ Queue (bounded)
→ Worker
→ Browser lease
→ Chromium
Each request becomes a job. Each job needs a lease. Each lease owns a browser until it finishes or is cancelled.
Because without leases:
- browsers get reused while dirty
- cancellation becomes best-effort
- bugs turn into ghost states
Leases give PhantomPool:
- authority
- cleanup guarantees
- predictable failure modes
Requires Bun.
bun install
bun startFor hot-reload during development:
bun start:devdocker build -t phantompool .
docker run -p 4000:4000 phantompoolChromium is bundled in the image.
This project is:
- stable under load
- intentionally minimal
- still evolving
Things that can improve:
- priority / weighted scheduling
- metrics
- multiple browser types
- distributed workers
PRs are welcome.
MIT