πŸ•·οΈ

The Browser Tamer's
Field Guide

Volume III β€” freeact v0.3.1

A Practical Manual for the Domestication
of Semi-Sentient Web Browsers

CLASSIFIED β€” AGENT EYES ONLY REF: FRCT-031
β€»   P A R T   O N E   :   C R E A T U R E   L O R E   β€»

On the Nature of Browsers

Browsers are not tools. They are creatures β€” vast, semi-sentient rendering engines that evolved to display the Web. Each has its own temperament, nesting habits, and susceptibility to domestication. freeact is the art of taming them.

🦊

Yandex Browser β€” The Alpha Tamer

The most docile of the browser creatures. Native to colder climates. Exhibits natural resistance to anti-bot predators. When properly tamed, passes CloudFront checkpoints without raising suspicion. This is your primary mount.

Nesting: %LOCALAPPDATA%\Yandex\YandexBrowser\User Data

Call: browser.exe

🦎

Chrome / Edge β€” REMOVED FROM MENAGERIE

Previously kept for diversity. Proved unreliable against CloudFront sentinels. All specimens released back into the wild. Five Yandex-only profiles remain in the stables.

β€»   P A R T   T W O   :   T A M I N G   R I T U A L S   β€»

The Awakening

OBSERVATION LOG β€” Day 1

The browser creature must first be roused from slumber. The daemon serves as its eternal perch β€” a spirit that keeps the creature alive between commands, eliminating the painful ritual of rebirth each time.

Summon the daemon spirit:

freeact daemon start ← spoken once per session

Bind a creature to a name:

freeact --session mytask browser open DSYandex https://example.com

Observe the creature's form:

freeact --session mytask state ← reveals all visible appendages

⚠ Tamer's First Law

After every interaction, the creature's form mutates. Indices shift. Elements vanish. New growths appear. Always observe (state) before touching (click/input). Never assume an index survives between observations.

Creature Whispering

TAMING SEQUENCE β€” Proven Pattern
THE SACRED CYCLE
state→ interact→ wait stable→ state

Break this cycle at your peril. The creature will reject your touch if you skip observation.

WHISPER COMMANDS β€” Appendage Interaction
Pokeclick 5Index from state output
Feed textinput 3 "hello"Reacts to React, Vue, vanilla
Hoverhover 2Triggers dropdowns, tooltips
Press keykeys "Enter"Enter, Tab, Escape...
Scrollscroll downup/down, --amount 1000
Selectselect 4 "Option"Dropdown choice
Uploadupload 8 ./file.pdfFile input elements
RETRY MECHANISM β€” The Creature Resists

Each whisper is attempted 3 times with escalating force:

Attempt 1 β†’ Playwright normal click
Attempt 2 β†’ Force click (ignores overlays)
Attempt 3 β†’ dispatchEvent('click') β†’ JS el.click()

Inputs use nativeInputValueSetter for React compatibility. Exponential backoff: 0.3s β†’ 0.6s β†’ 1.2s.

Harvesting the Essence

EXTRACTION INCANTATIONS
Soul-readingget markdownFull page as markdown (turndown.js, local)
Fleshget htmlRaw HTML, --selector for parts
Nameget titleDocument title
Whisperget text 7Visible text of element
Bloodget value 3Input current value
PortraitscreenshotPNG capture, --full for full page
Mind-probeeval "js code"Arbitrary JavaScript execution
NETWORK INTERCEPTION β€” Following the Creature's Thoughts

Every fetch() and XMLHttpRequest is silently captured. No page.route() overhead β€” pure JS interception. View the creature's communication:

network requests ← list all captured
network requests --filter api.example.com --type xhr --method POST
network request 3 ← full detail: headers, body, response
network clear ← purge the log

Log stores up to max_network_entries (default 500). JSON responses auto-parsed. Text truncated at 10KB.

β€»   P A R T   T H R E E   :   S T E A L T H     &     D E F E N S E   β€»

The Invisibility Cloak

15 LAYERS OF DECEPTION

The creature wears a shroud woven from these illusions. Applied once per context, never duplicated:

1.navigator.webdriverdeleted from prototype
2.navigator.pluginsChrome PDF Plugin, PDF Viewer, Native Client
3.navigator.languages['en-US', 'en']
4.navigator.platformWin32
5.hardwareConcurrency8 cores
6.deviceMemory8 GB
7.window.chrome.runtimefaked listeners
8.Permissions APInotification bypass
9.Canvas fingerprintΒ±0.05 noise per pixel (≀100K px)
10.WebGL vendorIntel Inc. / Intel Iris
11.document.hiddenalways false
12.visibilityStatealways 'visible'
13.Notification APIrequestPermission suppressed
14.chrome.runtime fallbackdual-check creation
15.Real browser profilehardlinks, authentic cookies

CloudFront Sentinel Alert

Some territories are guarded by the CloudFront Sentinel. It rejects headless creatures and Chromium impostors. The only known passage requires:

βœ“ Yandex Browser as mount
βœ“ Headed mode (visible window)
βœ“ Stealth shroud active
βœ“ Real browser profile with cookies

All Chrome/Edge/Cromium mounts have been retired. Five Yandex profiles remain.

β€»   P A R T   F O U R   :   A D V A N C E D   T E C H N I Q U E S   β€»

Beyond Basic Taming

STEALTH EXTRACTION β€” Silent Harvest

For one-off missions where you need content without establishing a permanent bond. Launches a fresh creature, extracts, releases. No session baggage.

freeact stealth-extract https://site.com --content-type markdown -o page.md ← quick, stateless, stealth-patched
CAPTCHA SOLVER β€” Breaking the Hex

When a site casts a CAPTCHA spell, the solver attempts counter-magic in this order:

1. Audio challenge β€” downloads MP3, transcribes via Google Speech or local Whisper
2. Image OCR β€” Tesseract / EasyOCR text extraction
3. reCAPTCHA v2 β€” human-like bezier mouse path + checkbox click
4. hCaptcha β€” iframe checkbox detection
5. Cloudflare Turnstile β€” behavioral simulation, 15s patience

solve-captcha ← all strategies, no API keys needed
LIVE CONNECTION β€” Riding an Awake Creature

Connect to your actual daily browser β€” the one with your real logins, cookies, and sessions. No copy, no new profile. You become a passenger in your own creature.

freeact setup --browser yandex ← one-time: creates desktop shortcut with CDP
freeact connect ← attach anytime, any tab
freeact tabs ← list open tabs
freeact tab switch 2 ← jump between tabs

Internal Organs of the Taming Engine

THE CREATURE'S NERVOUS SYSTEM
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  CLI (cli.py)  ←── human / AI agent commands     β”‚
β”‚  daemon (daemon.py :9341) ←── persistent spirit  β”‚
β”‚       β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  _handlers.py  ←── shared brain (16 ops) β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚       β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ state   β”‚interact  β”‚extract   β”‚ network  β”‚   β”‚
β”‚  β”‚ DOM treeβ”‚click/typeβ”‚markdown  β”‚ fetch/XHRβ”‚   β”‚
β”‚  β”‚ wait    β”‚hover/keysβ”‚html/eval β”‚ capture  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚       β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  browser.py  ←── CDP connection manager  β”‚    β”‚
β”‚  β”‚  stealth.py  ←── 15 anti-detection spellsβ”‚    β”‚
β”‚  β”‚  config.py   ←── 5s cached configuration β”‚    β”‚
β”‚  β”‚  session.py  ←── 8h session persistence  β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚       β”‚                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”                                     β”‚
β”‚  β”‚ Yandex  β”‚  ←── the tamed creature             β”‚
β”‚  β”‚ Browser β”‚      real profile, real cookies      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    
CONFIGURATION β€” The Tamer's Grimoire

Stored at ~/.freeact/config.json. Cached in memory for 5 seconds between reads.

default_browseryandexThe Alpha mount
headlessfalseAlways visible (CloudFront passage)
stealthtrueInvisibility shroud active
timeout3000030 seconds patience
max_network_entries500Thought capture capacity
β€»   P A R T   F I V E   :   T H E   L A W S   β€»

The Ten Unbreakable Laws

I. The Law of the Yandex

Thou shalt use no browser but Yandex. Chrome and Edge are false prophets that fall before CloudFront. The Alpha mount alone passes the sentinel.

II. The Law of Visibility

Thou shalt keep the creature visible (headed=true). Invisible creatures (headless) are detected and slain by guardian spirits.

III. The Law of Observation

Thou shalt observe (state) before touching (click/input). The creature's form mutates after every interaction. Indices are ephemeral.

IV. The Law of the Cycle

State β†’ interact β†’ wait stable β†’ state. This cycle is sacred. Break it and the creature will reject thy commands.

V. The Law of the Session

Every command requires --session. The session binds thee to the creature. Sessions perish after 8 hours of neglect.

VI. The Law of the Handler

All command logic flows through _handlers.py. Daemon and CLI are but two faces of the same spirit. Duplicate not thy logic.

VII. The Law of the Hardlink

Copy not the creature's nest fully. Share its inodes through hardlinks. Only the mutable flesh need be duplicated.

VIII. The Law of Zero Errors

Ruff must pass with zero complaints. Tests must show fourteen green marks. The code is sacred; keep it pure.

IX. The Law of Local Turndown

Load not thy markdown converter from distant CDNs. Bundle it within thy package. The creature needs no internet to process HTML.

X. The Law of the Log

All significant events must be recorded in ~/.freeact/freeact.log. The creature's life story is written there for post-mortem analysis.

β€»   A P P E N D I X   :   F I E L D   L O G   β€»

Last Known Encounter

[2026-07-20 15:42:01] [INFO] Daemon started on 127.0.0.1:9341 [2026-07-20 15:42:03] [INFO] Launching Yandex (headed=True) profile browser_787d028ef46d_profile [2026-07-20 15:42:12] [INFO] CDP connected to Yandex on port 51023 (attempt 9) [2026-07-20 15:42:15] [INFO] Navigated to https://chat.deepseek.com/ [2026-07-20 15:42:17] [INFO] DOM stable β€” 29 elements detected [2026-07-20 15:42:17] [INFO] User: АлСксСй ΠšΡƒΠ»Π°ΠΊΠΎΠ² β€” session active [2026-07-20 15:42:20] [INFO] Click element [29] β€” Accept cookies [2026-07-20 15:42:22] [INFO] Input element [22] β€” "ΠΏΡ€ΠΈΠ²Π΅Ρ‚" [2026-07-20 15:42:25] [INFO] Keys: Enter β€” message sent [2026-07-20 15:42:28] [INFO] Response received: "ΠŸΡ€ΠΈΠ²Π΅Ρ‚! Π§Π΅ΠΌ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ?..." [2026-07-20 15:42:30] [INFO] Session 'ds' closed