Skip to main content

Browser automation plugin for elizaOS - enables AI agents to browse websites, interact with elements, and extract data

Project description

Browser Automation Plugin for elizaOS (Python)

Browser automation plugin enabling AI agents to browse websites, interact with elements, and extract data.

Features

  • Navigation: Navigate to URLs, go back/forward, refresh pages
  • AI-Powered Interactions: Click, type, and select elements using natural language
  • Data Extraction: Extract structured data from web pages
  • Screenshots: Capture page screenshots
  • CAPTCHA Solving: Automatic CAPTCHA solving (Turnstile, reCAPTCHA, hCaptcha)
  • Session Management: Handle multiple browser sessions
  • Security: URL validation, domain filtering, rate limiting

Installation

pip install elizaos-plugin-browser

Or with poetry:

poetry add elizaos-plugin-browser

Configuration

Environment variables:

# Optional - for cloud browser
BROWSERBASE_API_KEY=your_api_key
BROWSERBASE_PROJECT_ID=your_project_id

# Optional - for AI-powered interactions
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key

# Optional - for CAPTCHA solving
CAPSOLVER_API_KEY=your_capsolver_key

# Browser settings
BROWSER_HEADLESS=true
BROWSER_SERVER_PORT=3456

Usage

import asyncio
from elizaos_browser import BrowserPlugin, create_browser_plugin

async def main():
    # Create and initialize plugin
    plugin = create_browser_plugin()
    await plugin.init()

    try:
        # Navigate to a page
        result = await plugin.handle_action(
            "BROWSER_NAVIGATE",
            "Go to google.com"
        )
        print(f"Navigated: {result}")

        # Click on element
        result = await plugin.handle_action(
            "BROWSER_CLICK",
            "Click on the search button"
        )
        print(f"Clicked: {result}")

        # Type text
        result = await plugin.handle_action(
            "BROWSER_TYPE",
            'Type "hello world" in the search box'
        )
        print(f"Typed: {result}")

        # Extract data
        result = await plugin.handle_action(
            "BROWSER_EXTRACT",
            "Extract the main heading"
        )
        print(f"Extracted: {result}")

        # Take screenshot
        result = await plugin.handle_action(
            "BROWSER_SCREENSHOT",
            "Take a screenshot"
        )
        print(f"Screenshot: {result}")

        # Get browser state
        state = await plugin.get_provider("BROWSER_STATE")
        print(f"State: {state}")

    finally:
        await plugin.stop()

if __name__ == "__main__":
    asyncio.run(main())

Actions

Action Description Examples
BROWSER_NAVIGATE Navigate to URL "Go to google.com"
BROWSER_BACK Go back in history "Go back"
BROWSER_FORWARD Go forward "Go forward"
BROWSER_REFRESH Refresh page "Refresh the page"
BROWSER_CLICK Click element "Click the search button"
BROWSER_TYPE Type text "Type 'hello' in the search box"
BROWSER_SELECT Select option "Select 'US' from country dropdown"
BROWSER_EXTRACT Extract data "Extract the main heading"
BROWSER_SCREENSHOT Take screenshot "Take a screenshot"

Providers

Provider Description
BROWSER_STATE Current browser session state

API

BrowserService

class BrowserService:
    async def create_session(self, session_id: str) -> BrowserSession: ...
    async def get_session(self, session_id: str) -> BrowserSession | None: ...
    async def get_current_session(self) -> BrowserSession | None: ...
    async def destroy_session(self, session_id: str) -> None: ...

BrowserSession

@dataclass
class BrowserSession:
    id: str
    created_at: datetime
    url: str | None = None
    title: str | None = None

Development

# Install dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Type check
mypy elizaos_browser

# Lint
ruff check elizaos_browser

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elizaos_plugin_browser-2.0.0a5.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elizaos_plugin_browser-2.0.0a5-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file elizaos_plugin_browser-2.0.0a5.tar.gz.

File metadata

  • Download URL: elizaos_plugin_browser-2.0.0a5.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for elizaos_plugin_browser-2.0.0a5.tar.gz
Algorithm Hash digest
SHA256 62464c0ef8372ae072cc9c3a66564dc14446e3b6180b60cbcf50ee408dbeb44e
MD5 946f544b17f5277855f7f1c7d7d912ad
BLAKE2b-256 e442899bd2ec41f62c993abe26fb8e730518dc3183705f9f2e44d4216bf18351

See more details on using hashes here.

File details

Details for the file elizaos_plugin_browser-2.0.0a5-py3-none-any.whl.

File metadata

File hashes

Hashes for elizaos_plugin_browser-2.0.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 1391a174afe865c35d8cf07a2e309516992a69735c41259315cdee8163cb0a01
MD5 0e78c5394256e07ce850f591cf185c48
BLAKE2b-256 382b0322ae8838d0d3a1d606a23883351377b1251c0a1e00e8dff1016335988a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page