🕷️ freeact — The Browser Tamer
"Your browser doesn't know it's being automated. Neither does CloudFront."
freeact is a CLI tool that controls REAL installed browsers (Yandex, Chrome, Edge) through their own debugging protocol. No automation flags. No chromedriver. No Selenium. The browser literally has no idea it's being puppeted — anti-bot systems see a perfectly normal browsing session.
┌──────────┐
│ YOU │
│ (AI/CLI) │
└────┬─────┘
│ HTTP :9341
┌────▼─────┐
│ DAEMON │ ← persistent spirit
└────┬─────┘
│ CDP (Chrome DevTools Protocol)
┌────▼─────┐
│ YANDEX │ ← real binary, real profile
│ BROWSER │ real cookies, real session
└──────────┘
Why This Exists
| Traditional Automation | freeact |
|---|---|
| Headless Chromium with flags | Real Yandex binary, no --automation |
| Detected by CloudFlare/Wildberries | CloudFront says "Welcome" |
| Fake profile, no cookies | Your actual browser profile |
| CAPTCHA = dead end | Free solver: audio + OCR + behavioral |
| Selenium/Playwright wrapper | Direct CDP commands |
5-Second Start
pip install freeact
playwright install chromium
freeact daemon start
freeact --session demo browser open DSYandex https://example.com
freeact --session demo state
# → [1]<a href=...> Sign In
# → [2]<input placeholder=Email>
freeact --session demo click 1
freeact --session demo wait stable
freeact --session demo get markdown
freeact session close demo
The Sacred Law
state → interact → wait stable → state
Never touch without observing. The DOM mutates after every interaction. Indices are reborn each time you call state.
Features
- Daemon mode — browser stays alive between commands. No startup delay.
- 15-layer stealth — webdriver deletion, canvas noise, WebGL spoofing, plugin faking
- Free CAPTCHA solver — audio + OCR + reCAPTCHA + hCaptcha + Turnstile
- Network capture — all fetch/XHR logged automatically, zero overhead
- Live browser — connect to your daily browser with all real cookies
- Turndown bundling — markdown conversion without CDN dependency
- Cross-platform — Windows, macOS, Linux (paths + shortcuts)
- Hardlink profiles — share inodes, copy only mutable data
- API key auth — daemon guards commands with X-API-Key
Documentation
open docs/field-guide.html # The Browser Tamer's Field Guide
Or read SKILL.md for the full command reference.
Project State
Ruff: 0 errors
Tests: 14/14 pass
Modules: 19
Pro Tips
- Yandex + headed = CloudFront bypass. This is not optional.
- Always
statebeforeclick/input. Indices are ephemeral. - Use
wait stableafter interactions that change the DOM. - Use
wait navigationafter clicks that change the URL. - Close sessions when done — they auto-expire after 8 hours anyway.
- Turndown.js is local — no CDN needed for
get markdown. - Network log limit is configurable via
max_network_entriesin config.
19 creatures. 14 tests. 0 errors. Made with 🕷️ in the deep woods.
Metadata
Release files for freeact-cli 0.4.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 | |
|---|---|---|---|
| freeact_cli-0.4.0.tar.gz | 66.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| freeact_cli-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 126.5 kB
Release files / freeact_cli-0.4.0.tar.gz
| Download URL | freeact_cli-0.4.0.tar.gz |
|---|---|
| Size | 66.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4f2f246223df7a5ce2351094a797b63d0dc99c139f9068d6a025b55d74d0bb8
|
|
BLAKE2b-256 checksum How to use checksums |
ea5fc494b6995095f1abca0b43a6999b270e55546377144f9a0e14ab9b07f1b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.14
|
Release files / freeact_cli-0.4.0-py3-none-any.whl
| Download URL | freeact_cli-0.4.0-py3-none-any.whl |
|---|---|
| Size | 59.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8349f56e63ff102b43bfb89f240dd57740e1304fa09a4262f35f05315a337f3
|
|
BLAKE2b-256 checksum How to use checksums |
cba994f253b288bb0285d4c8d9e58fdbc7e3ffaf6fc41bb1d93e437f08beee16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.14
|