Skip to main content

Crate eoka

Crate eoka 

Source
Expand description

§Eoka

Stealth browser automation for Rust — a Puppeteer/Playwright alternative that bypasses bot detection.

Eoka is a minimal, fast headless Chrome library built from scratch. Unlike Selenium or chromiumoxide, it uses a custom CDP implementation with stealth filtering to avoid detection by Cloudflare, DataDome, PerimeterX, and other anti-bot systems.

§Features

  • Stealth by Default - Binary patching, 15 JS evasions, human-like mouse/typing
  • Puppeteer-like API - click(), type(), wait_for(), screenshot(), etc.
  • Minimal Dependencies - ~10 crates total, no chromiumoxide bloat
  • AI-Agent Ready - PageState introspection, element indexing, text extraction
  • Fast - Lazy evasion scripts, mmap patching, stack-allocated paths

§Quick Start

use eoka::Browser;

#[tokio::main]
async fn main() -> eoka::Result<()> {
    // Launch browser (patches Chrome, applies evasions)
    let browser = Browser::launch().await?;

    // Create page and navigate
    let page = browser.new_page("https://example.com").await?;

    // Human-like interactions
    page.human_click("#button").await?;
    page.human_type("#input", "hello world").await?;

    // Screenshot
    let png = page.screenshot().await?;
    std::fs::write("screenshot.png", png)?;

    browser.close().await?;
    Ok(())
}

§Configuration

use eoka::{Browser, StealthConfig};

let config = StealthConfig {
    headless: true,
    patch_binary: true,
    webgl_spoof: true,
    canvas_spoof: true,
    ..Default::default()
};

let browser = Browser::launch_with_config(config).await?;

Re-exports§

pub use browser::Browser;
pub use browser::TabInfo;
pub use error::Error;
pub use error::Result;
pub use network::NetworkEvent;
pub use network::NetworkWatcher;
pub use page::BoundingBox;
pub use page::CapturedRequest;
pub use page::Element;
pub use page::FrameInfo;
pub use page::Page;
pub use page::PageState;
pub use page::ResponseBody;
pub use page::TextMatch;
pub use session::BrowserSession;
pub use session::SessionCookie;
pub use stealth::Fingerprint;
pub use stealth::HumanSpeed;

Modules§

browser
Browser Launcher
cdp
Minimal CDP (Chrome DevTools Protocol) Client
error
Error types for eoka
network
Network Request Capture
page
Page Abstraction
session
Session export for browser-to-HTTP-client handoff
stealth
Stealth Layer

Structs§

StealthConfig
Configuration for stealth features