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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elizaos_plugin_browser-2.0.0a4.tar.gz.
File metadata
- Download URL: elizaos_plugin_browser-2.0.0a4.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f63cffddd2a43c537322410244331f697d79b62b7f27a3f4b0ed391d7a01efe8
|
|
| MD5 |
1704d1d5dd71bc4c8c9129d2dca02de0
|
|
| BLAKE2b-256 |
eb04d0785e2922395c63fc66ed78ab3a7fb153b7ec50eeb753ad3dbb0b4e3de4
|
File details
Details for the file elizaos_plugin_browser-2.0.0a4-py3-none-any.whl.
File metadata
- Download URL: elizaos_plugin_browser-2.0.0a4-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76766b22be2196459e7131b0045dda8e55120e643cf358b71a6a6cdd1ef7ebbd
|
|
| MD5 |
a9c624f7c81c295b254eb7da5ded26de
|
|
| BLAKE2b-256 |
d99ba482431d77b9792c6cf25c8e2125941e83cd044189dd33b553e95f0e7238
|